Annotation of doc/gutshtml/SessionTwo.html, revision 1.2

1.2     ! bowersj2    1: <html>
        !             2: <head>
        !             3: <meta name=Title content="Session Two: Apache Handlers (loncapa_apache">
        !             4: <meta http-equiv=Content-Type content="text/html; charset=macintosh">
        !             5: <title>Session Two: Apache Handlers (loncapa_apache</title>
        !             6: <style><!--
        !             7: .Section1
        !             8: 	{page:Section1;}
        !             9: .Section2
        !            10: 	{page:Section2;}
        !            11: -->
        !            12: </style>
        !            13: </head>
        !            14: <body bgcolor=#FFFFFF class="Normal" lang=EN-US>
        !            15: <div class=Section1> 
        !            16:   <h2>Session Two: Apache Handlers (loncapa_apache.conf), Authentication and Access 
        !            17:     Control, Session Environment (Matthew)</h2>
        !            18:   <h3><a name="_Toc470397993"></a><a name="_Toc514840845"></a><a
        !            19: name="_Toc421867046"><span>Server Content Resource Areas</span></a></h3>
        !            20:   <p>Internally, all resources are identified primarily by their URL.&nbsp; Different 
        !            21:     logical areas of the server are distinguished by the beginning part of the 
        !            22:     URL: </p>
        !            23:   <ul type=disc>
        !            24:     <li><span
        !            25:      style='font-family:"Courier New"'>/adm: </span>publicly available content, 
        !            26:       logos, manual pages, etc.<i></i></li>
        !            27:   </ul>
        !            28:   <ul type=disc>
        !            29:     <li><span
        !            30:      style='font-family:"Courier New"'>/res/<i>domainname</i></span><span
        !            31:      style='font-family:"Courier New"'>/<i>authorname</i></span><span
        !            32:      style='font-family:"Courier New"'>/..: </span>the resource area, holding 
        !            33:       course maps, HTML pages, homework, movies, applets, etc. Access to these 
        !            34:       files is restricted by the cookie-based authentication mechanism. Content 
        !            35:       in this area will be served by type-dependent handlers, for example, one 
        !            36:       handlers to serve homework problems, and another one for TeX resources. 
        !            37:       The structure of this area of the server is exactly the same on every server, 
        !            38:       even though not all resources might be present everywhere.</li>
        !            39:   </ul>
        !            40:   <ul type=disc>
        !            41:     <li><span
        !            42:      style='font-family:"Courier New"'>/raw/<i>domainname</i></span><span
        !            43:      style='font-family:"Courier New"'>/<i>authorname</i></span><span
        !            44:      style='font-family:"Courier New"'>/..: </span>internally, this is just a 
        !            45:       symbolic link to the <span style='font-family:"Courier New"'>res</span> 
        !            46:       directory, however, no content handlers are called when serving a resource 
        !            47:       and access is controlled by IP rather than cookies. This structure is used 
        !            48:       for replication of resources between servers.</li>
        !            49:   </ul>
        !            50:   <ul type=disc>
        !            51:     <li><span
        !            52:      style='font-family:"Courier New"'>/~<i>authorname</i></span><span
        !            53:      style='font-family:"Courier New"'>/.., /priv<i>/authorname</i></span><span
        !            54:      style='font-family:"Courier New"'>: </span>the content construction space.<span
        !            55:      style='font-family:"Courier New"'> </span>This is normal UNIX filespace, 
        !            56:       which however can only by viewed on the web by the authors themselves through 
        !            57:       the cookie based authentication. Content handlers are active for this space. 
        !            58:       This space can be mounted on other UNIX machines, as well as AppleShare 
        !            59:       and Windows. Below the <span style='font-family:"Courier New"'><i>authorname</i></span>, 
        !            60:       this directory has the same structure as the resource space of the author.</li>
        !            61:   </ul>
        !            62:   <ul type=disc>
        !            63:     <li><span
        !            64:      style='font-family:"Courier New"'>/lon-status/..: </span>LON-CAPA status 
        !            65:       information Ð behind basic http authentication so it is not dependent on 
        !            66:       system functions</li>
        !            67:   </ul>
        !            68:   <p>Authors can only write-access the<i> </i><span
        !            69: style='font-family:"Courier New";font-style:normal'>/~</span><span
        !            70: style='font-family:"Courier New"'><i>authorname</i></span><span
        !            71: style='font-family:"Courier New"'>/</span> space. They can copy resources into 
        !            72:     the resource area through the publication step, and move them back through 
        !            73:     a retrieve step. Authors do not have direct write-access to their resource 
        !            74:     space.</p>
        !            75:   <h3><a name="_Toc514840846"></a><a name="_Toc421867047">Apache Request Cycle 
        !            76:     and Handlers</a></h3>
        !            77:   <p>The standard mode in which the Apache web server is used is that a URL corresponds 
        !            78:     to some static file on the file system, which then more or less gets sent 
        !            79:     out as-is. Slight deviations from that simple principle are however already 
        !            80:     the directory listing function, virtual servers, and the cgi-bin directory. 
        !            81:     In the latter case, Apache executes the file in a new process and provides 
        !            82:     both the input to the process in the environment, and routes the output to 
        !            83:     the client. Other deviations are the error messages.</p>
        !            84:   <p>In a more general view, URLs to Apache are URIs (Uniform Resource Identifiers), 
        !            85:     which may are may not correspond to a physical file, which in turn may or 
        !            86:     may not be sent out as-is.</p>
        !            87:   <p>As a request for a URI gets sent to the Apache server, it goes through several 
        !            88:     phases. At each phase (ÒstageÓ) along the process, handler modules can be 
        !            89:     defined to deal with the request. Details about these phases are given in 
        !            90:     the Eagle book Chapter 3 (page 60).</p>
        !            91:   <p>These handler modules are not like cgi-scripts executed in a separate process, 
        !            92:     but are dynamically linked into the Apache child processes themselves Ð they 
        !            93:     run inside of Apache. The mod_perl mechanism in addition links the Perl interpreter 
        !            94:     into the Apache child process. Modules are pre-interpreted (ÒcompiledÓ) by 
        !            95:     the Perl interpreter when they are first loaded, and the pre-interpreted code 
        !            96:     stays permanently in the memory allocated to that Apache child process. The 
        !            97:     result is a significant speed-up, and through the flexible mechanism of module 
        !            98:     registration and different stages of the process, a high degree of customizability.</p>
        !            99:   <p>LON-CAPA does not use Apache::Registry, and so in addition avoids the unnecessary 
        !           100:     overhead of emulating a cgi-environment within the handlers. Instead, it makes 
        !           101:     direct use of the Apache Perl API (Chapter 9, Eagle book).&nbsp; </p>
        !           102:   <h3><a name="_Toc514840847"></a><a name="_Toc421867048">Handler Definition</a></h3>
        !           103:   <p>Which chain of handler deals with which kind of resource is defined in <span style='font-size:9.0pt;font-family:"Courier New"'>/etc/httdp/conf/loncapa_apache.conf</span>. 
        !           104:     LON-CAPA only defines handlers at the (in order) header-parser, access control, 
        !           105:     and response phase (figure 3-3 Eagle book). In the header-parser phase, the 
        !           106:     replication handler is run, and in the access-control phase, the various access-handlers. 
        !           107:     Future handlers will mostly be implemented in the response phase.<b> Fig. 
        !           108:     1.2.2</b><span style='font-weight:normal'> shows excerpts of the configuration 
        !           109:     script </span><span style='font-size:9.0pt;font-family:"Courier New"'>/etc/httpd/loncapa_apache.conf</span> 
        !           110:     for these modules.</p>
        !           111:   <div style='border:solid windowtext .5pt;padding:31.0pt 31.0pt 31.0pt 31.0pt'> 
        !           112:     <p style='border:none;padding:0in;'><span
        !           113: style='font-size:8.0pt;font-family:"Courier New"'># ------------------------------------------------------------- 
        !           114:       Access Handlers</span></p>
        !           115:     <p style='border:none;padding:0in;'><span
        !           116: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res.*&quot;&gt;</span></p>
        !           117:     <p style='border:none;padding:0in;'><span
        !           118: style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           119:       Apache::lonacc</span></p>
        !           120:     <p style='border:none;padding:0in;'><span
        !           121: style='font-size:8.0pt;font-family:"Courier New"'>PerlHeaderParserHandler Apache::lonrep</span></p>
        !           122:     <p style='border:none;padding:0in;'><span
        !           123: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           124:       403 /adm/login</span></p>
        !           125:     <p style='border:none;padding:0in;'><span
        !           126: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           127:       404 /adm/notfound.html</span></p>
        !           128:     <p style='border:none;padding:0in;'><span
        !           129: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           130:       406 /adm/roles</span></p>
        !           131:     <p style='border:none;padding:0in;'><span
        !           132: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           133:       500 /adm/errorhandler</span></p>
        !           134:     <p style='border:none;padding:0in;'><span
        !           135: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           136:     <p style='border:none;padding:0in;'><span
        !           137: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/priv.*&quot;&gt;</span></p>
        !           138:     <p style='border:none;padding:0in;'><span
        !           139: style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>
        !           140:     <p style='border:none;padding:0in;'><span
        !           141: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           142:       perl-script</span></p>
        !           143:     <p style='border:none;padding:0in;'><span
        !           144: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           145:       Apache::lonconstruct</span></p>
        !           146:     <p style='border:none;padding:0in;'><span
        !           147: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           148:       403 /adm/login</span></p>
        !           149:     <p style='border:none;padding:0in;'><span
        !           150: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           151:       404 /adm/notfound.html</span></p>
        !           152:     <p style='border:none;padding:0in;'><span
        !           153: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           154:       406 /adm/unauthorized.html</span></p>
        !           155:     <p style='border:none;padding:0in;'><span
        !           156: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           157:       500 /adm/errorhandler</span></p>
        !           158:     <p style='border:none;padding:0in;'><span
        !           159: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           160:     <p style='border:none;padding:0in;'><span
        !           161: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/raw.*&quot;&gt;</span></p>
        !           162:     <p style='border:none;padding:0in;'><span
        !           163: style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::lonracc</span></p>
        !           164:     <p style='border:none;padding:0in;'><span
        !           165: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           166:     <p style='border:none;padding:0in;'><span
        !           167: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/\~.*&quot;&gt;</span></p>
        !           168:     <p style='border:none;padding:0in;'><span
        !           169: style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>
        !           170:     <p style='border:none;padding:0in;'><span
        !           171: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           172:       403 /adm/login</span></p>
        !           173:     <p style='border:none;padding:0in;'><span
        !           174: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           175:       404 /adm/notfound.html</span></p>
        !           176:     <p style='border:none;padding:0in;'><span
        !           177: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           178:       406 /adm/unauthorized.html</span></p>
        !           179:     <p style='border:none;padding:0in;'><span
        !           180: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           181:       500 /adm/errorhandler</span></p>
        !           182:     <p style='border:none;padding:0in;'><span
        !           183: style='font-size:8.0pt;font-family:"Courier New"'>AllowOverride None</span></p>
        !           184:     <p style='border:none;padding:0in;'><span
        !           185: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           186:     <p style='border:none;padding:0in;'><span
        !           187: style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span><span
        !           188: style='font-size:16.0pt;font-family:"Courier New"'></span></p>
        !           189:     <p style='border:none;padding:0in;'><span
        !           190: style='font-size:8.0pt;font-family:"Courier New"'># --------------------------------------------- 
        !           191:       Resource Space Content Handlers</span></p>
        !           192:     <p style='border:none;padding:0in;'><span
        !           193: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*/$&quot;&gt;</span></p>
        !           194:     <p style='border:none;padding:0in;'><span
        !           195: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
        !           196:     <p style='border:none;padding:0in;'><span
        !           197: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonindexer</span></p>
        !           198:     <p style='border:none;padding:0in;'><span
        !           199: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           200:     <p style='border:none;padding:0in;'><span
        !           201: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.tex$&quot;&gt;</span></p>
        !           202:     <p style='border:none;padding:0in;'><span
        !           203: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
        !           204:     <p style='border:none;padding:0in;'><span
        !           205: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lontex</span></p>
        !           206:     <p style='border:none;padding:0in;'><span
        !           207: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           208:     <p style='border:none;padding:0in;'><span
        !           209: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.page$&gt;</span></p>
        !           210:     <p style='border:none;padding:0in;'><span
        !           211: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
        !           212:     <p style='border:none;padding:0in;'><span
        !           213: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonpage</span></p>
        !           214:     <p style='border:none;padding:0in;'><span
        !           215: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           216:     <p style='border:none;padding:0in;'><span
        !           217: style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>
        !           218:     <p style='border:none;padding:0in;'><span
        !           219: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(xml|html|htm|xhtml|xhtm)$&quot;&gt;</span></p>
        !           220:     <p style='border:none;padding:0in;'><span
        !           221: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
        !           222:     <p style='border:none;padding:0in;'><span
        !           223: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonxml</span></p>
        !           224:     <p style='border:none;padding:0in;'><span
        !           225: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           226:     <p style='border:none;padding:0in;'><span
        !           227: style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(problem|exam|quiz|assess|survey|form)$&quot;&gt;</span></p>
        !           228:     <p style='border:none;padding:0in;'><span
        !           229: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
        !           230:     <p style='border:none;padding:0in;'><span
        !           231: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonhomework</span></p>
        !           232:     <p style='border:none;padding:0in;'><span
        !           233: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
        !           234:     <p style='border:none;padding:0in;'><span
        !           235: style='font-size:8.0pt;font-family:"Courier New"'># -------------------------------------------------------------- 
        !           236:       Admin Programs</span></p>
        !           237:     <p style='border:none;padding:0in;'><span
        !           238: style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/roles&gt;</span></p>
        !           239:     <p style='border:none;padding:0in;'><span
        !           240: style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           241:       Apache::lonacc</span></p>
        !           242:     <p style='border:none;padding:0in;'><span
        !           243: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
        !           244:     <p style='border:none;padding:0in;'><span
        !           245: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonroles</span></p>
        !           246:     <p style='border:none;padding:0in;'><span
        !           247: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           248:       403 /adm/login</span></p>
        !           249:     <p style='border:none;padding:0in;'><span
        !           250: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           251:       500 /adm/errorhandler</span></p>
        !           252:     <p style='border:none;padding:0in;'><span
        !           253: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
        !           254:     <p style='border:none;padding:0in;'><span
        !           255: style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/login&gt;</span></p>
        !           256:     <p style='border:none;padding:0in;'><span
        !           257: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
        !           258:     <p style='border:none;padding:0in;'><span
        !           259: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonlogin</span></p>
        !           260:     <p style='border:none;padding:0in;'><span
        !           261: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
        !           262:     <p style='border:none;padding:0in;'><span
        !           263: style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>
        !           264:     <p style='border:none;padding:0in;'><span
        !           265: style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/annotations&gt;</span></p>
        !           266:     <p style='border:none;padding:0in;'><span
        !           267: style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
        !           268:       Apache::lonacc</span></p>
        !           269:     <p style='border:none;padding:0in;'><span
        !           270: style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
        !           271:     <p style='border:none;padding:0in;'><span
        !           272: style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::admannotations</span></p>
        !           273:     <p style='border:none;padding:0in;'><span
        !           274: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           275:       403 /adm/login</span></p>
        !           276:     <p style='border:none;padding:0in;'><span
        !           277: style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
        !           278:       500 /adm/errorhandler</span></p>
        !           279:     <p style='border:none;padding:0in;'><span
        !           280: style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
        !           281:     <p style='border:none;padding:0in;'><span
        !           282: style='font-size:14.0pt;font-family:"Courier New"'><b>É etc É</b></span></p>
        !           283:   </div>
        !           284:   <p><span style='font-size:14.0pt'><b>Fig. 1.2.2</b></span><span
        !           285: style='font-size:14.0pt'> Ð Excerpts of </span><span style='font-size:14.0pt;
        !           286: font-family:"Courier New"'>loncapa_apache.conf</span></p>
        !           287:   <h3><a name="_Toc514840849"></a><a name="_Toc421867049">Authentication Overview</a></h3>
        !           288:   <p>A user can log into any server in the network and run sessions. The server 
        !           289:     responsible for initially authenticating the user is the userÕs homeserver.</p>
        !           290:   <p>When a user first accesses a server within a browser session, he or she is 
        !           291:     challenged to provide authentication information in the form of username, 
        !           292:     password and domain Ð this is done by <span style='font-family:
        !           293: "Courier New"'>lonlogin</span>, which is the <span style='font-family:"Courier New"'>error_document</span> 
        !           294:     for <span style='font-family:"Courier New"'>lonacc</span> and <span
        !           295: style='font-family:"Courier New"'>loncacc </span>(the normal authentication handlers). 
        !           296:     When the server receives that information, it asks all library servers in 
        !           297:     the domain that the user specified to validate the information Ð this is done 
        !           298:     by <span style='font-family:"Courier New"'>lonauth</span>. </p>
        !           299:   <p>The userÕs home server will answer with<i> </i><span
        !           300: style='font-family:"Courier New";font-style:normal'>authorized</span> or <span
        !           301: style='font-family:"Courier New"'>non_authorized</span>, all others with <span
        !           302: style='font-family:"Courier New"'>unknown_user</span>. If one server authorizes 
        !           303:     the user, a cookie is returned to the user by <span style='font-family:"Courier New"'>lonauth</span> 
        !           304:     and the session is initialized on the local server by establishing the session 
        !           305:     environment file. If a server sends<i> </i><span style='font-family:"Courier New";
        !           306: font-style:normal'>non_authorized</span>, the user is rejected.&nbsp; <b>Fig. 
        !           307:     1.3.1</b><span
        !           308: style='font-weight:normal'> illustrates this process.</span></p>
        !           309: </div>
        !           310: <br
        !           311: clear=ALL style='page-break-before:always;'>
        !           312: <div class=Section2>
        !           313:   <div class=Section3>
        !           314:     <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>
        !           315:       <p style='border:none;padding:0in'>Domain</p>
        !           316:       <p style='border:none;padding:0in'> <span style='font-family:Wingdings'>ˆ</span> 
        !           317:         username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library 
        !           318:         Server</b></p>
        !           319:       <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span> 
        !           320:         unknown_user <span style='font-family:Wingdings'>§</span></p>
        !           321:       <p style='border:none;padding:0in'> |</p>
        !           322:       <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>ˆ</span> 
        !           323:         username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library 
        !           324:         Server</b></p>
        !           325:       <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span> 
        !           326:         authorized <span style='font-family:Wingdings'>§</span></p>
        !           327:       <p style='border:none;padding:0in'> |</p>
        !           328:       <p style='border:none;padding:0in'><b>User</b><span
        !           329: style='font-weight:normal'> </span><span style='font-family:Wingdings'>ˆ</span> 
        !           330:         username,password,domain <span style='font-family:Wingdings'>ˆ</span> 
        !           331:         <b>Server </b></p>
        !           332:       <p style='border:none;padding:0in'><b> </b><span
        !           333: style='font-family:Wingdings'><b>§</b></span><b> </b><span style='font-weight:
        !           334: normal'>cookie</span><b> </b><span style='font-family:Wingdings'><b>§</b></span><b> 
        !           335:         </b><span style='font-weight:normal'>store session information for valid 
        !           336:         cookies</span></p>
        !           337:     </div>
        !           338:     <p><span style='font-size:14.0pt'><b>Fig. 1.3.1</b></span><span
        !           339: style='font-size:14.0pt'> Ð Illustration of Authentication Mechanism</span></p>
        !           340:     <p class=MsoBodyText style='line-height:normal'><span style='font-size:10.0pt'>At 
        !           341:       all subsequent interactions, the client sends the cookie back to the server 
        !           342:       Ð if the cookie is missing or invalid, the user is re-challenged for login 
        !           343:       information. Handlers are </span><span style='font-size:10.0pt;font-family:
        !           344: "Courier New"'>lonacc</span><span style='font-size:10.0pt'> and </span><span
        !           345: style='font-size:10.0pt;font-family:"Courier New"'>loncacc</span><span
        !           346: style='font-size:10.0pt'>. Cookies expire by closing the browser and are invalidated 
        !           347:       when the user logs out or logs in a second time into the same machine from 
        !           348:       another browser<i>.</i></span></p>
        !           349:     <h3><a name="_Toc514840850"></a><a name="_Toc421867050">Authentication Mechanisms, 
        !           350:       User Data, Passwords</a></h3>
        !           351:     <p>On the library servers, it is a routine in<span
        !           352: style='font-family:"Courier New"'> lond </span>that does the authentication. It 
        !           353:       checks if this is the userÕs homeserver, checks the password, and answers<span
        !           354: style='font-family:"Courier New"'> </span>with <span style='font-family:"Courier New"'>Òunknown_userÓ, 
        !           355:       ÒauthorizedÓ </span>or<span style='font-family:"Courier New"'> Ònon_authorizedÓ. 
        !           356:       </span></p>
        !           357:     <p class=MsoHeader>Determination if this is the userÕs homeserver is done 
        !           358:       by the presence of his or her password file in</p>
        !           359:     <p><span style='font-family:"Courier New"'> /home/httpd/lonUsers/<i>domain</i></span><span style='font-family:"Courier New"'>/<i>1.char</i></span><span
        !           360: style='font-family:"Courier New"'>/<i>2.char</i></span><span style='font-family:
        !           361: "Courier New"'>/<i>3.char</i></span><span style='font-family:"Courier New"'>/<i>username</i></span><span
        !           362: style='font-family:"Courier New"'>/passwd</span></p>
        !           363:     <p class=MsoHeader>for example</p>
        !           364:     <p><span style='font-family:"Courier New"'> /home/httpd/lonUsers/msu/s/m/i/smith/passwd</span></p>
        !           365:     <p>The password is stored in the format <span style='font-family:
        !           366: "Courier New"'>mechanism:info, </span>where mechanism can currently be <span
        !           367: style='font-family:"Courier New"'>unix</span>, <span style='font-family:"Courier New"'>krb4</span> 
        !           368:       or <span style='font-family:"Courier New"'>internal</span>. For <span
        !           369: style='font-family:"Courier New"'>krb4</span>, the <span style='font-family:
        !           370: "Courier New"'>info</span> is the Kerberos domain, for <span style='font-family:
        !           371: "Courier New"'>internal</span> it is the crypt password itself. <span
        !           372: style='font-family:"Courier New"'>unix</span> simply authenticates against <span
        !           373: style='font-family:"Courier New"'>/etc/passwd</span>. </p>
        !           374:     <h3><a name="_Toc514840851"></a><a name="_Toc421867051">Environment</a></h3>
        !           375:     <p>The access handlers Ð coming early in the Apache request cycle Ð also set 
        !           376:       up the session environment. The cookie received from the web client is a 
        !           377:       pointer to the session profiles, which are stored in a directory for temporary 
        !           378:       files <span style='font-family:"Courier New"'>(/home/httpd/lonIDs/</span>). 
        !           379:     </p>
        !           380:     <p class=H5><span style='layout-grid-mode:
        !           381: both'>Standard Components</span></p>
        !           382:     <p>These are the standard components of the environment added by Apache and 
        !           383:       the shell.</p>
        !           384:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>AUTH_TYPE ---- 
        !           385:       Basic</span></p>
        !           386:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>DOCUMENT_ROOT ---- 
        !           387:       /home/httpd/html</span></p>
        !           388:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>GATEWAY_INTERFACE 
        !           389:       ---- CGI-Perl/1.1</span></p>
        !           390:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT ---- 
        !           391:       image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*</span></p>
        !           392:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_CHARSET 
        !           393:       ---- iso-8859-1,*,utf-8</span></p>
        !           394:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_ENCODING 
        !           395:       ---- gzip</span></p>
        !           396:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_LANGUAGE 
        !           397:       ---- en,pdf</span></p>
        !           398:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_CONNECTION 
        !           399:       ---- Keep-Alive</span></p>
        !           400:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_COOKIE ---- 
        !           401:       SITESERVER=ID=cbc6695505253a2ff0e7bb7110574d90; lonID=kortemey_990461714_msu_msul1</span></p>
        !           402:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_HOST ---- 
        !           403:       zaphod.lite.msu.edu</span></p>
        !           404:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_REFERER ---- 
        !           405:       </span></p>
        !           406:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_USER_AGENT 
        !           407:       ---- Mozilla/4.75 (Macintosh; U; PPC)</span></p>
        !           408:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>MOD_PERL ---- mod_perl/1.21</span></p>
        !           409:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>PATH ---- /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bi&curren;</span></p>
        !           410:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>QUERY_STRING ---- 
        !           411:       </span></p>
        !           412:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_ADDR ---- 
        !           413:       35.8.63.7</span></p>
        !           414:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_PORT ---- 
        !           415:       1844</span></p>
        !           416:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_USER ---- 
        !           417:       lonadm</span></p>
        !           418:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_METHOD 
        !           419:       ---- GET</span></p>
        !           420:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_URI ---- 
        !           421:       /adm/test</span></p>
        !           422:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_FILENAME 
        !           423:       ---- /home/httpd/html/adm/test</span></p>
        !           424:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_NAME ---- 
        !           425:       /adm/test</span></p>
        !           426:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADDR ---- 
        !           427:       35.8.63.51</span></p>
        !           428:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADMIN ---- 
        !           429:       korte@lite.msu.edu</span></p>
        !           430:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_NAME ---- 
        !           431:       zaphod.lite.msu.edu</span></p>
        !           432:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PORT ---- 
        !           433:       80</span></p>
        !           434:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PROTOCOL 
        !           435:       ---- HTTP/1.0</span></p>
        !           436:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SIGNATURE 
        !           437:       ---- </span></p>
        !           438:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SOFTWARE 
        !           439:       ---- Apache/1.3.9 (Unix) (Red Hat/Linux) mod_perl/1.21</span></p>
        !           440:     <p class=H5><span style='layout-grid-mode:
        !           441: both'>Resource Access Control</span></p>
        !           442:     <p>The following values are set by traceroute at the initialization of the 
        !           443:       course and are used by access handlers to check if a resource can be served 
        !           444:       to a user.</p>
        !           445:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.0 
        !           446:       ---- 0</span></p>
        !           447:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.1 
        !           448:       ---- 0</span></p>
        !           449:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1. 
        !           450:       ---- &amp;:1&amp;</span></p>
        !           451:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp 
        !           452:       ---- &amp;welcome267.htm:1&amp;welcomelbs267.htm:0&amp;</span></p>
        !           453:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/Spectrum 
        !           454:       ---- &amp;s.htm:1&amp;</span></p>
        !           455:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/chain 
        !           456:       ---- &amp;chain.htm:1&amp;</span></p>
        !           457:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/coulomb 
        !           458:       ---- &amp;orbit.htm:1&amp;</span></p>
        !           459:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/induct 
        !           460:       ---- &amp;faraday.htm:1&amp;</span></p>
        !           461:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/conversions 
        !           462:       ----</span></p>
        !           463:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;conv_area.htm:1&amp;prefixes.htm:1&amp;conv_power.htm:1&amp;intro.htm:1&amp;conv_temperature.htm:1&amp;conv_time.htm:1&amp;conv_velocity.htm:1&amp;conversions.sequence:1&amp;conv_length.htm:1&amp;conv_mass.htm:1&amp;conv_pressure.htm:1&amp;conv_volume.htm:1&amp;conv_energy.htm:1&amp;conv_angle.htm:1&amp;sibaseunits.htm:1&amp;</span></p>
        !           464:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap13 
        !           465:       ---- &amp;cd371.htm:1&amp;</span></p>
        !           466:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap16 
        !           467:       ----</span></p>
        !           468:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd427.htm:1&amp;cd424.htm:1&amp;Stable.htm:1&amp;cd421.htm:1&amp;Constants.htm:1&amp;cd425.htm:1&amp;cd422.htm:1&amp;kap16.sequence:1&amp;cd426.htm:1&amp;cd423.htm:1&amp;</span></p>
        !           469:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17 
        !           470:       ----</span></p>
        !           471:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd436.htm:1&amp;kap17.sequence:1&amp;cd433.htm:1&amp;cd430.htm:1&amp;cd437.htm:1&amp;cd434.htm:1&amp;cd428.htm:1&amp;cd431.htm:1&amp;cd435.htm:1&amp;cd429.htm:1&amp;geometry.htm:1&amp;cd432.htm:1&amp;</span></p>
        !           472:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17/calculus 
        !           473:       ---- &amp;calc.htm:1&amp;</span></p>
        !           474:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18 
        !           475:       ----</span></p>
        !           476:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;RR440.htm:1&amp;RR449b.htm:1&amp;RR446b.htm:1&amp;cd473.htm:1&amp;RR453.htm:1&amp;RR447.htm:1&amp;RR443b.htm:1&amp;RR449a.htm:1&amp;RR450.htm:1&amp;RR452a.htm:1&amp;RR444.htm:1&amp;RR446a.htm:1&amp;sum18a.htm:1|1&amp;RR441.htm:1&amp;RR443a.htm:1&amp;eField.htm:1&amp;RR454.htm:1&amp;RR444b.htm:1&amp;RR448.htm:1&amp;RR447app.htm:1&amp;RR451.htm:1&amp;RR445.htm:1&amp;RR453a.htm:1&amp;kap18.sequence:1&amp;RR439.htm:1&amp;RR447a.htm:1&amp;RR442.htm:1&amp;RR450a.htm:1&amp;RR444a.htm:1&amp;RR448b.htm:1&amp;RR445newch.htm:1&amp;RR4460app.htm:1&amp;RR455.htm:1&amp;RR441a.htm:1&amp;RR449.htm:1&amp;RR452.htm:1&amp;cd438.htm:1&amp;RR446.htm:1&amp;RR454a.htm:1&amp;sum18.htm:1|1&amp;RR446c.htm:1&amp;RR448a.htm:1&amp;RR451a.htm:1&amp;RR443.htm:1&amp;RR445answer.htm:0&amp;RR445a.htm:1&amp;</span></p>
        !           477:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/demo 
        !           478:       ----</span></p>
        !           479:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;vid440.htm:0&amp;vid440sm.htm:0&amp;vid449.htm:0&amp;vid449-a.htm:0&amp;vid441.htm:0&amp;vid449sm.htm:0&amp;vid455.htm:0&amp;egun.htm:0&amp;egunsm.htm:0&amp;vid441sm.htm:0&amp;vid449-asm.htm:0&amp;vid455sm.htm:0&amp;</span></p>
        !           480:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/problems 
        !           481:       ----</span></p>
        !           482:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd460b.problem:1&amp;cd458.problem:1&amp;cd462.problem:1&amp;cd457.problem:1&amp;cd461.problem:1&amp;cd460.problem:1&amp;cd464.problem:1&amp;cd459.problem:1&amp;cd463.problem:1&amp;</span></p>
        !           483:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a 
        !           484:       ---- &amp;kap18a.sequence:1&amp;</span></p>
        !           485:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a/problems 
        !           486:       ----</span></p>
        !           487:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>&amp;cd465.problem:1&amp;cd472.problem:1&amp;cd466.problem:1&amp;cd467.problem:1&amp;cd470.problem:1&amp;cd468.problem:1&amp;cd471.problem:1&amp;cd469.problem:1&amp;</span></p>
        !           488:     <p><span style='font-size:8.0pt;font-family:"Courier New"'><i>É etc for all 
        !           489:       resources in the course É</i></span></p>
        !           490:     <p class=H5><span style='layout-grid-mode:
        !           491: both'>Browser Information</span></p>
        !           492:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.mathml 
        !           493:       ---- </span></p>
        !           494:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.os ---- 
        !           495:       mac</span></p>
        !           496:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.type ---- 
        !           497:       netscape</span></p>
        !           498:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.version 
        !           499:       ---- 4.75</span></p>
        !           500:     <p class=H5><span style='layout-grid-mode:
        !           501: both'>Cached Information about Courses and their Description</span></p>
        !           502:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.description 
        !           503:       ---- lbs267L Lab SS01</span></p>
        !           504:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.domain 
        !           505:       ---- msu</span></p>
        !           506:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.home 
        !           507:       ---- msul1</span></p>
        !           508:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.last_cache 
        !           509:       ---- 990461725</span></p>
        !           510:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.num 
        !           511:       ---- 12679c3ed543a16msul1</span></p>
        !           512:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.url 
        !           513:       ---- msu/mmp/lbs267l.sequence</span></p>
        !           514:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.description 
        !           515:       ---- lbs267 Lecture SS01</span></p>
        !           516:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.domain 
        !           517:       ---- msu</span></p>
        !           518:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.home 
        !           519:       ---- msul1</span></p>
        !           520:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.last_cache 
        !           521:       ---- 990461728</span></p>
        !           522:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.num 
        !           523:       ---- 12679c3ed543a25msul1</span></p>
        !           524:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.url 
        !           525:       ---- msu/mmp/lbs267.sequence</span></p>
        !           526:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.description 
        !           527:       ---- Demo Course</span></p>
        !           528:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.domain 
        !           529:       ---- msu</span></p>
        !           530:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.home 
        !           531:       ---- msul1</span></p>
        !           532:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.last_cache 
        !           533:       ---- 990461725</span></p>
        !           534:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.num 
        !           535:       ---- 12679c3ed543a37msul1</span></p>
        !           536:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.url 
        !           537:       ---- msu/korte/demo.sequence</span></p>
        !           538:     <p class=H5><span style='layout-grid-mode:
        !           539: both'>Information Imported from the Environment Database File of the User</span></p>
        !           540:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.cake 
        !           541:       ---- Cheese Cake</span></p>
        !           542:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.color 
        !           543:       ---- green</span></p>
        !           544:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.firstname 
        !           545:       ---- Gerd</span></p>
        !           546:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.id 
        !           547:       ---- z12345678</span></p>
        !           548:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.lastname 
        !           549:       ---- Kortemeyer</span></p>
        !           550:     <p><b>Information about the Request</b></p>
        !           551:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>httpref./res/msu/mmp/ 
        !           552:       ---- /res/msu/mmp/welcome267.htm</span></p>
        !           553:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.ambiguous 
        !           554:       ---- adm/pages/index.html</span></p>
        !           555:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.fn 
        !           556:       ---- /home/httpd/perl/tmp/kortemey_msu_12679c3ed543a25msul1</span></p>
        !           557:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.id 
        !           558:       ---- msu_12679c3ed543a25msul1</span></p>
        !           559:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.sec 
        !           560:       ---- </span></p>
        !           561:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.uri 
        !           562:       ---- msu/mmp/lbs267.sequence</span></p>
        !           563:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.filename 
        !           564:       ---- /home/httpd/html/adm/test</span></p>
        !           565:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.host ---- 
        !           566:       zaphod.lite.msu.edu</span></p>
        !           567:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.role ---- 
        !           568:       cc./msu/12679c3ed543a25msul1</span></p>
        !           569:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.state ---- 
        !           570:       published</span></p>
        !           571:     <p class=H5><span style='layout-grid-mode:
        !           572: both'>Information about the User</span></p>
        !           573:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.domain ---- 
        !           574:       msu</span></p>
        !           575:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.environment 
        !           576:       ---- /home/httpd/lonIDs/kortemey_990461714_msu_msul1.id</span></p>
        !           577:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.home ---- 
        !           578:       msul1</span></p>
        !           579:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.login.time 
        !           580:       ---- 990461714</span></p>
        !           581:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.name ---- 
        !           582:       kortemey</span></p>
        !           583:     <p class=H5><span style='layout-grid-mode:
        !           584: both'>Information about User Roles and Privileges</span></p>
        !           585:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./ 
        !           586:       ---- :sma&amp;F:gan&amp;F</span></p>
        !           587:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./msu/ 
        !           588:       ---- :cca&amp;IK:are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>
        !           589:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./ 
        !           590:       ---- :sma&amp;F:gan&amp;F</span></p>
        !           591:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/ 
        !           592:       ---- :are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>
        !           593:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/korte 
        !           594:       ---- </span></p>
        !           595:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./ 
        !           596:       ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>
        !           597:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/ 
        !           598:       ---- </span></p>
        !           599:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/12679c3ed543a16msul1 
        !           600:       ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>
        !           601:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./ 
        !           602:       ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>
        !           603:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/ 
        !           604:       ---- </span></p>
        !           605:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/12679c3ed543a25msul1 
        !           606:       ---- :opa&amp;F:srm&amp;F:gan&amp;F:cta&amp;IK:cep&amp;IK:ccr&amp;IK:are&amp;F:cin&amp;IK:cst&amp;IK:cre&amp;F:ere&amp;F:vgr&amp;F</span></p>
        !           607:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./ 
        !           608:       ---- :sma&amp;F:mcr&amp;F:bre&amp;F</span></p>
        !           609:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/ 
        !           610:       ---- </span></p>
        !           611:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/12679c3ed543a37msul1 
        !           612:       ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>
        !           613:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./ 
        !           614:       ---- :sma&amp;F:mcr&amp;F:gan&amp;F:bre&amp;F</span></p>
        !           615:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/ 
        !           616:       ---- :mau&amp;F:cca&amp;IK:cad&amp;UIK:ccc&amp;U:cst&amp;UIK:cdg&amp;UIK:are&amp;F:cli&amp;UIK:cta&amp;UIK:cep&amp;UIK:ccr&amp;UIK:bre&amp;F:cau&amp;U:cre&amp;F:cin&amp;UIK:ere&amp;F</span></p>
        !           617:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a16msul1 
        !           618:       ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>
        !           619:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a25msul1 
        !           620:       ---- :opa&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cst&amp;IK:cin&amp;IK:ere&amp;F:vgr&amp;F</span></p>
        !           621:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a37msul1 
        !           622:       ---- :opa&amp;F:cst&amp;IK:vgr&amp;F:srm&amp;F:gan&amp;F:are&amp;F:ccr&amp;IK:cep&amp;IK:cta&amp;IK:cre&amp;F:cin&amp;IK:ere&amp;F</span></p>
        !           623:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/korte 
        !           624:       ---- </span></p>
        !           625:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./ 
        !           626:       ---- :sma&amp;F</span></p>
        !           627:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./msu/ 
        !           628:       ---- :mau&amp;F:cad&amp;UIK:ccr&amp;UIK:cep&amp;UIK:cta&amp;UIK:cli&amp;UIK:ccc&amp;U:cau&amp;U:cst&amp;UIK:cin&amp;UIK:cdg&amp;UIK</span></p>
        !           629:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.au./msu/ 
        !           630:       ---- 964531839.0</span></p>
        !           631:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.ca./msu/korte 
        !           632:       ---- .</span></p>
        !           633:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a16msul1 
        !           634:       ---- 964531839.0</span></p>
        !           635:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a25msul1 
        !           636:       ---- 964531839.0</span></p>
        !           637:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a37msul1 
        !           638:       ---- 964531839.0</span></p>
        !           639:     <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.dc./msu/ 
        !           640:       ---- 964531839.0</span></p>
        !           641:     <h2>&nbsp;</h2>
        !           642:     <h3><a name="_Toc421867052">Handler Reference: LON-CAPA and the 77 Web Perl 
        !           643:       Modules</a></h3>
        !           644:     <p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><span
        !           645: style='font-style:normal'> </span></p>
        !           646:     <p>LON-CAPA provides many different web services for coordinating online educational 
        !           647:       interactions. Currently, these web services are made available by 77 different 
        !           648:       perl modules. The invocation of these perl modules is many times due to 
        !           649:       the URI format based on entries inside <tt><span style='font-family:
        !           650: "Courier New"'>/etc/httpd/conf/loncapa_apache.conf</span></tt>. </p>
        !           651:     <p>Throughout this technical manual, various web perl modules are described 
        !           652:       in detail. Here is a summary of all the 77 web perl modules: </p>
        !           653:     <table border=1 cellpadding=0>
        !           654:       <tr> 
        !           655:         <td class="Normal"> 
        !           656:           <p align=center style='text-align:center'><b>Name/Location</b></p>
        !           657:         </td>
        !           658:         <td class="Normal"> 
        !           659:           <p align=center style='text-align:center'><b>Description</b></p>
        !           660:         </td>
        !           661:       </tr>
        !           662:       <tr> 
        !           663:         <td class="Normal"> 
        !           664:           <p>SOURCE: rat/lonwrapper.pm<br>
        !           665:             TARGET: home/httpd/lib/perl/Apache/lonwrapper.pm</p>
        !           666:         </td>
        !           667:         <td class="Normal"> 
        !           668:           <p>Wrapper for external and binary files as standalone resources. Edit 
        !           669:             handler for rat maps; TeX content handler.</p>
        !           670:         </td>
        !           671:       </tr>
        !           672:       <tr> 
        !           673:         <td class="Normal"> 
        !           674:           <p>SOURCE: loncom/publisher/loncfile.pm<br>
        !           675:             TARGET: home/httpd/lib/perl/Apache/loncfile.pm</p>
        !           676:         </td>
        !           677:         <td class="Normal"> 
        !           678:           <p>Provides web-based functionality for file copy, rename, mkdir, etc, 
        !           679:             in the construction space menu.</p>
        !           680:         </td>
        !           681:       </tr>
        !           682:       <tr> 
        !           683:         <td class="Normal"> 
        !           684:           <p>SOURCE: loncom/interface/lonstatistics.pm<br>
        !           685:             TARGET: home/httpd/lib/perl/Apache/lonstatistics.pm</p>
        !           686:         </td>
        !           687:         <td class="Normal"> 
        !           688:           <p>Handler to show statistics on solving LON-CAPA problems.</p>
        !           689:         </td>
        !           690:       </tr>
        !           691:       <tr> 
        !           692:         <td class="Normal"> 
        !           693:           <p>SOURCE: loncom/publisher/londiff.pm<br>
        !           694:             TARGET: home/httpd/lib/perl/Apache/londiff.pm</p>
        !           695:         </td>
        !           696:         <td class="Normal"> 
        !           697:           <p>Handler to show difference between two files.</p>
        !           698:         </td>
        !           699:       </tr>
        !           700:       <tr> 
        !           701:         <td class="Normal"> 
        !           702:           <p>SOURCE: loncom/publisher/lonupload.pm<br>
        !           703:             TARGET: home/httpd/lib/perl/Apache/lonupload.pm</p>
        !           704:         </td>
        !           705:         <td class="Normal"> 
        !           706:           <p>Handler to upload files through browser into construction space.</p>
        !           707:         </td>
        !           708:       </tr>
        !           709:       <tr> 
        !           710:         <td class="Normal"> 
        !           711:           <p>SOURCE: loncom/homework/essayresponse.pm<br>
        !           712:             TARGET: home/httpd/lib/perl/Apache/essayresponse.pm</p>
        !           713:         </td>
        !           714:         <td class="Normal"> 
        !           715:           <p>Handler to evaluate essay (ungraded) style responses.</p>
        !           716:         </td>
        !           717:       </tr>
        !           718:       <tr> 
        !           719:         <td class="Normal"> 
        !           720:           <p>SOURCE: loncom/homework/externalresponse.pm<br>
        !           721:             TARGET: home/httpd/lib/perl/Apache/externalresponse.pm</p>
        !           722:         </td>
        !           723:         <td class="Normal"> 
        !           724:           <p>Handler to evaluate externally graded responses.</p>
        !           725:         </td>
        !           726:       </tr>
        !           727:       <tr> 
        !           728:         <td class="Normal"> 
        !           729:           <p>SOURCE: loncom/homework/loncapagrade.pm<br>
        !           730:             TARGET: home/httpd/lib/perl/Apache/loncapagrade.pm</p>
        !           731:         </td>
        !           732:         <td class="Normal"> 
        !           733:           <p>Handler to evaluate externally graded responses.</p>
        !           734:         </td>
        !           735:       </tr>
        !           736:       <tr> 
        !           737:         <td class="Normal"> 
        !           738:           <p>SOURCE: loncom/publisher/lonpubdir.pm<br>
        !           739:             TARGET: home/httpd/lib/perl/Apache/lonpubdir.pm</p>
        !           740:         </td>
        !           741:         <td class="Normal"> 
        !           742:           <p>Handler to publish directories.</p>
        !           743:         </td>
        !           744:       </tr>
        !           745:       <tr> 
        !           746:         <td class="Normal"> 
        !           747:           <p>SOURCE: loncom/publisher/lonretrieve.pm<br>
        !           748:             TARGET: home/httpd/lib/perl/Apache/lonretrieve.pm</p>
        !           749:         </td>
        !           750:         <td class="Normal"> 
        !           751:           <p>Handler to retrieve old versions from resource space.</p>
        !           752:         </td>
        !           753:       </tr>
        !           754:       <tr> 
        !           755:         <td class="Normal"> 
        !           756:           <p>SOURCE: loncom/homework/edit.pm<br>
        !           757:             TARGET: home/httpd/lib/perl/Apache/edit.pm</p>
        !           758:         </td>
        !           759:         <td class="Normal"> 
        !           760:           <p>Helper functions when in homework edit mode.</p>
        !           761:         </td>
        !           762:       </tr>
        !           763:       <tr> 
        !           764:         <td class="Normal"> 
        !           765:           <p>SOURCE: loncom/interface/lonmeta.pm<br>
        !           766:             TARGET: home/httpd/lib/perl/Apache/lonmeta.pm</p>
        !           767:         </td>
        !           768:         <td class="Normal"> 
        !           769:           <p>Metadata display handler.</p>
        !           770:         </td>
        !           771:       </tr>
        !           772:       <tr> 
        !           773:         <td class="Normal"> 
        !           774:           <p>SOURCE: rat/lonambiguous.pm<br>
        !           775:             TARGET: home/httpd/lib/perl/Apache/lonambiguous.pm</p>
        !           776:         </td>
        !           777:         <td class="Normal"> 
        !           778:           <p>Handler to resolve ambiguous file locations.</p>
        !           779:         </td>
        !           780:       </tr>
        !           781:       <tr> 
        !           782:         <td class="Normal"> 
        !           783:           <p>SOURCE: rat/lonratparms.pm<br>
        !           784:             TARGET: home/httpd/lib/perl/Apache/lonratparms.pm</p>
        !           785:         </td>
        !           786:         <td class="Normal"> 
        !           787:           <p>Handler to set resource parameters inside of the RAT based on metadata.</p>
        !           788:         </td>
        !           789:       </tr>
        !           790:       <tr> 
        !           791:         <td class="Normal"> 
        !           792:           <p>SOURCE: rat/lonsequence.pm<br>
        !           793:             TARGET: home/httpd/lib/perl/Apache/lonsequence.pm</p>
        !           794:         </td>
        !           795:         <td class="Normal"> 
        !           796:           <p>Handler for showing sequence objects of educational resources.</p>
        !           797:         </td>
        !           798:       </tr>
        !           799:       <tr> 
        !           800:         <td class="Normal"> 
        !           801:           <p>SOURCE: loncom/interface/loncreatecourse.pm<br>
        !           802:             TARGET: home/httpd/lib/perl/Apache/loncreatecourse.pm</p>
        !           803:         </td>
        !           804:         <td class="Normal"> 
        !           805:           <p>Allows domain coordinators to create new courses and assign course 
        !           806:             coordinators.</p>
        !           807:         </td>
        !           808:       </tr>
        !           809:       <tr> 
        !           810:         <td class="Normal"> 
        !           811:           <p>SOURCE: loncom/interface/loncreateuser.pm<br>
        !           812:             TARGET: home/httpd/lib/perl/Apache/loncreateuser.pm</p>
        !           813:         </td>
        !           814:         <td class="Normal"> 
        !           815:           <p>Allows users to within their own privileges create/edit users and 
        !           816:             give them roles.</p>
        !           817:         </td>
        !           818:       </tr>
        !           819:       <tr> 
        !           820:         <td class="Normal"> 
        !           821:           <p>SOURCE: loncom/interface/lonchart.pm<br>
        !           822:             TARGET: home/httpd/lib/perl/Apache/lonchart.pm</p>
        !           823:         </td>
        !           824:         <td class="Normal"> 
        !           825:           <p>Produces simple LectureOnline-like student assessment performance 
        !           826:             chart</p>
        !           827:         </td>
        !           828:       </tr>
        !           829:       <tr> 
        !           830:         <td class="Normal"> 
        !           831:           <p>SOURCE: loncom/interface/loncommon.pm<br>
        !           832:             TARGET: home/httpd/lib/perl/Apache/loncommon.pm</p>
        !           833:         </td>
        !           834:         <td class="Normal"> 
        !           835:           <p>Makes a table out of the previous attempts. Inputs result_from_symbread, 
        !           836:             user, domain, home_server, course_id.</p>
        !           837:         </td>
        !           838:       </tr>
        !           839:       <tr> 
        !           840:         <td class="Normal"> 
        !           841:           <p>SOURCE: loncom/homework/grades.pm<br>
        !           842:             TARGET: home/httpd/lib/perl/Apache/grades.pm</p>
        !           843:         </td>
        !           844:         <td class="Normal"> 
        !           845:           <p>Handles the viewing of grades.</p>
        !           846:         </td>
        !           847:       </tr>
        !           848:       <tr> 
        !           849:         <td class="Normal"> 
        !           850:           <p>SOURCE: loncom/homework/imageresponse.pm<br>
        !           851:             TARGET: home/httpd/lib/perl/Apache/imageresponse.pm</p>
        !           852:         </td>
        !           853:         <td class="Normal"> 
        !           854:           <p>Coordinates the response to clicking an image.</p>
        !           855:         </td>
        !           856:       </tr>
        !           857:       <tr> 
        !           858:         <td class="Normal"> 
        !           859:           <p>SOURCE: loncom/homework/optionresponse.pm<br>
        !           860:             TARGET: home/httpd/lib/perl/Apache/optionresponse.pm</p>
        !           861:         </td>
        !           862:         <td class="Normal"> 
        !           863:           <p>Handles tags associated with showing a list of options.</p>
        !           864:         </td>
        !           865:       </tr>
        !           866:       <tr> 
        !           867:         <td class="Normal"> 
        !           868:           <p>SOURCE: loncom/homework/outputtags.pm<br>
        !           869:             TARGET: home/httpd/lib/perl/Apache/outputtags.pm</p>
        !           870:         </td>
        !           871:         <td class="Normal"> 
        !           872:           <p>Handles tags associated with output. Seems to relate to due dates 
        !           873:             of the assignment.</p>
        !           874:         </td>
        !           875:       </tr>
        !           876:       <tr> 
        !           877:         <td class="Normal"> 
        !           878:           <p>SOURCE: loncom/interface/lontest.pm<br>
        !           879:             TARGET: home/httpd/lib/perl/Apache/lontest.pm</p>
        !           880:         </td>
        !           881:         <td class="Normal"> 
        !           882:           <p>Used for debugging and testing the LON-CAPA system.</p>
        !           883:         </td>
        !           884:       </tr>
        !           885:       <tr> 
        !           886:         <td class="Normal"> 
        !           887:           <p>SOURCE: loncom/homework/radiobuttonresponse.pm<br>
        !           888:             TARGET: home/httpd/lib/perl/Apache/radiobuttonresponse.pm</p>
        !           889:         </td>
        !           890:         <td class="Normal"> 
        !           891:           <p>Handles multiple-choice style responses.</p>
        !           892:         </td>
        !           893:       </tr>
        !           894:       <tr> 
        !           895:         <td class="Normal"> 
        !           896:           <p>SOURCE: loncom/interface/lonassignments.pm<br>
        !           897:             TARGET: home/httpd/lib/perl/Apache/lonassignments.pm</p>
        !           898:         </td>
        !           899:         <td class="Normal"> 
        !           900:           <p>Handles processing of assignments.</p>
        !           901:         </td>
        !           902:       </tr>
        !           903:       <tr> 
        !           904:         <td class="Normal"> 
        !           905:           <p>SOURCE: loncom/interface/loncommunicate.pm<br>
        !           906:             TARGET: home/httpd/lib/perl/Apache/loncommunicate.pm</p>
        !           907:         </td>
        !           908:         <td class="Normal"> 
        !           909:           <p>Will be the access handler to email sending, as well as the planned 
        !           910:             chatrooms, etc.</p>
        !           911:         </td>
        !           912:       </tr>
        !           913:       <tr> 
        !           914:         <td class="Normal"> 
        !           915:           <p>SOURCE: loncom/interface/lonerrorhandler.pm<br>
        !           916:             TARGET: home/httpd/lib/perl/Apache/lonerrorhandler.pm</p>
        !           917:         </td>
        !           918:         <td class="Normal"> 
        !           919:           <p>Handles errors.</p>
        !           920:         </td>
        !           921:       </tr>
        !           922:       <tr> 
        !           923:         <td class="Normal"> 
        !           924:           <p>SOURCE: loncom/interface/lonevaluate.pm<br>
        !           925:             TARGET: home/httpd/lib/perl/Apache/lonevaluate.pm</p>
        !           926:         </td>
        !           927:         <td class="Normal"> 
        !           928:           <p>Handles evaluation.</p>
        !           929:         </td>
        !           930:       </tr>
        !           931:       <tr> 
        !           932:         <td class="Normal"> 
        !           933:           <p>SOURCE: loncom/interface/lonfeedback.pm<br>
        !           934:             TARGET: home/httpd/lib/perl/Apache/lonfeedback.pm</p>
        !           935:         </td>
        !           936:         <td class="Normal"> 
        !           937:           <p>Handles feedback from students to instructors and system administrators. 
        !           938:             Provides a screenshot of the current resource, as well as previous 
        !           939:             attempts if the resource was a homework. Used by lonmsg.pm.</p>
        !           940:         </td>
        !           941:       </tr>
        !           942:       <tr> 
        !           943:         <td class="Normal"> 
        !           944:           <p>SOURCE: loncom/interface/lonnavmaps.pm<br>
        !           945:             TARGET: home/httpd/lib/perl/Apache/lonnavmaps.pm</p>
        !           946:         </td>
        !           947:         <td class="Normal"> 
        !           948:           <p>Handles navigational maps.</p>
        !           949:         </td>
        !           950:       </tr>
        !           951:       <tr> 
        !           952:         <td class="Normal"> 
        !           953:           <p>SOURCE: loncom/interface/lonpreferences.pm<br>
        !           954:             TARGET: home/httpd/lib/perl/Apache/lonpreferences.pm</p>
        !           955:         </td>
        !           956:         <td class="Normal"> 
        !           957:           <p>Handles user preferences associated with customizing the online LON-CAPA 
        !           958:             educational environment.</p>
        !           959:         </td>
        !           960:       </tr>
        !           961:       <tr> 
        !           962:         <td class="Normal"> 
        !           963:           <p>SOURCE: loncom/interface/lonprintout.pm<br>
        !           964:             TARGET: home/httpd/lib/perl/Apache/lonprintout.pm</p>
        !           965:         </td>
        !           966:         <td class="Normal"> 
        !           967:           <p>Handles the production of printable files and resources.</p>
        !           968:         </td>
        !           969:       </tr>
        !           970:       <tr> 
        !           971:         <td class="Normal"> 
        !           972:           <p>SOURCE: loncom/interface/lonsearchcat.pm<br>
        !           973:             TARGET: home/httpd/lib/perl/Apache/lonsearchcat.pm</p>
        !           974:         </td>
        !           975:         <td class="Normal"> 
        !           976:           <p>Handles a searchable catalogue.</p>
        !           977:         </td>
        !           978:       </tr>
        !           979:       <tr> 
        !           980:         <td class="Normal"> 
        !           981:           <p>SOURCE: loncom/interface/londropadd.pm<br>
        !           982:             TARGET: home/httpd/lib/perl/Apache/londropadd.pm</p>
        !           983:         </td>
        !           984:         <td class="Normal"> 
        !           985:           <p>Allows course coordinators to upload courselists in different formats, 
        !           986:             and automatically create users (if they do not exist already), assign 
        !           987:             them the role of student in a course, and add them to the classlist.</p>
        !           988:         </td>
        !           989:       </tr>
        !           990:       <tr> 
        !           991:         <td class="Normal"> 
        !           992:           <p>SOURCE: loncom/interface/lonmsg.pm<br>
        !           993:             TARGET: home/httpd/lib/perl/Apache/lonmsg.pm</p>
        !           994:         </td>
        !           995:         <td class="Normal"> 
        !           996:           <p>lonmsg.pm has several functions to send and receive internal messages. 
        !           997:             author_res_msg - send message to resource author. user_crit_msg - 
        !           998:             send a critical message to a user. A critical message will require 
        !           999:             acknowledgment by the recipient and the sender will be notified. user_crit_received 
        !          1000:             - routine to trigger acknowledgment. statuschange - change the status 
        !          1001:             of a message (read, replied, forwarded, etc). The handler also displays 
        !          1002:             messages, has routines to reply, etc.</p>
        !          1003:         </td>
        !          1004:       </tr>
        !          1005:       <tr> 
        !          1006:         <td class="Normal"> 
        !          1007:           <p>SOURCE: loncom/homework/hint.pm<br>
        !          1008:             TARGET: home/httpd/lib/perl/Apache/hint.pm</p>
        !          1009:         </td>
        !          1010:         <td class="Normal"> 
        !          1011:           <p>This handler coordinates the delivery of hints to students working 
        !          1012:             on LON-CAPA problems and assignments.</p>
        !          1013:         </td>
        !          1014:       </tr>
        !          1015:       <tr> 
        !          1016:         <td class="Normal"> 
        !          1017:           <p>SOURCE: loncom/interface/lonspreadsheet.pm<br>
        !          1018:             TARGET: home/httpd/lib/perl/Apache/lonspreadsheet.pm</p>
        !          1019:         </td>
        !          1020:         <td class="Normal"> 
        !          1021:           <p>Spreadsheets are completely web-based. They exist on the level of 
        !          1022:             a whole course, a student, and individual assessments.</p>
        !          1023:         </td>
        !          1024:       </tr>
        !          1025:       <tr> 
        !          1026:         <td class="Normal"> 
        !          1027:           <p>SOURCE: loncom/interface/lonparmset.pm<br>
        !          1028:             TARGET: home/httpd/lib/perl/Apache/lonparmset.pm</p>
        !          1029:         </td>
        !          1030:         <td class="Normal"> 
        !          1031:           <p>Handler to resolve ambiguous file locations</p>
        !          1032:         </td>
        !          1033:       </tr>
        !          1034:       <tr> 
        !          1035:         <td class="Normal"> 
        !          1036:           <p>SOURCE: loncom/publisher/lonconstruct.pm<br>
        !          1037:             TARGET: home/httpd/lib/perl/Apache/lonconstruct.pm</p>
        !          1038:         </td>
        !          1039:         <td class="Normal"> 
        !          1040:           <p>Page wrapper for handling construction space.</p>
        !          1041:         </td>
        !          1042:       </tr>
        !          1043:       <tr> 
        !          1044:         <td class="Normal"> 
        !          1045:           <p>SOURCE: loncom/publisher/lonpublisher.pm<br>
        !          1046:             TARGET: home/httpd/lib/perl/Apache/lonpublisher.pm</p>
        !          1047:         </td>
        !          1048:         <td class="Normal"> 
        !          1049:           <p>Publishes an LON-CAPA educational resource complete with metadata 
        !          1050:             (authorship, language, copyright, creation date, etc).</p>
        !          1051:         </td>
        !          1052:       </tr>
        !          1053:       <tr> 
        !          1054:         <td class="Normal"> 
        !          1055:           <p>SOURCE: loncom/interface/lonmenu.pm<br>
        !          1056:             TARGET: home/httpd/lib/perl/Apache/lonmenu.pm</p>
        !          1057:         </td>
        !          1058:         <td class="Normal"> 
        !          1059:           <p>Has routines which control the remote control.</p>
        !          1060:         </td>
        !          1061:       </tr>
        !          1062:       <tr> 
        !          1063:         <td class="Normal"> 
        !          1064:           <p>SOURCE: rat/lonpageflip.pm<br>
        !          1065:             TARGET: home/httpd/lib/perl/Apache/lonpageflip.pm</p>
        !          1066:         </td>
        !          1067:         <td class="Normal"> 
        !          1068:           <p>Deals with forward, backward, and other page flips.</p>
        !          1069:         </td>
        !          1070:       </tr>
        !          1071:       <tr> 
        !          1072:         <td class="Normal"> 
        !          1073:           <p>SOURCE: rat/lonratedt.pm<br>
        !          1074:             TARGET: home/httpd/lib/perl/Apache/lonratedt.pm</p>
        !          1075:         </td>
        !          1076:         <td class="Normal"> 
        !          1077:           <p>Builds up frame set and loads in the right thing.</p>
        !          1078:         </td>
        !          1079:       </tr>
        !          1080:       <tr> 
        !          1081:         <td class="Normal"> 
        !          1082:           <p>SOURCE: loncom/html/res/adm/pages/homeworkmenu.html<br>
        !          1083:             TARGET: home/httpd/html/res/adm/pages/homeworkmenu.html</p>
        !          1084:         </td>
        !          1085:         <td class="Normal"> 
        !          1086:           <p>Homework remote control.</p>
        !          1087:         </td>
        !          1088:       </tr>
        !          1089:       <tr> 
        !          1090:         <td class="Normal"> 
        !          1091:           <p>SOURCE: loncom/html/res/adm/pages/annotator/admannotations.pm<br>
        !          1092:             TARGET: home/httpd/lib/perl/Apache/admannotations.pm</p>
        !          1093:         </td>
        !          1094:         <td class="Normal"> 
        !          1095:           <p>This will take annotations and then plug them into a page.</p>
        !          1096:         </td>
        !          1097:       </tr>
        !          1098:       <tr> 
        !          1099:         <td class="Normal"> 
        !          1100:           <p>SOURCE: loncom/html/res/adm/pages/bookmarkmenu/admbookmarks.pm<br>
        !          1101:             TARGET: home/httpd/lib/perl/Apache/admbookmarks.pm</p>
        !          1102:         </td>
        !          1103:         <td class="Normal"> 
        !          1104:           <p>This will take bookmarks and get/write/display them for the LON-CAPA 
        !          1105:             user interface.</p>
        !          1106:         </td>
        !          1107:       </tr>
        !          1108:       <tr> 
        !          1109:         <td class="Normal"> 
        !          1110:           <p>SOURCE: rat/lonratsrv.pm<br>
        !          1111:             TARGET: home/httpd/lib/perl/Apache/lonratsrv.pm</p>
        !          1112:         </td>
        !          1113:         <td class="Normal"> 
        !          1114:           <p>Handler that takes output from RAT and stores it on disk. Handles 
        !          1115:             the upper hidden frame of the added window that comes up in RAT. (3 
        !          1116:             frames come up in RAT server, code, and output. This module handles 
        !          1117:             server connection.)</p>
        !          1118:         </td>
        !          1119:       </tr>
        !          1120:       <tr> 
        !          1121:         <td class="Normal"> 
        !          1122:           <p>SOURCE: rat/lonpage.pm<br>
        !          1123:             TARGET: home/httpd/lib/perl/Apache/lonpage.pm</p>
        !          1124:         </td>
        !          1125:         <td class="Normal"> 
        !          1126:           <p>bundles pages into one page</p>
        !          1127:         </td>
        !          1128:       </tr>
        !          1129:       <tr> 
        !          1130:         <td class="Normal"> 
        !          1131:           <p>SOURCE: rat/lonuserstate.pm<br>
        !          1132:             TARGET: home/httpd/lib/perl/Apache/lonuserstate.pm</p>
        !          1133:         </td>
        !          1134:         <td class="Normal"> 
        !          1135:           <p>compile course into binary data structure (in loncom/rat)</p>
        !          1136:         </td>
        !          1137:       </tr>
        !          1138:       <tr> 
        !          1139:         <td class="Normal"> 
        !          1140:           <p>SOURCE: loncom/xml/lontex.pm<br>
        !          1141:             TARGET: home/httpd/lib/perl/Apache/lontex.pm</p>
        !          1142:         </td>
        !          1143:         <td class="Normal"> 
        !          1144:           <p>Handler for tex files (somewhere in modules)</p>
        !          1145:         </td>
        !          1146:       </tr>
        !          1147:       <tr> 
        !          1148:         <td class="Normal"> 
        !          1149:           <p>SOURCE: loncom/xml/lontexconvert.pm<br>
        !          1150:             TARGET: home/httpd/lib/perl/Apache/lontexconvert.pm</p>
        !          1151:         </td>
        !          1152:         <td class="Normal"> 
        !          1153:           <p>Access to tth/ttm</p>
        !          1154:         </td>
        !          1155:       </tr>
        !          1156:       <tr> 
        !          1157:         <td class="Normal"> 
        !          1158:           <p>SOURCE: loncom/xml/lonxml.pm<br>
        !          1159:             TARGET: home/httpd/lib/perl/Apache/lonxml.pm</p>
        !          1160:         </td>
        !          1161:         <td class="Normal"> 
        !          1162:           <p>XML Parsing Module</p>
        !          1163:         </td>
        !          1164:       </tr>
        !          1165:       <tr> 
        !          1166:         <td class="Normal"> 
        !          1167:           <p>SOURCE: loncom/xml/lonplot.pm<br>
        !          1168:             TARGET: home/httpd/lib/perl/Apache/lonplot.pm</p>
        !          1169:         </td>
        !          1170:         <td class="Normal"> 
        !          1171:           <p>XML-based plotter of graphs</p>
        !          1172:         </td>
        !          1173:       </tr>
        !          1174:       <tr> 
        !          1175:         <td class="Normal"> 
        !          1176:           <p>SOURCE: loncom/xml/style.pm<br>
        !          1177:             TARGET: home/httpd/lib/perl/Apache/style.pm</p>
        !          1178:         </td>
        !          1179:         <td class="Normal"> 
        !          1180:           <p>Style Parsing Module</p>
        !          1181:         </td>
        !          1182:       </tr>
        !          1183:       <tr> 
        !          1184:         <td class="Normal"> 
        !          1185:           <p>SOURCE: loncom/xml/londefdef.pm<br>
        !          1186:             TARGET: home/httpd/lib/perl/Apache/londefdef.pm</p>
        !          1187:         </td>
        !          1188:         <td class="Normal"> 
        !          1189:           <p>Tags Default Definition Module</p>
        !          1190:         </td>
        !          1191:       </tr>
        !          1192:       <tr> 
        !          1193:         <td class="Normal"> 
        !          1194:           <p>SOURCE: loncom/xml/run.pm<br>
        !          1195:             TARGET: home/httpd/lib/perl/Apache/run.pm</p>
        !          1196:         </td>
        !          1197:         <td class="Normal"> 
        !          1198:           <p>used to prevent poorly written problems from causing lingering after 
        !          1199:             effects</p>
        !          1200:         </td>
        !          1201:       </tr>
        !          1202:       <tr> 
        !          1203:         <td class="Normal"> 
        !          1204:           <p>SOURCE: loncom/xml/scripttag.pm<br>
        !          1205:             TARGET: home/httpd/lib/perl/Apache/scripttag.pm</p>
        !          1206:         </td>
        !          1207:         <td class="Normal"> 
        !          1208:           <p>implements &lt;script&gt;, &lt;scriptlib&gt;, &lt;parserlib&gt;, 
        !          1209:             and &lt;import&gt;</p>
        !          1210:         </td>
        !          1211:       </tr>
        !          1212:       <tr> 
        !          1213:         <td class="Normal"> 
        !          1214:           <p>SOURCE: loncom/homework/randomlabel.pm<br>
        !          1215:             TARGET: home/httpd/lib/perl/Apache/randomlabel.pm</p>
        !          1216:         </td>
        !          1217:         <td class="Normal"> 
        !          1218:           <p>Interface for producing applet code which randomizes the labelling 
        !          1219:             of an image.</p>
        !          1220:         </td>
        !          1221:       </tr>
        !          1222:       <tr> 
        !          1223:         <td class="Normal"> 
        !          1224:           <p>SOURCE: loncom/homework/lonhomework.pm<br>
        !          1225:             TARGET: home/httpd/lib/perl/Apache/lonhomework.pm</p>
        !          1226:         </td>
        !          1227:         <td class="Normal"> 
        !          1228:           <p>handles requests for output, evaluation, and alteration of a homework 
        !          1229:             resource</p>
        !          1230:         </td>
        !          1231:       </tr>
        !          1232:       <tr> 
        !          1233:         <td class="Normal"> 
        !          1234:           <p>SOURCE: loncom/homework/inputtags.pm<br>
        !          1235:             TARGET: home/httpd/lib/perl/Apache/inputtags.pm</p>
        !          1236:         </td>
        !          1237:         <td class="Normal"> 
        !          1238:           <p>produces HTML input tags (&lt;INPUT&gt;) for rendering homework resources</p>
        !          1239:         </td>
        !          1240:       </tr>
        !          1241:       <tr> 
        !          1242:         <td class="Normal"> 
        !          1243:           <p>SOURCE: loncom/homework/structuretags.pm<br>
        !          1244:             TARGET: home/httpd/lib/perl/Apache/structuretags.pm</p>
        !          1245:         </td>
        !          1246:         <td class="Normal"> 
        !          1247:           <p>produces HTML tags necessary for structuring the presentation of 
        !          1248:             homework resources</p>
        !          1249:         </td>
        !          1250:       </tr>
        !          1251:       <tr> 
        !          1252:         <td class="Normal"> 
        !          1253:           <p>SOURCE: loncom/homework/response.pm<br>
        !          1254:             TARGET: home/httpd/lib/perl/Apache/response.pm</p>
        !          1255:         </td>
        !          1256:         <td class="Normal"> 
        !          1257:           <p>defines different types of responses given to student as well as 
        !          1258:             syntax for producing response values</p>
        !          1259:         </td>
        !          1260:       </tr>
        !          1261:       <tr> 
        !          1262:         <td class="Normal"> 
        !          1263:           <p>SOURCE: loncom/homework/caparesponse/caparesponse.pm<br>
        !          1264:             TARGET: home/httpd/lib/perl/Apache/caparesponse.pm</p>
        !          1265:         </td>
        !          1266:         <td class="Normal"> 
        !          1267:           <p>handles request to the CAPA homework processing engine</p>
        !          1268:         </td>
        !          1269:       </tr>
        !          1270:       <tr> 
        !          1271:         <td class="Normal"> 
        !          1272:           <p>SOURCE: loncom/xml/Safe.pm<br>
        !          1273:             TARGET: home/httpd/lib/perl/Safe.pm</p>
        !          1274:         </td>
        !          1275:         <td class="Normal"> 
        !          1276:           <p>Meant to safely substitute for CPAN version of Safe. Allows for safely 
        !          1277:             executing embedded perl comands in a way that does not threaten the 
        !          1278:             operating system.</p>
        !          1279:         </td>
        !          1280:       </tr>
        !          1281:       <tr> 
        !          1282:         <td class="Normal"> 
        !          1283:           <p>SOURCE: loncom/auth/localauth.pm<br>
        !          1284:             TARGET: home/httpd/lib/perl/localauth.pm</p>
        !          1285:         </td>
        !          1286:         <td class="Normal"> 
        !          1287:           <p>Local authentication mechanism (meant to be customized).</p>
        !          1288:         </td>
        !          1289:       </tr>
        !          1290:       <tr> 
        !          1291:         <td class="Normal"> 
        !          1292:           <p>SOURCE: loncom/auth/lonacc.pm<br>
        !          1293:             TARGET: home/httpd/lib/perl/Apache/lonacc.pm</p>
        !          1294:         </td>
        !          1295:         <td class="Normal"> 
        !          1296:           <p>(This module, like loncacc.pm also authenticates with cookies.) lonacc.pm 
        !          1297:             coordinates access to a wide range of administrative-type functions 
        !          1298:             (e.g. roles, logout, annotations, and bookmarks) as well as coordinating 
        !          1299:             access to educational resources.</p>
        !          1300:         </td>
        !          1301:       </tr>
        !          1302:       <tr> 
        !          1303:         <td class="Normal"> 
        !          1304:           <p>SOURCE: loncom/auth/lonracc.pm<br>
        !          1305:             TARGET: home/httpd/lib/perl/Apache/lonracc.pm</p>
        !          1306:         </td>
        !          1307:         <td class="Normal"> 
        !          1308:           <p>access handler for file transfers</p>
        !          1309:         </td>
        !          1310:       </tr>
        !          1311:       <tr> 
        !          1312:         <td class="Normal"> 
        !          1313:           <p>SOURCE: loncom/auth/loncacc.pm<br>
        !          1314:             TARGET: home/httpd/lib/perl/Apache/loncacc.pm</p>
        !          1315:         </td>
        !          1316:         <td class="Normal"> 
        !          1317:           <p>This module provides access to an educational resource construction 
        !          1318:             area. This module is invoked by the URL-related pattern syntax LocationMatch 
        !          1319:             &quot;^/priv.*&quot; or LocationMatch &quot;^/\~.*&quot;. Authentication 
        !          1320:             of user identity is coordinated through cookies. The abbreviation 
        !          1321:             &quot;cacc&quot; corresponds to &quot;construction-space access&quot;). 
        !          1322:             If the cookie handle is invalid, then this module returns a forbidden 
        !          1323:             status and makes appropriate log entries. If the cookie handle is 
        !          1324:             valid, status is determined to be okay (and, for the &quot;priv&quot;-type 
        !          1325:             access, the resource is delivered by the lonconstruct module).</p>
        !          1326:         </td>
        !          1327:       </tr>
        !          1328:       <tr> 
        !          1329:         <td class="Normal"> 
        !          1330:           <p>SOURCE: loncom/auth/lonauth.pm<br>
        !          1331:             TARGET: home/httpd/lib/perl/Apache/lonauth.pm</p>
        !          1332:         </td>
        !          1333:         <td class="Normal"> 
        !          1334:           <p>authenticate, set up session environment</p>
        !          1335:         </td>
        !          1336:       </tr>
        !          1337:       <tr> 
        !          1338:         <td class="Normal"> 
        !          1339:           <p>SOURCE: loncom/auth/lonlogin.pm<br>
        !          1340:             TARGET: home/httpd/lib/perl/Apache/lonlogin.pm</p>
        !          1341:         </td>
        !          1342:         <td class="Normal"> 
        !          1343:           <p>login screen</p>
        !          1344:         </td>
        !          1345:       </tr>
        !          1346:       <tr> 
        !          1347:         <td class="Normal"> 
        !          1348:           <p>SOURCE: loncom/auth/lonlogout.pm<br>
        !          1349:             TARGET: home/httpd/lib/perl/Apache/lonlogout.pm</p>
        !          1350:         </td>
        !          1351:         <td class="Normal"> 
        !          1352:           <p>logout</p>
        !          1353:         </td>
        !          1354:       </tr>
        !          1355:       <tr> 
        !          1356:         <td class="Normal"> 
        !          1357:           <p>SOURCE: loncom/lonnet/perl/lonrep.pm<br>
        !          1358:             TARGET: home/httpd/lib/perl/Apache/lonrep.pm</p>
        !          1359:         </td>
        !          1360:         <td class="Normal"> 
        !          1361:           <p>replication</p>
        !          1362:         </td>
        !          1363:       </tr>
        !          1364:       <tr> 
        !          1365:         <td class="Normal"> 
        !          1366:           <p>SOURCE: loncom/auth/lonroles.pm<br>
        !          1367:             TARGET: home/httpd/lib/perl/Apache/lonroles.pm</p>
        !          1368:         </td>
        !          1369:         <td class="Normal"> 
        !          1370:           <p>This perl handling module reads in the available roles available 
        !          1371:             for a LON-CAPA user (different courses, different privileges, etc) 
        !          1372:             and produces a form-element HTML page which allows the user to select 
        !          1373:             which role he wishes to exercise in the LON-CAPA system. For instance, 
        !          1374:             a user may want to select between being a student in a thermodynamics 
        !          1375:             physics course or a teaching assistant for an introductory calculus 
        !          1376:             class.</p>
        !          1377:         </td>
        !          1378:       </tr>
        !          1379:       <tr> 
        !          1380:         <td class="Normal"> 
        !          1381:           <p>SOURCE: loncom/interface/lonindexer.pm<br>
        !          1382:             TARGET: home/httpd/lib/perl/Apache/lonindexer.pm</p>
        !          1383:         </td>
        !          1384:         <td class="Normal"> 
        !          1385:           <p>cross server filesystem browser</p>
        !          1386:         </td>
        !          1387:       </tr>
        !          1388:       <tr> 
        !          1389:         <td class="Normal"> 
        !          1390:           <p>SOURCE: loncom/interface/groupsort.pm<br>
        !          1391:             TARGET: home/httpd/lib/perl/Apache/groupsort.pm</p>
        !          1392:         </td>
        !          1393:         <td class="Normal"> 
        !          1394:           <p>Implements a second phase of importing multiple resources into the 
        !          1395:             RAT. Allows for reordering the sequence of resources.</p>
        !          1396:         </td>
        !          1397:       </tr>
        !          1398:       <tr> 
        !          1399:         <td class="Normal"> 
        !          1400:           <p>SOURCE: loncom/lonnet/perl/lonnet.pm<br>
        !          1401:             TARGET: home/httpd/lib/perl/Apache/lonnet.pm</p>
        !          1402:         </td>
        !          1403:         <td class="Normal"> 
        !          1404:           <p>This file is an interface to the lonc processes of the LON-CAPA network 
        !          1405:             as well as set of elaborated functions for handling information necessary 
        !          1406:             for navigating through a given cluster of LON-CAPA machines within 
        !          1407:             a domain. There are over 40 specialized functions in this module which 
        !          1408:             handle the reading and transmission of metadata, user information 
        !          1409:             (ids, names, environments, roles, logs), file information (storage, 
        !          1410:             reading, directories, extensions, replication, embedded styles and 
        !          1411:             descriptors), educational resources (course descriptions, section 
        !          1412:             names and numbers), url hashing (to assign roles on a url basis), 
        !          1413:             and translating abbreviated symbols to and from more descriptive phrases 
        !          1414:             or explanations.</p>
        !          1415:         </td>
        !          1416:       </tr>
        !          1417:       <tr> 
        !          1418:         <td class="Normal"> 
        !          1419:           <p>SOURCE: loncom/homework/lectureonline.lcpm<br>
        !          1420:             TARGET: home/httpd/html/res/adm/includes/lectureonline.lcpm</p>
        !          1421:         </td>
        !          1422:         <td class="Normal"> 
        !          1423:           <p>Intended for providing perl functions for the &lt;script&gt;&lt;/script&gt; 
        !          1424:             environment in a problem that was converted from lectureonline.</p>
        !          1425:         </td>
        !          1426:       </tr>
        !          1427:       <tr> 
        !          1428:         <td class="Normal"> 
        !          1429:           <p>SOURCE: loncom/homework/default_homework.lcpm<br>
        !          1430:             TARGET: home/httpd/html/res/adm/includes/default_homework.lcpm</p>
        !          1431:         </td>
        !          1432:         <td class="Normal"> 
        !          1433:           <p>Provides many functions for the &lt;script&gt; environment in a .problem. 
        !          1434:             Functions are documented in CVS:loncapa/doc/homework/homework5.html.</p>
        !          1435:         </td>
        !          1436:       </tr>
        !          1437:     </table>
        !          1438:   </div>
        !          1439: </div>
        !          1440: </body>
        !          1441: </html>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>