Annotation of modules/relate/lonlogin.pm, revision 1.1
1.1 ! raeburn 1: # The LearningOnline Network
! 2: # Login Screen
! 3: #
! 4: # $Id: lonlogin.pm,v 1.1 2012/02/07 09:55:25 raeburn Exp $
! 5: #
! 6: # Copyright Michigan State University Board of Trustees
! 7: #
! 8: # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
! 9: #
! 10: # LON-CAPA is free software; you can redistribute it and/or modify
! 11: # it under the terms of the GNU General Public License as published by
! 12: # the Free Software Foundation; either version 2 of the License, or
! 13: # (at your option) any later version.
! 14: #
! 15: # LON-CAPA is distributed in the hope that it will be useful,
! 16: # but WITHOUT ANY WARRANTY; without even the implied warranty of
! 17: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 18: # GNU General Public License for more details.
! 19: #
! 20: # You should have received a copy of the GNU General Public License
! 21: # along with LON-CAPA; if not, write to the Free Software
! 22: # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
! 23: #
! 24: # /home/httpd/html/adm/gpl.txt
! 25: #
! 26: # http://www.lon-capa.org/
! 27: #
! 28:
! 29: package Apache::lonlogin;
! 30:
! 31: use strict;
! 32: use Apache::Constants qw(:common);
! 33: use Apache::File ();
! 34: use Apache::lonnet;
! 35: use Apache::loncommon();
! 36: use Apache::lonauth();
! 37: use Apache::lonlocal;
! 38: use Apache::migrateuser();
! 39: use lib '/home/httpd/lib/perl/';
! 40: use LONCAPA;
! 41: use HTML::Entities();
! 42:
! 43: sub handler {
! 44: my $r = shift;
! 45:
! 46: &Apache::loncommon::get_unprocessed_cgi
! 47: (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'},
! 48: $ENV{'REDIRECT_QUERY_STRING'}),
! 49: ['username','domain','firsturl','localpath','localres',
! 50: 'token','role','symb']);
! 51: if (!defined($env{'form.firsturl'})) {
! 52: &Apache::lonacc::get_posted_cgi($r,['firsturl']);
! 53: }
! 54: $env{'form.firsturl'} =~ s/(`)/'/g;
! 55:
! 56: # -- check if they are a migrating user
! 57: if (defined($env{'form.token'})) {
! 58: return &Apache::migrateuser::handler($r);
! 59: }
! 60:
! 61: &Apache::loncommon::no_cache($r);
! 62: &Apache::lonlocal::get_language_handle($r);
! 63: &Apache::loncommon::content_type($r,'text/html');
! 64: $r->send_http_header;
! 65: return OK if $r->header_only;
! 66:
! 67: # --------------------------------------------------------- Are we re-routing?
! 68: my $londocroot = $r->dir_config('lonDocRoot');
! 69: if (-e "$londocroot/lon-status/reroute.txt") {
! 70: &Apache::lonauth::reroute($r);
! 71: return OK;
! 72: }
! 73:
! 74: # -------------------------------- Prevent users from attempting to login twice
! 75: my $handle = &Apache::lonnet::check_for_valid_session($r);
! 76: if ($handle ne '') {
! 77: my $lonidsdir=$r->dir_config('lonIDsDir');
! 78: if ($handle=~/^publicuser\_/) {
! 79: # For "public user" - remove it, we apparently really want to login
! 80: unlink("$lonidsdir/$handle.id");
! 81: } else {
! 82: # Indeed, a valid token is found
! 83: &Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
! 84: my $start_page =
! 85: &Apache::loncommon::start_page('Already logged in');
! 86: my $end_page =
! 87: &Apache::loncommon::end_page();
! 88: my $dest = '/adm/roles';
! 89: if ($env{'form.role'}) {
! 90: $dest .= '?selectrole=1&'.$env{'form.role'}.'=1';
! 91: }
! 92: if ($env{'form.symb'}) {
! 93: $dest .= ($dest =~ /\?/) ? '&' : '?';
! 94: $dest .= 'destinationurl='.
! 95: &HTML::Entities::encode($env{'form.symb'},'"&<>');
! 96: }
! 97: if ($env{'form.firsturl'} ne '') {
! 98: $dest = $env{'form.firsturl'};
! 99: }
! 100: $r->print(
! 101: $start_page.
! 102: '<h1>'.&mt('You are already logged in!').'</h1>'.
! 103: '<p>'.
! 104: &mt('Please either [_1]continue the current session[_2] or [_3]log out[_4].',
! 105: '<a href="'.$dest.'">','</a>',
! 106: '<a href="/adm/logout">','</a>').
! 107: '</p>'.
! 108: $end_page
! 109: );
! 110: return OK;
! 111: }
! 112: }
! 113:
! 114: # ---------------------------------------------------- No valid token, continue
! 115:
! 116: # ---------------------------- Not possible to really login to domain "public"
! 117: if ($env{'form.domain'} eq 'public') {
! 118: $env{'form.domain'}='';
! 119: $env{'form.username'}='';
! 120: }
! 121: # ----------------------------------------------------------- Process Interface
! 122: my $httpbrowser=$ENV{"HTTP_USER_AGENT"};
! 123:
! 124: my $iconpath=
! 125: &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL'));
! 126:
! 127: # ----------------------------------------------------------------
! 128:
! 129: my $lonhost = $r->dir_config('lonHostID');
! 130: my $domain = &Apache::lonnet::default_login_domain();
! 131: if ($lonhost ne '') {
! 132: my $redirect = &check_loginvia($domain,$lonhost);
! 133: if ($redirect) {
! 134: $r->print($redirect);
! 135: return OK;
! 136: }
! 137: }
! 138:
! 139: if (($env{'form.domain'}) &&
! 140: (&Apache::lonnet::domain($env{'form.domain'},'description'))) {
! 141: $domain=$env{'form.domain'};
! 142: }
! 143:
! 144: my $role = $r->dir_config('lonRole');
! 145: my $loadlim = $r->dir_config('lonLoadLim');
! 146: my $uloadlim= $r->dir_config('lonUserLoadLim');
! 147: my $servadm = $r->dir_config('lonAdmEMail');
! 148: my $tabdir = $r->dir_config('lonTabDir');
! 149: my $include = $r->dir_config('lonIncludes');
! 150: my $expire = $r->dir_config('lonExpire');
! 151: my $version = $r->dir_config('lonVersion');
! 152: my $host_name = &Apache::lonnet::hostname($lonhost);
! 153:
! 154: # --------------------------------------------- Default values for login fields
! 155:
! 156: my $authusername=($env{'form.username'}?$env{'form.username'}:'');
! 157: my $authdomain=($env{'form.domain'}?$env{'form.domain'}:$domain);
! 158:
! 159: # ---------------------------------------------------------- Determine own load
! 160: my $loadavg;
! 161: {
! 162: my $loadfile=Apache::File->new('/proc/loadavg');
! 163: $loadavg=<$loadfile>;
! 164: }
! 165: $loadavg =~ s/\s.*//g;
! 166:
! 167: my ($loadpercent,$userloadpercent);
! 168: if ($loadlim) {
! 169: $loadpercent=sprintf("%.1f",100*$loadavg/$loadlim);
! 170: }
! 171: if ($uloadlim) {
! 172: $userloadpercent=&Apache::lonnet::userload();
! 173: }
! 174:
! 175: my $firsturl=
! 176: ($env{'request.firsturl'}?$env{'request.firsturl'}:$env{'form.firsturl'});
! 177:
! 178: # ----------------------------------------------------------- Get announcements
! 179: my $announcements=&Apache::lonnet::getannounce();
! 180: # -------------------------------------------------------- Set login parameters
! 181:
! 182: my @hexstr=('0','1','2','3','4','5','6','7',
! 183: '8','9','a','b','c','d','e','f');
! 184: my $lkey='';
! 185: for (0..7) {
! 186: $lkey.=$hexstr[rand(15)];
! 187: }
! 188:
! 189: my $ukey='';
! 190: for (0..7) {
! 191: $ukey.=$hexstr[rand(15)];
! 192: }
! 193:
! 194: my $lextkey=hex($lkey);
! 195: if ($lextkey>2147483647) { $lextkey-=4294967296; }
! 196:
! 197: my $uextkey=hex($ukey);
! 198: if ($uextkey>2147483647) { $uextkey-=4294967296; }
! 199:
! 200: # -------------------------------------------------------- Store away log token
! 201: my $tokenextras;
! 202: if ($env{'form.role'}) {
! 203: $tokenextras = '&role='.&escape($env{'form.role'});
! 204: }
! 205: if ($env{'form.symb'}) {
! 206: if (!$tokenextras) {
! 207: $tokenextras = '&';
! 208: }
! 209: $tokenextras .= '&symb='.&escape($env{'form.symb'});
! 210: }
! 211: my $logtoken=Apache::lonnet::reply(
! 212: 'tmpput:'.$ukey.$lkey.'&'.$firsturl.$tokenextras,
! 213: $lonhost);
! 214:
! 215: # -- If we cannot talk to ourselves, or hostID does not map to a hostname
! 216: # we are in serious trouble
! 217:
! 218: if (($logtoken eq 'con_lost') || ($logtoken eq 'no_such_host')) {
! 219: if ($logtoken eq 'no_such_host') {
! 220: &Apache::lonnet::logthis('No valid logtoken for log-in page -- '.
! 221: 'unable to determine hostname for hostID: '.$lonhost.
! 222: '. Check entry in hosts.tab');
! 223: }
! 224: my $spares='';
! 225: my $last;
! 226: foreach my $hostid (sort
! 227: {
! 228: &Apache::lonnet::hostname($a) cmp
! 229: &Apache::lonnet::hostname($b);
! 230: }
! 231: keys(%Apache::lonnet::spareid)) {
! 232: next if ($hostid eq $lonhost);
! 233: my $hostname = &Apache::lonnet::hostname($hostid);
! 234: next if (($last eq $hostname) || ($hostname eq ''));
! 235: $spares.='<br /><span style="font-size: larger;"><a href="http://'.
! 236: $hostname.
! 237: '/adm/login?domain='.$authdomain.'">'.
! 238: $hostname.'</a>'.
! 239: ' '.&mt('(preferred)').'</span>'.$/;
! 240: $last=$hostname;
! 241: }
! 242: if ($spares) {
! 243: $spares.= '<br />';
! 244: }
! 245: my %all_hostnames = &Apache::lonnet::all_hostnames();
! 246: foreach my $hostid (sort
! 247: {
! 248: &Apache::lonnet::hostname($a) cmp
! 249: &Apache::lonnet::hostname($b);
! 250: }
! 251: keys(%all_hostnames)) {
! 252: next if ($hostid eq $lonhost || $Apache::lonnet::spareid{$hostid});
! 253: my $hostname = &Apache::lonnet::hostname($hostid);
! 254: next if (($last eq $hostname) || ($hostname eq ''));
! 255: $spares.='<br /><a href="http://'.
! 256: $hostname.
! 257: '/adm/login?domain='.$authdomain.'">'.
! 258: $hostname.'</a>';
! 259: $last=$hostname;
! 260: }
! 261: $r->print(
! 262: '<html>'
! 263: .'<head><title>'
! 264: .&mt('The LearningOnline Network with CAPA')
! 265: .'</title></head>'
! 266: .'<body bgcolor="#FFFFFF">'
! 267: .'<h1>'.&mt('The LearningOnline Network with CAPA').'</h1>'
! 268: .'<img src="/adm/lonKaputt/lonlogo_broken.gif" align="right" />'
! 269: .'<h3>'.&mt("This Learn Physics server is temporarily not available for login.").'</h3>'
! 270: .'</body>'
! 271: .'</html>'
! 272: );
! 273: return OK;
! 274: }
! 275:
! 276: # ----------------------------------------------- Apparently we are in business
! 277: $servadm=~s/\,/\<br \/\>/g;
! 278:
! 279: # ----------------------------------------------------------------------- Texts
! 280: my $pagetitle = 'Learn Physics Login'; # Do not localize.
! 281: my %lt=&Apache::lonlocal::texthash(
! 282: 'needu' => 'You must provide a username',
! 283: 'needp' => 'You must provide a password',
! 284: 'un' => 'Username',
! 285: 'pw' => 'Password',
! 286: 'dom' => 'Domain',
! 287: 'perc' => 'percent',
! 288: 'load' => 'Server Load',
! 289: 'userload' => 'User Load',
! 290: 'catalog' => 'Course/Community Catalog',
! 291: 'log' => 'Log-in',
! 292: 'help' => 'Log-in Help',
! 293: 'serv' => 'Server',
! 294: 'servadm' => 'Server Administration',
! 295: 'helpdesk' => 'Contact Helpdesk',
! 296: 'forgotpw' => 'Forgot your password?',
! 297: 'newuser' => 'New User?',
! 298: 'learn' => 'Learn Physics includes an online physics course, to which you may receive admission after successfully completing a pre-course test.',
! 299: 'click' => 'Click here to sign up',
! 300: 'plea' => 'Please log-in',
! 301: 'supp' => 'Support from NSF, NIH, Google',
! 302: 'note' => 'Please Note:',
! 303: 'jscr' => 'Javascript must be enabled in your web browser in order to use this web site.',
! 304: );
! 305: # ----------------------------------------------------------- Front page design
! 306: my $font=&Apache::loncommon::designparm('login.font',$domain);
! 307: my $link=&Apache::loncommon::designparm('login.link',$domain);
! 308: my $vlink=&Apache::loncommon::designparm('login.vlink',$domain);
! 309: my $alink=&Apache::loncommon::designparm('login.alink',$domain);
! 310: my $mainbg=&Apache::loncommon::designparm('login.mainbg',$domain);
! 311: my $showadminmail=&Apache::loncommon::designparm('login.adminmail',$domain);
! 312:
! 313: my $helpdeskscript;
! 314: my $contactblock = &contactdisplay(\%lt,$servadm,$showadminmail,
! 315: $authdomain,\$helpdeskscript);
! 316:
! 317: # -------------------------------------------------- Change password field name
! 318: my $now=time;
! 319:
! 320: # ---------------------------------------- Assemble Javascript to put in <head>
! 321:
! 322: my $js = (<<ENDSCRIPT);
! 323:
! 324: <script type="text/javascript" language="JavaScript">
! 325: // <![CDATA[
! 326:
! 327: function send(caller) {
! 328: if (caller == "newaccount") {
! 329: this.document.signup.submit();
! 330: return false;
! 331: }
! 332: if (document.client.uname.value == "" || !document.client.uname.value) {
! 333: alert("$lt{'needu'}");
! 334: return false;
! 335: }
! 336: if (document.client.upass$now.value == "" ||
! 337: !document.client.upass$now.value) {
! 338: alert("$lt{'needp'}");
! 339: return false;
! 340: }
! 341:
! 342: this.document.server.elements.uname.value
! 343: =this.document.client.elements.uname.value;
! 344:
! 345: this.document.server.elements.udom.value
! 346: =this.document.client.elements.udom.value;
! 347:
! 348: uextkey=this.document.client.elements.uextkey.value;
! 349: lextkey=this.document.client.elements.lextkey.value;
! 350: initkeys();
! 351:
! 352: this.document.server.elements.upass0.value
! 353: =crypted(this.document.client.elements.upass$now.value.substr(0,15));
! 354: this.document.server.elements.upass1.value
! 355: =crypted(this.document.client.elements.upass$now.value.substr(15,15));
! 356: this.document.server.elements.upass2.value
! 357: =crypted(this.document.client.elements.upass$now.value.substr(30,15));
! 358:
! 359: this.document.client.elements.uname.value='';
! 360: this.document.client.elements.upass$now.value='';
! 361:
! 362: this.document.server.submit();
! 363: return false;
! 364: }
! 365:
! 366: function enableInput() {
! 367: this.document.client.elements.upass$now.removeAttribute("readOnly");
! 368: this.document.client.elements.uname.removeAttribute("readOnly");
! 369: this.document.client.elements.udom.removeAttribute("readOnly");
! 370: return;
! 371: }
! 372:
! 373: // ]]>
! 374: </script>
! 375:
! 376: $helpdeskscript
! 377:
! 378: ENDSCRIPT
! 379:
! 380: # --------------------------------------------------- Print login screen header
! 381: my %add_entries = (
! 382: bgcolor => "$mainbg",
! 383: text => "$font",
! 384: link => "$link",
! 385: vlink => "$vlink",
! 386: alink => "$alink",
! 387: onload => 'javascript:enableInput();',);
! 388:
! 389: my $css_url = "/css/$domain/login.css";
! 390: $js .= "\n".'<link type="text/css" rel="stylesheet" href="'.$css_url.'">'."\n";
! 391: $r->print(&Apache::loncommon::start_page($pagetitle,$js,
! 392: {'redirect' => [$expire,'/adm/roles'],
! 393: 'add_entries' => \%add_entries,
! 394: 'only_body' => 1,}));
! 395:
! 396: # ------------------------------------------------------------ Additional Texts
! 397: $lt{'newto'} = &mt('New to the [_1]Learn Physics[_2] site?','<i>','</i>');
! 398: $lt{'runson'} = &mt('Learn Physics runs on [_1]LON-CAPA[_2] - an open source freeware distributed learning content management and assessment system.',
! 399: '<a href="http://loncapa.org/">','</a>');
! 400: $lt{'newhere'} = &mt('New to [_1]Learn Physics[_2]:','<i>','</i>');
! 401: $lt{'exist'} = &mt('Existing [_1]Learn Physics[_2] user','<i>','</i>');
! 402: $lt{'browser'} = &mt('Your browser must allow [_1]cookies[_2]',
! 403: '<a href="http://loncapa.msu.edu/cookies.html" style="color: #ffffff">','</a>');
! 404:
! 405: # -------------------------------------------- Static cid for prerequisite test
! 406: $prereqcid = 'relate_9615072b469884921relatel1';
! 407:
! 408: # ---------------------------------------------------- Warning if no Javascript
! 409: my $noscript_warning = '<noscript><span class="LC_warning">'.
! 410: '<b>'.$lt{'note'}.'</b>'.$lt{'jscr'}.'
! 411: '</span></noscript>';
! 412:
! 413: # ---------------------------------------------------- Serve out DES JavaScript
! 414: {
! 415: my $jsh=Apache::File->new($include."/londes.js");
! 416: $r->print(<$jsh>);
! 417: }
! 418: # ---------------------------------------------------------- Serve rest of page
! 419:
! 420: $r->print(<<"ENDLOGIN");
! 421: <br />
! 422: <div align="center">
! 423: <table class="LC_loginbox">
! 424: <tr>
! 425: <td align="left" valign="top" width="11">
! 426: <img src="/images/login/tlc_11_ffffff_e2e2e2.gif" width="10" height="10" border="0" alt="">
! 427: </td>
! 428: <td width="450" valign="top">
! 429: <table class="LC_loginbox_left">
! 430: <tr>
! 431: <td width="411" align="left"><br />
! 432: <img src="/images/login/LCrelateheader_sm.png" width="411" height="100" alt="Relate @ MIT" align="left"></td>
! 433: </tr>
! 434: <tr>
! 435: <td>
! 436: <div align="left" style="display:block; margin-top:5px; margin-bottom:5px; margin-left:0px; margin-right:0px; width:440px; height:5px;">
! 437: <div class="divider">
! 438: </div>
! 439: </div>
! 440: </td>
! 441: </tr>
! 442: </table>
! 443: <table class="LC_loginbox_left">
! 444: <tr>
! 445: <td width="10"> </td>
! 446: <td valign="top" class="bodyred" width="430" align="left"><br />
! 447: <span style="font-size: 18px; line-height: 22px; ">$lt{'newt'}</span>
! 448: <br />
! 449: <span class="bodyred">$lt{'learn'}<br /><br />$lt{'runson'}
! 450: <br /><br />
! 451: <form name="signup" method="post" action="/adm/createaccount?courseid=$prereqcid"><input type="hidden" name="process" value="signup"/>
! 452: <table class="LC_signup">
! 453: <tr>
! 454: <td align="left" valign="top" width="11" height="11"><img src="/images/login/tlc_11_993333_ffffff.gif" width="10" height="10" border="0" alt=""></td>
! 455: <td> </td>
! 456: <td align="right" valign="top" width="11" height="11"><img src="/images/login/tr_11_993333_ffffff.gif" width="11" height="11" border="0" alt=""></td>
! 457: </tr>
! 458: <tr>
! 459: <td> </td>
! 460: <td align="center" valign="middle"><span style="white-space: nowrap;"><b>$lt{'newhere'}</b>: <a href="javascript:send('newaccount')" style="color: #ffffff">$lt{'click'}</a></span></td>
! 461: <td> </td>
! 462: </tr>
! 463: <tr>
! 464: <td align="left" valign="bottom" width="11" height="11"><img src="/images/login/bl_11_993333_ffffff.gif" width="11" height="11" border="0" alt=""></td>
! 465:
! 466: <td> </td>
! 467: <td align="right" valign="bottom" width="11" height="11"><img src="/images/login/br_11_993333_ffffff.gif" width="11" height="11" border="0" alt=""></td>
! 468: </tr>
! 469: </table>
! 470: </form>
! 471: </td>
! 472: </tr>
! 473: </table>
! 474: </td>
! 475: <td width="10"> </td>
! 476: <td valign="top">
! 477: <form name="client" method="post" onsubmit="return(send());">
! 478: <table class="LC_loginbox_right">
! 479: <tr>
! 480: <td colspan="3" height="23" class="LC_loginbox_strip"> </td>
! 481: i </tr>
! 482: <tr>
! 483: <td align="left" valign="top" width="11" height="11"><img src="/images/login/tlc_11_993333_ffffff.gif" width="10" height="10" border="0" alt=""></td>
! 484: <td> </td>
! 485: <td align="right" valign="top" width="11" height="11"><img src="/images/login/tr_11_993333_ffffff.gif" width="11" height="11" border="0" alt=""></td>
! 486: </tr>
! 487: <tr>
! 488: <td width="10"> </td>
! 489: <td>
! 490: <table border="0" cellspacing="0" cellpadding="0">
! 491: <tr>
! 492: <td align="right" class="bodywhite" heighta"=50"><br>
! 493: <span style="font-size: 15px; line-height: 17px; font-weight: bold;">
! 494: $lt{'exist'}</span>
! 495: <br />$lt{'plea'}<br />
! 496: <hr class="login"><br /><br />
! 497: </td>
! 498: </tr>
! 499: <tr>
! 500: <td>
! 501: <table border="0" cellpadding="2" cellspacing="0">
! 502: <tr>
! 503: <td align="right" class="bodywhite"><label for="uname">$lt{'un'}</label>:</td>
! 504: <td align="right"><input type="text" name="uname" size="17" value="" /></td>
! 505: </tr>
! 506: <tr>
! 507: <td align="right" class="bodywhite"><label for="upass$now">$lt{'pw'}</label>:</td>
! 508: <td align="right"><input name="upass$now" size="17" value="" type="password"><input type="hidden" name="udom" value="relate" /></td>
! 509: </tr>
! 510: <tr><td> </td></tr>
! 511: <tr>
! 512: <tr>
! 513: <td colspan="2" align="right"><input name="signin" type="submit" value="$lt{'log'}" class="buttonwhite" /></td>
! 514: </tr>
! 515: </table>
! 516: </td>
! 517: </tr>
! 518: <tr>
! 519: <td align="right" valign="top" class="bodywhite">
! 520: <br />
! 521: <br />
! 522: <span style="font-size: smaller;">$lt{'browser'}</span><br />
! 523: <hr class="login" />
! 524: <br />
! 525: <a href="/adm/resetpw" style="color: #ffffff">$lt{forgotpw'}</a><br>
! 526: <br />
! 527: </td>
! 528: </tr>
! 529: </table>
! 530: </td>
! 531: <td width="9"> </td>
! 532: </tr>
! 533: <tr>
! 534: <td align="left" valign="bottom" width="11" height="11"><img src="/images/login/bl_11_993333_ffffff.gif" width="11" height="11" border="0" alt=""></td>
! 535: <td> </td>
! 536:
! 537: <td align="right" valign="bottom" width="11" height="11"><img src="/images/login/br_11_993333_ffffff.gif" width="11" height="11" border="0" alt=""></td>
! 538: </tr>
! 539: <tr>
! 540: <td colspan="3" height="10" class="LC_loginbox_strip"> $contactblock</td>
! 541: </tr>
! 542: </table>
! 543: </td>
! 544: <td align="right" valign="top" width="11"><img src="/images/login/tr_11_ffffff_e2e2e2.gif" width="11" height="11" border="0" alt=""></td>
! 545: </tr>
! 546: <tr>
! 547: <td colspan="4">
! 548: <div align="right">
! 549: <img src="/images/login/sponsors.png" alt="$lt{'supp'}" align="right" />
! 550: </div>
! 551: </td>
! 552: </tr>
! 553: <tr>
! 554: <td align="left" valign="bottom" width="11"><img src="/images/login/bl_11_ffffff_e2e2e2.gif" width="11" height="11" border="0" alt=""></td>
! 555: <td colspan="3" width="698"> </td>
! 556: <td align="right" valign="bottom" width="11"><img src="/images/login/br_11_ffffff_e2e2e2.gif" width="11" height="11" border="0" alt=""></td>
! 557: </tr>
! 558: </table>
! 559: </div>
! 560: <p> </p>
! 561: $noscript_warning
! 562: <input type="hidden" name="lextkey" value="$lextkey" />
! 563: <input type="hidden" name="uextkey" value="$uextkey" />
! 564: </form>
! 565: <form name="server" action="/adm/authenticate" method="post" target="_top">
! 566: <input type="hidden" name="logtoken" value="$logtoken" />
! 567: <input type="hidden" name="serverid" value="$lonhost" />
! 568: <input type="hidden" name="uname" value="" />
! 569: <input type="hidden" name="upass0" value="" />
! 570: <input type="hidden" name="upass1" value="" />
! 571: <input type="hidden" name="upass2" value="" />
! 572: <input type="hidden" name="udom" value="" />
! 573: <input type="hidden" name="localpath" value="$env{'form.localpath'}" />
! 574: <input type="hidden" name="localres" value="$env{'form.localres'}" />
! 575: </form>
! 576:
! 577: <script type="text/javascript">
! 578: // <![CDATA[
! 579: // the if prevents the script error if the browser can not handle this
! 580: if ( document.client.uname ) { document.client.uname.focus(); }
! 581: // ]]>
! 582: </script>
! 583:
! 584: ENDLOGIN
! 585:
! 586: # -------------------------------------------------------- Standard page ending
! 587: my %endargs = ( 'noredirectlink' => 1, );
! 588: $r->print(&Apache::loncommon::end_page(\%endargs));
! 589: return OK;
! 590: }
! 591:
! 592: sub check_loginvia {
! 593: my ($domain,$lonhost) = @_;
! 594: if ($domain eq '' || $lonhost eq '') {
! 595: return;
! 596: }
! 597: my %domconfhash = &Apache::loncommon::get_domainconf($domain);
! 598: my $loginvia = $domconfhash{$domain.'.login.loginvia_'.$lonhost};
! 599: my $loginvia_exempt = $domconfhash{$domain.'.login.loginvia_exempt_'.$lonhost};
! 600: my $output;
! 601: if ($loginvia ne '') {
! 602: my $noredirect;
! 603: my $ip = $ENV{'REMOTE_ADDR'};
! 604: if ($ip eq '127.0.0.1') {
! 605: $noredirect = 1;
! 606: } else {
! 607: if ($loginvia_exempt ne '') {
! 608: my @exempt = split(',',$loginvia_exempt);
! 609: if (grep(/^\Q$ip\E$/,@exempt)) {
! 610: $noredirect = 1;
! 611: }
! 612: }
! 613: }
! 614: unless ($noredirect) {
! 615: my ($newhost,$path);
! 616: if ($loginvia =~ /:/) {
! 617: ($newhost,$path) = split(':',$loginvia);
! 618: } else {
! 619: $newhost = $loginvia;
! 620: }
! 621: if ($newhost ne $lonhost) {
! 622: if (&Apache::lonnet::hostname($newhost) ne '') {
! 623: $output = &redirect_page($newhost,$path);
! 624: }
! 625: }
! 626: }
! 627: }
! 628: return $output;
! 629: }
! 630:
! 631: sub redirect_page {
! 632: my ($desthost,$path) = @_;
! 633: my $protocol = $Apache::lonnet::protocol{$desthost};
! 634: $protocol = 'http' if ($protocol ne 'https');
! 635: unless ($path =~ m{^/}) {
! 636: $path = '/'.$path;
! 637: }
! 638: my $url = $protocol.'://'.&Apache::lonnet::hostname($desthost).$path;
! 639: if ($env{'form.firsturl'} ne '') {
! 640: $url .='?firsturl='.$env{'form.firsturl'};
! 641: }
! 642: my $start_page = &Apache::loncommon::start_page('Switching Server ...',undef,
! 643: {'redirect' => [0,$url],});
! 644: my $end_page = &Apache::loncommon::end_page();
! 645: return $start_page.$end_page;
! 646: }
! 647:
! 648: sub contactdisplay {
! 649: my ($lt,$servadm,$showadminmail,$authdomain,$helpdeskscript) = @_;
! 650: return unless(ref($lt) eq 'HASH');
! 651: my $contactblock;
! 652: my $showhelpdesk = 0;
! 653: my $requestmail = $Apache::lonnet::perlvar{'lonSupportEMail'};
! 654: if ($requestmail =~ m/^[^\@]+\@[^\@]+$/) {
! 655: $showhelpdesk = 1;
! 656: }
! 657: if ($servadm && $showadminmail) {
! 658: $contactblock .= $lt->{'servadm'}.':<br />'.
! 659: '<tt>'.$servadm.'</tt><br />';
! 660: }
! 661: if ($showhelpdesk) {
! 662: $contactblock .= '<a href="javascript:helpdesk()">'.$lt->{'helpdesk'}.'</a><br />';
! 663: my $thisurl = &escape('/adm/login');
! 664: $$helpdeskscript = <<"ENDSCRIPT";
! 665: <script type="text/javascript">
! 666: // <![CDATA[
! 667: function helpdesk() {
! 668: var codedom = document.client.udom.value;
! 669: if (codedom == '') {
! 670: codedom = "$authdomain";
! 671: }
! 672: var querystr = "origurl=$thisurl&codedom="+codedom;
! 673: document.location.href = "/adm/helpdesk?"+querystr;
! 674: return;
! 675: }
! 676: // ]]>
! 677: </script>
! 678: ENDSCRIPT
! 679: }
! 680: return $contactblock;
! 681: }
! 682:
! 683: 1;
! 684: __END__
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>