Diff for /doc/gutshtml/SessionTwo.html between versions 1.1 and 1.2

version 1.1, 2002/06/28 20:30:29 version 1.2, 2003/07/22 14:47:00
Line 1 Line 1
 <html> <head> <meta name=Title content="Session Two: Apache Handlers (loncapa_apache"> <meta http-equiv=Content-Type content="text/html; charset=macintosh"> <title>Session Two: Apache Handlers (loncapa_apache</title> <style><!-- .Section1 {page:Section1;} .Section2 {page:Section2;} --> </style> </head> <body bgcolor=#FFFFFF class="Normal" lang=EN-US> <div class=Section1>  <h2>Session Two: Apache Handlers (loncapa_apache.conf), Authentication and Access    Control, Session Environment (Matthew)</h2>  <h3><a name="_Toc470397993"></a><a name="_Toc514840845"></a><a name="_Toc421867046"><span>Server Content Resource Areas</span></a></h3>  <p>Internally, all resources are identified primarily by their URL.&nbsp; Different    logical areas of the server are distinguished by the beginning part of the    URL: </p>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/adm: </span>publicly available content,      logos, manual pages, etc.<i></i></li>  </ul>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/res/<i>domainname</i></span><span     style='font-family:"Courier New"'>/<i>authorname</i></span><span     style='font-family:"Courier New"'>/..: </span>the resource area, holding      course maps, HTML pages, homework, movies, applets, etc. Access to these      files is restricted by the cookie-based authentication mechanism. Content      in this area will be served by type-dependent handlers, for example, one      handlers to serve homework problems, and another one for TeX resources.      The structure of this area of the server is exactly the same on every server,      even though not all resources might be present everywhere.</li>  </ul>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/raw/<i>domainname</i></span><span     style='font-family:"Courier New"'>/<i>authorname</i></span><span     style='font-family:"Courier New"'>/..: </span>internally, this is just a      symbolic link to the <span style='font-family:"Courier New"'>res</span>      directory, however, no content handlers are called when serving a resource      and access is controlled by IP rather than cookies. This structure is used      for replication of resources between servers.</li>  </ul>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/~<i>authorname</i></span><span     style='font-family:"Courier New"'>/.., /priv<i>/authorname</i></span><span     style='font-family:"Courier New"'>: </span>the content construction space.<span     style='font-family:"Courier New"'> </span>This is normal UNIX filespace,      which however can only by viewed on the web by the authors themselves through      the cookie based authentication. Content handlers are active for this space.      This space can be mounted on other UNIX machines, as well as AppleShare      and Windows. Below the <span style='font-family:"Courier New"'><i>authorname</i></span>,      this directory has the same structure as the resource space of the author.</li>  </ul>  <ul type=disc>    <li><span     style='font-family:"Courier New"'>/lon-status/..: </span>LON-CAPA status      information Ð behind basic http authentication so it is not dependent on      system functions</li>  </ul>  <p>Authors can only write-access the<i> </i><span style='font-family:"Courier New";font-style:normal'>/~</span><span style='font-family:"Courier New"'><i>authorname</i></span><span style='font-family:"Courier New"'>/</span> space. They can copy resources into    the resource area through the publication step, and move them back through    a retrieve step. Authors do not have direct write-access to their resource    space.</p>  <h3><a name="_Toc514840846"></a><a name="_Toc421867047">Apache Request Cycle    and Handlers</a></h3>  <p>The standard mode in which the Apache web server is used is that a URL corresponds    to some static file on the file system, which then more or less gets sent    out as-is. Slight deviations from that simple principle are however already    the directory listing function, virtual servers, and the cgi-bin directory.    In the latter case, Apache executes the file in a new process and provides    both the input to the process in the environment, and routes the output to    the client. Other deviations are the error messages.</p>  <p>In a more general view, URLs to Apache are URIs (Uniform Resource Identifiers),    which may are may not correspond to a physical file, which in turn may or    may not be sent out as-is.</p>  <p>As a request for a URI gets sent to the Apache server, it goes through several    phases. At each phase (ÒstageÓ) along the process, handler modules can be    defined to deal with the request. Details about these phases are given in    the Eagle book Chapter 3 (page 60).</p>  <p>These handler modules are not like cgi-scripts executed in a separate process,    but are dynamically linked into the Apache child processes themselves Ð they    run inside of Apache. The mod_perl mechanism in addition links the Perl interpreter    into the Apache child process. Modules are pre-interpreted (ÒcompiledÓ) by    the Perl interpreter when they are first loaded, and the pre-interpreted code    stays permanently in the memory allocated to that Apache child process. The    result is a significant speed-up, and through the flexible mechanism of module    registration and different stages of the process, a high degree of customizability.</p>  <p>LON-CAPA does not use Apache::Registry, and so in addition avoids the unnecessary    overhead of emulating a cgi-environment within the handlers. Instead, it makes    direct use of the Apache Perl API (Chapter 9, Eagle book).&nbsp; </p>  <h3><a name="_Toc514840847"></a><a name="_Toc421867048">Handler Definition</a></h3>  <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>.    LON-CAPA only defines handlers at the (in order) header-parser, access control,    and response phase (figure 3-3 Eagle book). In the header-parser phase, the    replication handler is run, and in the access-control phase, the various access-handlers.    Future handlers will mostly be implemented in the response phase.<b> Fig.    1.2.2</b><span style='font-weight:normal'> shows excerpts of the configuration    script </span><span style='font-size:9.0pt;font-family:"Courier New"'>/etc/httpd/loncapa_apache.conf</span>    for these modules.</p>  <div style='border:solid windowtext .5pt;padding:31.0pt 31.0pt 31.0pt 31.0pt'>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'># -------------------------------------------------------------      Access Handlers</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res.*&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      Apache::lonacc</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHeaderParserHandler Apache::lonrep</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      403 /adm/login</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      404 /adm/notfound.html</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      406 /adm/roles</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/priv.*&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      Apache::lonconstruct</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      403 /adm/login</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      404 /adm/notfound.html</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      406 /adm/unauthorized.html</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/raw.*&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::lonracc</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/\~.*&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      403 /adm/login</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      404 /adm/notfound.html</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      406 /adm/unauthorized.html</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>AllowOverride None</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span><span style='font-size:16.0pt;font-family:"Courier New"'></span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'># ---------------------------------------------      Resource Space Content Handlers</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*/$&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonindexer</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.tex$&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lontex</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.page$&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonpage</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(xml|html|htm|xhtml|xhtm)$&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonxml</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(problem|exam|quiz|assess|survey|form)$&quot;&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonhomework</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'># --------------------------------------------------------------      Admin Programs</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/roles&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      Apache::lonacc</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonroles</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      403 /adm/login</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/login&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonlogin</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/annotations&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      Apache::lonacc</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::admannotations</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      403 /adm/login</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp;      500 /adm/errorhandler</span></p>    <p style='border:none;padding:0in;'><span style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>    <p style='border:none;padding:0in;'><span style='font-size:14.0pt;font-family:"Courier New"'><b>É etc É</b></span></p>  </div>  <p><span style='font-size:14.0pt'><b>Fig. 1.2.2</b></span><span style='font-size:14.0pt'> Ð Excerpts of </span><span style='font-size:14.0pt; font-family:"Courier New"'>loncapa_apache.conf</span></p>  <h3><a name="_Toc514840849"></a><a name="_Toc421867049">Authentication Overview</a></h3>  <p>A user can log into any server in the network and run sessions. The server    responsible for initially authenticating the user is the userÕs homeserver.</p>  <p>When a user first accesses a server within a browser session, he or she is    challenged to provide authentication information in the form of username,    password and domain Ð this is done by <span style='font-family: "Courier New"'>lonlogin</span>, which is the <span style='font-family:"Courier New"'>error_document</span>    for <span style='font-family:"Courier New"'>lonacc</span> and <span style='font-family:"Courier New"'>loncacc </span>(the normal authentication handlers).    When the server receives that information, it asks all library servers in    the domain that the user specified to validate the information Ð this is done    by <span style='font-family:"Courier New"'>lonauth</span>. </p>  <p>The userÕs home server will answer with<i> </i><span style='font-family:"Courier New";font-style:normal'>authorized</span> or <span style='font-family:"Courier New"'>non_authorized</span>, all others with <span style='font-family:"Courier New"'>unknown_user</span>. If one server authorizes    the user, a cookie is returned to the user by <span style='font-family:"Courier New"'>lonauth</span>    and the session is initialized on the local server by establishing the session    environment file. If a server sends<i> </i><span style='font-family:"Courier New"; font-style:normal'>non_authorized</span>, the user is rejected.&nbsp; <b>Fig.    1.3.1</b><span style='font-weight:normal'> illustrates this process.</span></p> </div> <br clear=ALL style='page-break-before:always;'> <div class=Section2>  <div class=Section3>    <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>      <p style='border:none;padding:0in'>Domain</p>      <p style='border:none;padding:0in'> <span style='font-family:Wingdings'>ˆ</span>        username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library        Server</b></p>      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span>        unknown_user <span style='font-family:Wingdings'>§</span></p>      <p style='border:none;padding:0in'> |</p>      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>ˆ</span>        username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library        Server</b></p>      <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span>        authorized <span style='font-family:Wingdings'>§</span></p>      <p style='border:none;padding:0in'> |</p>      <p style='border:none;padding:0in'><b>User</b><span style='font-weight:normal'> </span><span style='font-family:Wingdings'>ˆ</span>        username,password,domain <span style='font-family:Wingdings'>ˆ</span>        <b>Server </b></p>      <p style='border:none;padding:0in'><b> </b><span style='font-family:Wingdings'><b>§</b></span><b> </b><span style='font-weight: normal'>cookie</span><b> </b><span style='font-family:Wingdings'><b>§</b></span><b>        </b><span style='font-weight:normal'>store session information for valid        cookies</span></p>    </div>    <p><span style='font-size:14.0pt'><b>Fig. 1.3.1</b></span><span style='font-size:14.0pt'> Ð Illustration of Authentication Mechanism</span></p>    <p class=MsoBodyText style='line-height:normal'><span style='font-size:10.0pt'>At      all subsequent interactions, the client sends the cookie back to the server      Ð if the cookie is missing or invalid, the user is re-challenged for login      information. Handlers are </span><span style='font-size:10.0pt;font-family: "Courier New"'>lonacc</span><span style='font-size:10.0pt'> and </span><span style='font-size:10.0pt;font-family:"Courier New"'>loncacc</span><span style='font-size:10.0pt'>. Cookies expire by closing the browser and are invalidated      when the user logs out or logs in a second time into the same machine from      another browser<i>.</i></span></p>    <h3><a name="_Toc514840850"></a><a name="_Toc421867050">Authentication Mechanisms,      User Data, Passwords</a></h3>    <p>On the library servers, it is a routine in<span style='font-family:"Courier New"'> lond </span>that does the authentication. It      checks if this is the userÕs homeserver, checks the password, and answers<span style='font-family:"Courier New"'> </span>with <span style='font-family:"Courier New"'>Òunknown_userÓ,      ÒauthorizedÓ </span>or<span style='font-family:"Courier New"'> Ònon_authorizedÓ.      </span></p>    <p class=MsoHeader>Determination if this is the userÕs homeserver is done      by the presence of his or her password file in</p>    <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 style='font-family:"Courier New"'>/<i>2.char</i></span><span style='font-family: "Courier New"'>/<i>3.char</i></span><span style='font-family:"Courier New"'>/<i>username</i></span><span style='font-family:"Courier New"'>/passwd</span></p>    <p class=MsoHeader>for example</p>    <p><span style='font-family:"Courier New"'> /home/httpd/lonUsers/msu/s/m/i/smith/passwd</span></p>    <p>The password is stored in the format <span style='font-family: "Courier New"'>mechanism:info, </span>where mechanism can currently be <span style='font-family:"Courier New"'>unix</span>, <span style='font-family:"Courier New"'>krb4</span>      or <span style='font-family:"Courier New"'>internal</span>. For <span style='font-family:"Courier New"'>krb4</span>, the <span style='font-family: "Courier New"'>info</span> is the Kerberos domain, for <span style='font-family: "Courier New"'>internal</span> it is the crypt password itself. <span style='font-family:"Courier New"'>unix</span> simply authenticates against <span style='font-family:"Courier New"'>/etc/passwd</span>. </p>    <h3><a name="_Toc514840851"></a><a name="_Toc421867051">Environment</a></h3>    <p>The access handlers Ð coming early in the Apache request cycle Ð also set      up the session environment. The cookie received from the web client is a      pointer to the session profiles, which are stored in a directory for temporary      files <span style='font-family:"Courier New"'>(/home/httpd/lonIDs/</span>).    </p>    <p class=H5><span style='layout-grid-mode: both'>Standard Components</span></p>    <p>These are the standard components of the environment added by Apache and      the shell.</p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>AUTH_TYPE ----      Basic</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>DOCUMENT_ROOT ----      /home/httpd/html</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>GATEWAY_INTERFACE      ---- CGI-Perl/1.1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT ----      image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_CHARSET      ---- iso-8859-1,*,utf-8</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_ENCODING      ---- gzip</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_LANGUAGE      ---- en,pdf</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_CONNECTION      ---- Keep-Alive</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_COOKIE ----      SITESERVER=ID=cbc6695505253a2ff0e7bb7110574d90; lonID=kortemey_990461714_msu_msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_HOST ----      zaphod.lite.msu.edu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_REFERER ----      </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_USER_AGENT      ---- Mozilla/4.75 (Macintosh; U; PPC)</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>MOD_PERL ---- mod_perl/1.21</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>PATH ---- /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bi&curren;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>QUERY_STRING ----      </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_ADDR ----      35.8.63.7</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_PORT ----      1844</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_USER ----      lonadm</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_METHOD      ---- GET</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_URI ----      /adm/test</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_FILENAME      ---- /home/httpd/html/adm/test</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_NAME ----      /adm/test</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADDR ----      35.8.63.51</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADMIN ----      korte@lite.msu.edu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_NAME ----      zaphod.lite.msu.edu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PORT ----      80</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PROTOCOL      ---- HTTP/1.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SIGNATURE      ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SOFTWARE      ---- Apache/1.3.9 (Unix) (Red Hat/Linux) mod_perl/1.21</span></p>    <p class=H5><span style='layout-grid-mode: both'>Resource Access Control</span></p>    <p>The following values are set by traceroute at the initialization of the      course and are used by access handlers to check if a resource can be served      to a user.</p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.0      ---- 0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.1      ---- 0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.      ---- &amp;:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp      ---- &amp;welcome267.htm:1&amp;welcomelbs267.htm:0&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/Spectrum      ---- &amp;s.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/chain      ---- &amp;chain.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/coulomb      ---- &amp;orbit.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/induct      ---- &amp;faraday.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/conversions      ----</span></p>    <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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap13      ---- &amp;cd371.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap16      ----</span></p>    <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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17      ----</span></p>    <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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17/calculus      ---- &amp;calc.htm:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18      ----</span></p>    <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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/demo      ----</span></p>    <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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/problems      ----</span></p>    <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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a      ---- &amp;kap18a.sequence:1&amp;</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a/problems      ----</span></p>    <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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'><i>É etc for all      resources in the course É</i></span></p>    <p class=H5><span style='layout-grid-mode: both'>Browser Information</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.mathml      ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.os ----      mac</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.type ----      netscape</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.version      ---- 4.75</span></p>    <p class=H5><span style='layout-grid-mode: both'>Cached Information about Courses and their Description</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.description      ---- lbs267L Lab SS01</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.domain      ---- msu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.home      ---- msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.last_cache      ---- 990461725</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.num      ---- 12679c3ed543a16msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.url      ---- msu/mmp/lbs267l.sequence</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.description      ---- lbs267 Lecture SS01</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.domain      ---- msu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.home      ---- msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.last_cache      ---- 990461728</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.num      ---- 12679c3ed543a25msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.url      ---- msu/mmp/lbs267.sequence</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.description      ---- Demo Course</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.domain      ---- msu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.home      ---- msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.last_cache      ---- 990461725</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.num      ---- 12679c3ed543a37msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.url      ---- msu/korte/demo.sequence</span></p>    <p class=H5><span style='layout-grid-mode: both'>Information Imported from the Environment Database File of the User</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.cake      ---- Cheese Cake</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.color      ---- green</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.firstname      ---- Gerd</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.id      ---- z12345678</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.lastname      ---- Kortemeyer</span></p>    <p><b>Information about the Request</b></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>httpref./res/msu/mmp/      ---- /res/msu/mmp/welcome267.htm</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.ambiguous      ---- adm/pages/index.html</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.fn      ---- /home/httpd/perl/tmp/kortemey_msu_12679c3ed543a25msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.id      ---- msu_12679c3ed543a25msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.sec      ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.uri      ---- msu/mmp/lbs267.sequence</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.filename      ---- /home/httpd/html/adm/test</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.host ----      zaphod.lite.msu.edu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.role ----      cc./msu/12679c3ed543a25msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.state ----      published</span></p>    <p class=H5><span style='layout-grid-mode: both'>Information about the User</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.domain ----      msu</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.environment      ---- /home/httpd/lonIDs/kortemey_990461714_msu_msul1.id</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.home ----      msul1</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.login.time      ---- 990461714</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.name ----      kortemey</span></p>    <p class=H5><span style='layout-grid-mode: both'>Information about User Roles and Privileges</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./      ---- :sma&amp;F:gan&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./msu/      ---- :cca&amp;IK:are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./      ---- :sma&amp;F:gan&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/      ---- :are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/korte      ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./      ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/      ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/12679c3ed543a16msul1      ---- :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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./      ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/      ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/12679c3ed543a25msul1      ---- :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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./      ---- :sma&amp;F:mcr&amp;F:bre&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/      ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/12679c3ed543a37msul1      ---- :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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./      ---- :sma&amp;F:mcr&amp;F:gan&amp;F:bre&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/      ---- :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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a16msul1      ---- :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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a25msul1      ---- :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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a37msul1      ---- :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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/korte      ---- </span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./      ---- :sma&amp;F</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./msu/      ---- :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>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.au./msu/      ---- 964531839.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.ca./msu/korte      ---- .</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a16msul1      ---- 964531839.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a25msul1      ---- 964531839.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a37msul1      ---- 964531839.0</span></p>    <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.dc./msu/      ---- 964531839.0</span></p>    <h2>&nbsp;</h2>    <h3><a name="_Toc421867052">Handler Reference: LON-CAPA and the 77 Web Perl      Modules</a></h3>    <p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><span style='font-style:normal'> </span></p>    <p>LON-CAPA provides many different web services for coordinating online educational      interactions. Currently, these web services are made available by 77 different      perl modules. The invocation of these perl modules is many times due to      the URI format based on entries inside <tt><span style='font-family: "Courier New"'>/etc/httpd/conf/loncapa_apache.conf</span></tt>. </p>    <p>Throughout this technical manual, various web perl modules are described      in detail. Here is a summary of all the 77 web perl modules: </p>    <table border=1 cellpadding=0>      <tr>        <td class="Normal">          <p align=center style='text-align:center'><b>Name/Location</b></p>        </td>        <td class="Normal">          <p align=center style='text-align:center'><b>Description</b></p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonwrapper.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonwrapper.pm</p>        </td>        <td class="Normal">          <p>Wrapper for external and binary files as standalone resources. Edit            handler for rat maps; TeX content handler.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/publisher/loncfile.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncfile.pm</p>        </td>        <td class="Normal">          <p>Provides web-based functionality for file copy, rename, mkdir, etc,            in the construction space menu.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonstatistics.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonstatistics.pm</p>        </td>        <td class="Normal">          <p>Handler to show statistics on solving LON-CAPA problems.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/publisher/londiff.pm<br>            TARGET: home/httpd/lib/perl/Apache/londiff.pm</p>        </td>        <td class="Normal">          <p>Handler to show difference between two files.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/publisher/lonupload.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonupload.pm</p>        </td>        <td class="Normal">          <p>Handler to upload files through browser into construction space.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/essayresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/essayresponse.pm</p>        </td>        <td class="Normal">          <p>Handler to evaluate essay (ungraded) style responses.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/externalresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/externalresponse.pm</p>        </td>        <td class="Normal">          <p>Handler to evaluate externally graded responses.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/loncapagrade.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncapagrade.pm</p>        </td>        <td class="Normal">          <p>Handler to evaluate externally graded responses.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/publisher/lonpubdir.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpubdir.pm</p>        </td>        <td class="Normal">          <p>Handler to publish directories.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/publisher/lonretrieve.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonretrieve.pm</p>        </td>        <td class="Normal">          <p>Handler to retrieve old versions from resource space.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/edit.pm<br>            TARGET: home/httpd/lib/perl/Apache/edit.pm</p>        </td>        <td class="Normal">          <p>Helper functions when in homework edit mode.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonmeta.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonmeta.pm</p>        </td>        <td class="Normal">          <p>Metadata display handler.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonambiguous.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonambiguous.pm</p>        </td>        <td class="Normal">          <p>Handler to resolve ambiguous file locations.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonratparms.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonratparms.pm</p>        </td>        <td class="Normal">          <p>Handler to set resource parameters inside of the RAT based on metadata.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonsequence.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonsequence.pm</p>        </td>        <td class="Normal">          <p>Handler for showing sequence objects of educational resources.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/loncreatecourse.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncreatecourse.pm</p>        </td>        <td class="Normal">          <p>Allows domain coordinators to create new courses and assign course            coordinators.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/loncreateuser.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncreateuser.pm</p>        </td>        <td class="Normal">          <p>Allows users to within their own privileges create/edit users and            give them roles.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonchart.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonchart.pm</p>        </td>        <td class="Normal">          <p>Produces simple LectureOnline-like student assessment performance            chart</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/loncommon.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncommon.pm</p>        </td>        <td class="Normal">          <p>Makes a table out of the previous attempts. Inputs result_from_symbread,            user, domain, home_server, course_id.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/grades.pm<br>            TARGET: home/httpd/lib/perl/Apache/grades.pm</p>        </td>        <td class="Normal">          <p>Handles the viewing of grades.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/imageresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/imageresponse.pm</p>        </td>        <td class="Normal">          <p>Coordinates the response to clicking an image.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/optionresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/optionresponse.pm</p>        </td>        <td class="Normal">          <p>Handles tags associated with showing a list of options.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/outputtags.pm<br>            TARGET: home/httpd/lib/perl/Apache/outputtags.pm</p>        </td>        <td class="Normal">          <p>Handles tags associated with output. Seems to relate to due dates            of the assignment.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lontest.pm<br>            TARGET: home/httpd/lib/perl/Apache/lontest.pm</p>        </td>        <td class="Normal">          <p>Used for debugging and testing the LON-CAPA system.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/radiobuttonresponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/radiobuttonresponse.pm</p>        </td>        <td class="Normal">          <p>Handles multiple-choice style responses.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonassignments.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonassignments.pm</p>        </td>        <td class="Normal">          <p>Handles processing of assignments.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/loncommunicate.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncommunicate.pm</p>        </td>        <td class="Normal">          <p>Will be the access handler to email sending, as well as the planned            chatrooms, etc.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonerrorhandler.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonerrorhandler.pm</p>        </td>        <td class="Normal">          <p>Handles errors.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonevaluate.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonevaluate.pm</p>        </td>        <td class="Normal">          <p>Handles evaluation.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonfeedback.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonfeedback.pm</p>        </td>        <td class="Normal">          <p>Handles feedback from students to instructors and system administrators.            Provides a screenshot of the current resource, as well as previous            attempts if the resource was a homework. Used by lonmsg.pm.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonnavmaps.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonnavmaps.pm</p>        </td>        <td class="Normal">          <p>Handles navigational maps.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonpreferences.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpreferences.pm</p>        </td>        <td class="Normal">          <p>Handles user preferences associated with customizing the online LON-CAPA            educational environment.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonprintout.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonprintout.pm</p>        </td>        <td class="Normal">          <p>Handles the production of printable files and resources.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonsearchcat.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonsearchcat.pm</p>        </td>        <td class="Normal">          <p>Handles a searchable catalogue.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/londropadd.pm<br>            TARGET: home/httpd/lib/perl/Apache/londropadd.pm</p>        </td>        <td class="Normal">          <p>Allows course coordinators to upload courselists in different formats,            and automatically create users (if they do not exist already), assign            them the role of student in a course, and add them to the classlist.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonmsg.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonmsg.pm</p>        </td>        <td class="Normal">          <p>lonmsg.pm has several functions to send and receive internal messages.            author_res_msg - send message to resource author. user_crit_msg -            send a critical message to a user. A critical message will require            acknowledgment by the recipient and the sender will be notified. user_crit_received            - routine to trigger acknowledgment. statuschange - change the status            of a message (read, replied, forwarded, etc). The handler also displays            messages, has routines to reply, etc.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/hint.pm<br>            TARGET: home/httpd/lib/perl/Apache/hint.pm</p>        </td>        <td class="Normal">          <p>This handler coordinates the delivery of hints to students working            on LON-CAPA problems and assignments.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonspreadsheet.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonspreadsheet.pm</p>        </td>        <td class="Normal">          <p>Spreadsheets are completely web-based. They exist on the level of            a whole course, a student, and individual assessments.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonparmset.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonparmset.pm</p>        </td>        <td class="Normal">          <p>Handler to resolve ambiguous file locations</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/publisher/lonconstruct.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonconstruct.pm</p>        </td>        <td class="Normal">          <p>Page wrapper for handling construction space.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/publisher/lonpublisher.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpublisher.pm</p>        </td>        <td class="Normal">          <p>Publishes an LON-CAPA educational resource complete with metadata            (authorship, language, copyright, creation date, etc).</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonmenu.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonmenu.pm</p>        </td>        <td class="Normal">          <p>Has routines which control the remote control.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonpageflip.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpageflip.pm</p>        </td>        <td class="Normal">          <p>Deals with forward, backward, and other page flips.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonratedt.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonratedt.pm</p>        </td>        <td class="Normal">          <p>Builds up frame set and loads in the right thing.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/html/res/adm/pages/homeworkmenu.html<br>            TARGET: home/httpd/html/res/adm/pages/homeworkmenu.html</p>        </td>        <td class="Normal">          <p>Homework remote control.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/html/res/adm/pages/annotator/admannotations.pm<br>            TARGET: home/httpd/lib/perl/Apache/admannotations.pm</p>        </td>        <td class="Normal">          <p>This will take annotations and then plug them into a page.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/html/res/adm/pages/bookmarkmenu/admbookmarks.pm<br>            TARGET: home/httpd/lib/perl/Apache/admbookmarks.pm</p>        </td>        <td class="Normal">          <p>This will take bookmarks and get/write/display them for the LON-CAPA            user interface.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonratsrv.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonratsrv.pm</p>        </td>        <td class="Normal">          <p>Handler that takes output from RAT and stores it on disk. Handles            the upper hidden frame of the added window that comes up in RAT. (3            frames come up in RAT server, code, and output. This module handles            server connection.)</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonpage.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonpage.pm</p>        </td>        <td class="Normal">          <p>bundles pages into one page</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: rat/lonuserstate.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonuserstate.pm</p>        </td>        <td class="Normal">          <p>compile course into binary data structure (in loncom/rat)</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/lontex.pm<br>            TARGET: home/httpd/lib/perl/Apache/lontex.pm</p>        </td>        <td class="Normal">          <p>Handler for tex files (somewhere in modules)</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/lontexconvert.pm<br>            TARGET: home/httpd/lib/perl/Apache/lontexconvert.pm</p>        </td>        <td class="Normal">          <p>Access to tth/ttm</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/lonxml.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonxml.pm</p>        </td>        <td class="Normal">          <p>XML Parsing Module</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/lonplot.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonplot.pm</p>        </td>        <td class="Normal">          <p>XML-based plotter of graphs</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/style.pm<br>            TARGET: home/httpd/lib/perl/Apache/style.pm</p>        </td>        <td class="Normal">          <p>Style Parsing Module</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/londefdef.pm<br>            TARGET: home/httpd/lib/perl/Apache/londefdef.pm</p>        </td>        <td class="Normal">          <p>Tags Default Definition Module</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/run.pm<br>            TARGET: home/httpd/lib/perl/Apache/run.pm</p>        </td>        <td class="Normal">          <p>used to prevent poorly written problems from causing lingering after            effects</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/scripttag.pm<br>            TARGET: home/httpd/lib/perl/Apache/scripttag.pm</p>        </td>        <td class="Normal">          <p>implements &lt;script&gt;, &lt;scriptlib&gt;, &lt;parserlib&gt;,            and &lt;import&gt;</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/randomlabel.pm<br>            TARGET: home/httpd/lib/perl/Apache/randomlabel.pm</p>        </td>        <td class="Normal">          <p>Interface for producing applet code which randomizes the labelling            of an image.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/lonhomework.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonhomework.pm</p>        </td>        <td class="Normal">          <p>handles requests for output, evaluation, and alteration of a homework            resource</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/inputtags.pm<br>            TARGET: home/httpd/lib/perl/Apache/inputtags.pm</p>        </td>        <td class="Normal">          <p>produces HTML input tags (&lt;INPUT&gt;) for rendering homework resources</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/structuretags.pm<br>            TARGET: home/httpd/lib/perl/Apache/structuretags.pm</p>        </td>        <td class="Normal">          <p>produces HTML tags necessary for structuring the presentation of            homework resources</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/response.pm<br>            TARGET: home/httpd/lib/perl/Apache/response.pm</p>        </td>        <td class="Normal">          <p>defines different types of responses given to student as well as            syntax for producing response values</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/caparesponse/caparesponse.pm<br>            TARGET: home/httpd/lib/perl/Apache/caparesponse.pm</p>        </td>        <td class="Normal">          <p>handles request to the CAPA homework processing engine</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/xml/Safe.pm<br>            TARGET: home/httpd/lib/perl/Safe.pm</p>        </td>        <td class="Normal">          <p>Meant to safely substitute for CPAN version of Safe. Allows for safely            executing embedded perl comands in a way that does not threaten the            operating system.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/auth/localauth.pm<br>            TARGET: home/httpd/lib/perl/localauth.pm</p>        </td>        <td class="Normal">          <p>Local authentication mechanism (meant to be customized).</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/auth/lonacc.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonacc.pm</p>        </td>        <td class="Normal">          <p>(This module, like loncacc.pm also authenticates with cookies.) lonacc.pm            coordinates access to a wide range of administrative-type functions            (e.g. roles, logout, annotations, and bookmarks) as well as coordinating            access to educational resources.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/auth/lonracc.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonracc.pm</p>        </td>        <td class="Normal">          <p>access handler for file transfers</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/auth/loncacc.pm<br>            TARGET: home/httpd/lib/perl/Apache/loncacc.pm</p>        </td>        <td class="Normal">          <p>This module provides access to an educational resource construction            area. This module is invoked by the URL-related pattern syntax LocationMatch            &quot;^/priv.*&quot; or LocationMatch &quot;^/\~.*&quot;. Authentication            of user identity is coordinated through cookies. The abbreviation            &quot;cacc&quot; corresponds to &quot;construction-space access&quot;).            If the cookie handle is invalid, then this module returns a forbidden            status and makes appropriate log entries. If the cookie handle is            valid, status is determined to be okay (and, for the &quot;priv&quot;-type            access, the resource is delivered by the lonconstruct module).</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/auth/lonauth.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonauth.pm</p>        </td>        <td class="Normal">          <p>authenticate, set up session environment</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/auth/lonlogin.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonlogin.pm</p>        </td>        <td class="Normal">          <p>login screen</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/auth/lonlogout.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonlogout.pm</p>        </td>        <td class="Normal">          <p>logout</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/lonnet/perl/lonrep.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonrep.pm</p>        </td>        <td class="Normal">          <p>replication</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/auth/lonroles.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonroles.pm</p>        </td>        <td class="Normal">          <p>This perl handling module reads in the available roles available            for a LON-CAPA user (different courses, different privileges, etc)            and produces a form-element HTML page which allows the user to select            which role he wishes to exercise in the LON-CAPA system. For instance,            a user may want to select between being a student in a thermodynamics            physics course or a teaching assistant for an introductory calculus            class.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/lonindexer.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonindexer.pm</p>        </td>        <td class="Normal">          <p>cross server filesystem browser</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/interface/groupsort.pm<br>            TARGET: home/httpd/lib/perl/Apache/groupsort.pm</p>        </td>        <td class="Normal">          <p>Implements a second phase of importing multiple resources into the            RAT. Allows for reordering the sequence of resources.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/lonnet/perl/lonnet.pm<br>            TARGET: home/httpd/lib/perl/Apache/lonnet.pm</p>        </td>        <td class="Normal">          <p>This file is an interface to the lonc processes of the LON-CAPA network            as well as set of elaborated functions for handling information necessary            for navigating through a given cluster of LON-CAPA machines within            a domain. There are over 40 specialized functions in this module which            handle the reading and transmission of metadata, user information            (ids, names, environments, roles, logs), file information (storage,            reading, directories, extensions, replication, embedded styles and            descriptors), educational resources (course descriptions, section            names and numbers), url hashing (to assign roles on a url basis),            and translating abbreviated symbols to and from more descriptive phrases            or explanations.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/lectureonline.lcpm<br>            TARGET: home/httpd/html/res/adm/includes/lectureonline.lcpm</p>        </td>        <td class="Normal">          <p>Intended for providing perl functions for the &lt;script&gt;&lt;/script&gt;            environment in a problem that was converted from lectureonline.</p>        </td>      </tr>      <tr>        <td class="Normal">          <p>SOURCE: loncom/homework/default_homework.lcpm<br>            TARGET: home/httpd/html/res/adm/includes/default_homework.lcpm</p>        </td>        <td class="Normal">          <p>Provides many functions for the &lt;script&gt; environment in a .problem.            Functions are documented in CVS:loncapa/doc/homework/homework5.html.</p>        </td>      </tr>    </table>  </div> </div> </body> </html>  
   
   <html>
   <head>
   <meta name=Title content="Session Two: Apache Handlers (loncapa_apache">
   <meta http-equiv=Content-Type content="text/html; charset=macintosh">
   <title>Session Two: Apache Handlers (loncapa_apache</title>
   <style><!--
   .Section1
    {page:Section1;}
   .Section2
    {page:Section2;}
   -->
   </style>
   </head>
   <body bgcolor=#FFFFFF class="Normal" lang=EN-US>
   <div class=Section1> 
     <h2>Session Two: Apache Handlers (loncapa_apache.conf), Authentication and Access 
       Control, Session Environment (Matthew)</h2>
     <h3><a name="_Toc470397993"></a><a name="_Toc514840845"></a><a
   name="_Toc421867046"><span>Server Content Resource Areas</span></a></h3>
     <p>Internally, all resources are identified primarily by their URL.&nbsp; Different 
       logical areas of the server are distinguished by the beginning part of the 
       URL: </p>
     <ul type=disc>
       <li><span
        style='font-family:"Courier New"'>/adm: </span>publicly available content, 
         logos, manual pages, etc.<i></i></li>
     </ul>
     <ul type=disc>
       <li><span
        style='font-family:"Courier New"'>/res/<i>domainname</i></span><span
        style='font-family:"Courier New"'>/<i>authorname</i></span><span
        style='font-family:"Courier New"'>/..: </span>the resource area, holding 
         course maps, HTML pages, homework, movies, applets, etc. Access to these 
         files is restricted by the cookie-based authentication mechanism. Content 
         in this area will be served by type-dependent handlers, for example, one 
         handlers to serve homework problems, and another one for TeX resources. 
         The structure of this area of the server is exactly the same on every server, 
         even though not all resources might be present everywhere.</li>
     </ul>
     <ul type=disc>
       <li><span
        style='font-family:"Courier New"'>/raw/<i>domainname</i></span><span
        style='font-family:"Courier New"'>/<i>authorname</i></span><span
        style='font-family:"Courier New"'>/..: </span>internally, this is just a 
         symbolic link to the <span style='font-family:"Courier New"'>res</span> 
         directory, however, no content handlers are called when serving a resource 
         and access is controlled by IP rather than cookies. This structure is used 
         for replication of resources between servers.</li>
     </ul>
     <ul type=disc>
       <li><span
        style='font-family:"Courier New"'>/~<i>authorname</i></span><span
        style='font-family:"Courier New"'>/.., /priv<i>/authorname</i></span><span
        style='font-family:"Courier New"'>: </span>the content construction space.<span
        style='font-family:"Courier New"'> </span>This is normal UNIX filespace, 
         which however can only by viewed on the web by the authors themselves through 
         the cookie based authentication. Content handlers are active for this space. 
         This space can be mounted on other UNIX machines, as well as AppleShare 
         and Windows. Below the <span style='font-family:"Courier New"'><i>authorname</i></span>, 
         this directory has the same structure as the resource space of the author.</li>
     </ul>
     <ul type=disc>
       <li><span
        style='font-family:"Courier New"'>/lon-status/..: </span>LON-CAPA status 
         information Ð behind basic http authentication so it is not dependent on 
         system functions</li>
     </ul>
     <p>Authors can only write-access the<i> </i><span
   style='font-family:"Courier New";font-style:normal'>/~</span><span
   style='font-family:"Courier New"'><i>authorname</i></span><span
   style='font-family:"Courier New"'>/</span> space. They can copy resources into 
       the resource area through the publication step, and move them back through 
       a retrieve step. Authors do not have direct write-access to their resource 
       space.</p>
     <h3><a name="_Toc514840846"></a><a name="_Toc421867047">Apache Request Cycle 
       and Handlers</a></h3>
     <p>The standard mode in which the Apache web server is used is that a URL corresponds 
       to some static file on the file system, which then more or less gets sent 
       out as-is. Slight deviations from that simple principle are however already 
       the directory listing function, virtual servers, and the cgi-bin directory. 
       In the latter case, Apache executes the file in a new process and provides 
       both the input to the process in the environment, and routes the output to 
       the client. Other deviations are the error messages.</p>
     <p>In a more general view, URLs to Apache are URIs (Uniform Resource Identifiers), 
       which may are may not correspond to a physical file, which in turn may or 
       may not be sent out as-is.</p>
     <p>As a request for a URI gets sent to the Apache server, it goes through several 
       phases. At each phase (ÒstageÓ) along the process, handler modules can be 
       defined to deal with the request. Details about these phases are given in 
       the Eagle book Chapter 3 (page 60).</p>
     <p>These handler modules are not like cgi-scripts executed in a separate process, 
       but are dynamically linked into the Apache child processes themselves Ð they 
       run inside of Apache. The mod_perl mechanism in addition links the Perl interpreter 
       into the Apache child process. Modules are pre-interpreted (ÒcompiledÓ) by 
       the Perl interpreter when they are first loaded, and the pre-interpreted code 
       stays permanently in the memory allocated to that Apache child process. The 
       result is a significant speed-up, and through the flexible mechanism of module 
       registration and different stages of the process, a high degree of customizability.</p>
     <p>LON-CAPA does not use Apache::Registry, and so in addition avoids the unnecessary 
       overhead of emulating a cgi-environment within the handlers. Instead, it makes 
       direct use of the Apache Perl API (Chapter 9, Eagle book).&nbsp; </p>
     <h3><a name="_Toc514840847"></a><a name="_Toc421867048">Handler Definition</a></h3>
     <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>. 
       LON-CAPA only defines handlers at the (in order) header-parser, access control, 
       and response phase (figure 3-3 Eagle book). In the header-parser phase, the 
       replication handler is run, and in the access-control phase, the various access-handlers. 
       Future handlers will mostly be implemented in the response phase.<b> Fig. 
       1.2.2</b><span style='font-weight:normal'> shows excerpts of the configuration 
       script </span><span style='font-size:9.0pt;font-family:"Courier New"'>/etc/httpd/loncapa_apache.conf</span> 
       for these modules.</p>
     <div style='border:solid windowtext .5pt;padding:31.0pt 31.0pt 31.0pt 31.0pt'> 
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'># ------------------------------------------------------------- 
         Access Handlers</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res.*&quot;&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
         Apache::lonacc</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHeaderParserHandler Apache::lonrep</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         403 /adm/login</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         404 /adm/notfound.html</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         406 /adm/roles</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         500 /adm/errorhandler</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/priv.*&quot;&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
         perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
         Apache::lonconstruct</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         403 /adm/login</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         404 /adm/notfound.html</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         406 /adm/unauthorized.html</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         500 /adm/errorhandler</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/raw.*&quot;&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::lonracc</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/\~.*&quot;&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler Apache::loncacc</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         403 /adm/login</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         404 /adm/notfound.html</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         406 /adm/unauthorized.html</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         500 /adm/errorhandler</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>AllowOverride None</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span><span
   style='font-size:16.0pt;font-family:"Courier New"'></span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'># --------------------------------------------- 
         Resource Space Content Handlers</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*/$&quot;&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonindexer</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.tex$&quot;&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lontex</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/res/.*\.page$&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonpage</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(xml|html|htm|xhtml|xhtm)$&quot;&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonxml</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;LocationMatch &quot;^/(res|\~).*\.(problem|exam|quiz|assess|survey|form)$&quot;&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonhomework</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/LocationMatch&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'># -------------------------------------------------------------- 
         Admin Programs</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/roles&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
         Apache::lonacc</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonroles</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         403 /adm/login</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         500 /adm/errorhandler</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/login&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::lonlogin</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:20.0pt;font-family:"Courier New"'><b>É</b></span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;Location /adm/annotations&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlAccessHandler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
         Apache::lonacc</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>SetHandler perl-script</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>PerlHandler Apache::admannotations</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         403 /adm/login</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>ErrorDocument&nbsp;&nbsp;&nbsp;&nbsp; 
         500 /adm/errorhandler</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:8.0pt;font-family:"Courier New"'>&lt;/Location&gt;</span></p>
       <p style='border:none;padding:0in;'><span
   style='font-size:14.0pt;font-family:"Courier New"'><b>É etc É</b></span></p>
     </div>
     <p><span style='font-size:14.0pt'><b>Fig. 1.2.2</b></span><span
   style='font-size:14.0pt'> Ð Excerpts of </span><span style='font-size:14.0pt;
   font-family:"Courier New"'>loncapa_apache.conf</span></p>
     <h3><a name="_Toc514840849"></a><a name="_Toc421867049">Authentication Overview</a></h3>
     <p>A user can log into any server in the network and run sessions. The server 
       responsible for initially authenticating the user is the userÕs homeserver.</p>
     <p>When a user first accesses a server within a browser session, he or she is 
       challenged to provide authentication information in the form of username, 
       password and domain Ð this is done by <span style='font-family:
   "Courier New"'>lonlogin</span>, which is the <span style='font-family:"Courier New"'>error_document</span> 
       for <span style='font-family:"Courier New"'>lonacc</span> and <span
   style='font-family:"Courier New"'>loncacc </span>(the normal authentication handlers). 
       When the server receives that information, it asks all library servers in 
       the domain that the user specified to validate the information Ð this is done 
       by <span style='font-family:"Courier New"'>lonauth</span>. </p>
     <p>The userÕs home server will answer with<i> </i><span
   style='font-family:"Courier New";font-style:normal'>authorized</span> or <span
   style='font-family:"Courier New"'>non_authorized</span>, all others with <span
   style='font-family:"Courier New"'>unknown_user</span>. If one server authorizes 
       the user, a cookie is returned to the user by <span style='font-family:"Courier New"'>lonauth</span> 
       and the session is initialized on the local server by establishing the session 
       environment file. If a server sends<i> </i><span style='font-family:"Courier New";
   font-style:normal'>non_authorized</span>, the user is rejected.&nbsp; <b>Fig. 
       1.3.1</b><span
   style='font-weight:normal'> illustrates this process.</span></p>
   </div>
   <br
   clear=ALL style='page-break-before:always;'>
   <div class=Section2>
     <div class=Section3>
       <div style='border:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>
         <p style='border:none;padding:0in'>Domain</p>
         <p style='border:none;padding:0in'> <span style='font-family:Wingdings'>ˆ</span> 
           username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library 
           Server</b></p>
         <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span> 
           unknown_user <span style='font-family:Wingdings'>§</span></p>
         <p style='border:none;padding:0in'> |</p>
         <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>ˆ</span> 
           username, password <span style='font-family:Wingdings'>ˆ</span> <b>Library 
           Server</b></p>
         <p style='border:none;padding:0in'> | <span style='font-family:Wingdings'>§</span> 
           authorized <span style='font-family:Wingdings'>§</span></p>
         <p style='border:none;padding:0in'> |</p>
         <p style='border:none;padding:0in'><b>User</b><span
   style='font-weight:normal'> </span><span style='font-family:Wingdings'>ˆ</span> 
           username,password,domain <span style='font-family:Wingdings'>ˆ</span> 
           <b>Server </b></p>
         <p style='border:none;padding:0in'><b> </b><span
   style='font-family:Wingdings'><b>§</b></span><b> </b><span style='font-weight:
   normal'>cookie</span><b> </b><span style='font-family:Wingdings'><b>§</b></span><b> 
           </b><span style='font-weight:normal'>store session information for valid 
           cookies</span></p>
       </div>
       <p><span style='font-size:14.0pt'><b>Fig. 1.3.1</b></span><span
   style='font-size:14.0pt'> Ð Illustration of Authentication Mechanism</span></p>
       <p class=MsoBodyText style='line-height:normal'><span style='font-size:10.0pt'>At 
         all subsequent interactions, the client sends the cookie back to the server 
         Ð if the cookie is missing or invalid, the user is re-challenged for login 
         information. Handlers are </span><span style='font-size:10.0pt;font-family:
   "Courier New"'>lonacc</span><span style='font-size:10.0pt'> and </span><span
   style='font-size:10.0pt;font-family:"Courier New"'>loncacc</span><span
   style='font-size:10.0pt'>. Cookies expire by closing the browser and are invalidated 
         when the user logs out or logs in a second time into the same machine from 
         another browser<i>.</i></span></p>
       <h3><a name="_Toc514840850"></a><a name="_Toc421867050">Authentication Mechanisms, 
         User Data, Passwords</a></h3>
       <p>On the library servers, it is a routine in<span
   style='font-family:"Courier New"'> lond </span>that does the authentication. It 
         checks if this is the userÕs homeserver, checks the password, and answers<span
   style='font-family:"Courier New"'> </span>with <span style='font-family:"Courier New"'>Òunknown_userÓ, 
         ÒauthorizedÓ </span>or<span style='font-family:"Courier New"'> Ònon_authorizedÓ. 
         </span></p>
       <p class=MsoHeader>Determination if this is the userÕs homeserver is done 
         by the presence of his or her password file in</p>
       <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
   style='font-family:"Courier New"'>/<i>2.char</i></span><span style='font-family:
   "Courier New"'>/<i>3.char</i></span><span style='font-family:"Courier New"'>/<i>username</i></span><span
   style='font-family:"Courier New"'>/passwd</span></p>
       <p class=MsoHeader>for example</p>
       <p><span style='font-family:"Courier New"'> /home/httpd/lonUsers/msu/s/m/i/smith/passwd</span></p>
       <p>The password is stored in the format <span style='font-family:
   "Courier New"'>mechanism:info, </span>where mechanism can currently be <span
   style='font-family:"Courier New"'>unix</span>, <span style='font-family:"Courier New"'>krb4</span> 
         or <span style='font-family:"Courier New"'>internal</span>. For <span
   style='font-family:"Courier New"'>krb4</span>, the <span style='font-family:
   "Courier New"'>info</span> is the Kerberos domain, for <span style='font-family:
   "Courier New"'>internal</span> it is the crypt password itself. <span
   style='font-family:"Courier New"'>unix</span> simply authenticates against <span
   style='font-family:"Courier New"'>/etc/passwd</span>. </p>
       <h3><a name="_Toc514840851"></a><a name="_Toc421867051">Environment</a></h3>
       <p>The access handlers Ð coming early in the Apache request cycle Ð also set 
         up the session environment. The cookie received from the web client is a 
         pointer to the session profiles, which are stored in a directory for temporary 
         files <span style='font-family:"Courier New"'>(/home/httpd/lonIDs/</span>). 
       </p>
       <p class=H5><span style='layout-grid-mode:
   both'>Standard Components</span></p>
       <p>These are the standard components of the environment added by Apache and 
         the shell.</p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>AUTH_TYPE ---- 
         Basic</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>DOCUMENT_ROOT ---- 
         /home/httpd/html</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>GATEWAY_INTERFACE 
         ---- CGI-Perl/1.1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT ---- 
         image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_CHARSET 
         ---- iso-8859-1,*,utf-8</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_ENCODING 
         ---- gzip</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_ACCEPT_LANGUAGE 
         ---- en,pdf</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_CONNECTION 
         ---- Keep-Alive</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_COOKIE ---- 
         SITESERVER=ID=cbc6695505253a2ff0e7bb7110574d90; lonID=kortemey_990461714_msu_msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_HOST ---- 
         zaphod.lite.msu.edu</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_REFERER ---- 
         </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>HTTP_USER_AGENT 
         ---- Mozilla/4.75 (Macintosh; U; PPC)</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>MOD_PERL ---- mod_perl/1.21</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>PATH ---- /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bi&curren;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>QUERY_STRING ---- 
         </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_ADDR ---- 
         35.8.63.7</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_PORT ---- 
         1844</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>REMOTE_USER ---- 
         lonadm</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_METHOD 
         ---- GET</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>REQUEST_URI ---- 
         /adm/test</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_FILENAME 
         ---- /home/httpd/html/adm/test</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SCRIPT_NAME ---- 
         /adm/test</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADDR ---- 
         35.8.63.51</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_ADMIN ---- 
         korte@lite.msu.edu</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_NAME ---- 
         zaphod.lite.msu.edu</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PORT ---- 
         80</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_PROTOCOL 
         ---- HTTP/1.0</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SIGNATURE 
         ---- </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>SERVER_SOFTWARE 
         ---- Apache/1.3.9 (Unix) (Red Hat/Linux) mod_perl/1.21</span></p>
       <p class=H5><span style='layout-grid-mode:
   both'>Resource Access Control</span></p>
       <p>The following values are set by traceroute at the initialization of the 
         course and are used by access handlers to check if a resource can be served 
         to a user.</p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.0 
         ---- 0</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.cond.msu_12679c3ed543a25msul1.1 
         ---- 0</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1. 
         ---- &amp;:1&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp 
         ---- &amp;welcome267.htm:1&amp;welcomelbs267.htm:0&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/Spectrum 
         ---- &amp;s.htm:1&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/chain 
         ---- &amp;chain.htm:1&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/coulomb 
         ---- &amp;orbit.htm:1&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/applist/induct 
         ---- &amp;faraday.htm:1&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/conversions 
         ----</span></p>
       <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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap13 
         ---- &amp;cd371.htm:1&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap16 
         ----</span></p>
       <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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17 
         ----</span></p>
       <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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap17/calculus 
         ---- &amp;calc.htm:1&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18 
         ----</span></p>
       <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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/demo 
         ----</span></p>
       <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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18/problems 
         ----</span></p>
       <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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a 
         ---- &amp;kap18a.sequence:1&amp;</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>acc.res.msu_12679c3ed543a25msul1.msu/mmp/kap18a/problems 
         ----</span></p>
       <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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'><i>É etc for all 
         resources in the course É</i></span></p>
       <p class=H5><span style='layout-grid-mode:
   both'>Browser Information</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.mathml 
         ---- </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.os ---- 
         mac</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.type ---- 
         netscape</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>browser.version 
         ---- 4.75</span></p>
       <p class=H5><span style='layout-grid-mode:
   both'>Cached Information about Courses and their Description</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.description 
         ---- lbs267L Lab SS01</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.domain 
         ---- msu</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.home 
         ---- msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.last_cache 
         ---- 990461725</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.num 
         ---- 12679c3ed543a16msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a16msul1.url 
         ---- msu/mmp/lbs267l.sequence</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.description 
         ---- lbs267 Lecture SS01</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.domain 
         ---- msu</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.home 
         ---- msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.last_cache 
         ---- 990461728</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.num 
         ---- 12679c3ed543a25msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a25msul1.url 
         ---- msu/mmp/lbs267.sequence</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.description 
         ---- Demo Course</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.domain 
         ---- msu</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.home 
         ---- msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.last_cache 
         ---- 990461725</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.num 
         ---- 12679c3ed543a37msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>course.msu_12679c3ed543a37msul1.url 
         ---- msu/korte/demo.sequence</span></p>
       <p class=H5><span style='layout-grid-mode:
   both'>Information Imported from the Environment Database File of the User</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.cake 
         ---- Cheese Cake</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.favorite.color 
         ---- green</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.firstname 
         ---- Gerd</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.id 
         ---- z12345678</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>environment.lastname 
         ---- Kortemeyer</span></p>
       <p><b>Information about the Request</b></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>httpref./res/msu/mmp/ 
         ---- /res/msu/mmp/welcome267.htm</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.ambiguous 
         ---- adm/pages/index.html</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.fn 
         ---- /home/httpd/perl/tmp/kortemey_msu_12679c3ed543a25msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.id 
         ---- msu_12679c3ed543a25msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.sec 
         ---- </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.course.uri 
         ---- msu/mmp/lbs267.sequence</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.filename 
         ---- /home/httpd/html/adm/test</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.host ---- 
         zaphod.lite.msu.edu</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.role ---- 
         cc./msu/12679c3ed543a25msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>request.state ---- 
         published</span></p>
       <p class=H5><span style='layout-grid-mode:
   both'>Information about the User</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.domain ---- 
         msu</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.environment 
         ---- /home/httpd/lonIDs/kortemey_990461714_msu_msul1.id</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.home ---- 
         msul1</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.login.time 
         ---- 990461714</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.name ---- 
         kortemey</span></p>
       <p class=H5><span style='layout-grid-mode:
   both'>Information about User Roles and Privileges</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./ 
         ---- :sma&amp;F:gan&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.au./msu/./msu/ 
         ---- :cca&amp;IK:are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./ 
         ---- :sma&amp;F:gan&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/ 
         ---- :are&amp;F:bre&amp;F:cre&amp;F:ere&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.ca./msu/korte./msu/korte 
         ---- </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./ 
         ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/ 
         ---- </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a16msul1./msu/12679c3ed543a16msul1 
         ---- :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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./ 
         ---- :sma&amp;F:bre&amp;F:mcr&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/ 
         ---- </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a25msul1./msu/12679c3ed543a25msul1 
         ---- :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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./ 
         ---- :sma&amp;F:mcr&amp;F:bre&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/ 
         ---- </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cc./msu/12679c3ed543a37msul1./msu/12679c3ed543a37msul1 
         ---- :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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./ 
         ---- :sma&amp;F:mcr&amp;F:gan&amp;F:bre&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/ 
         ---- :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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a16msul1 
         ---- :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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a25msul1 
         ---- :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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/12679c3ed543a37msul1 
         ---- :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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.cm./msu/korte 
         ---- </span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./ 
         ---- :sma&amp;F</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.priv.dc./msu/./msu/ 
         ---- :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>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.au./msu/ 
         ---- 964531839.0</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.ca./msu/korte 
         ---- .</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a16msul1 
         ---- 964531839.0</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a25msul1 
         ---- 964531839.0</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.cc./msu/12679c3ed543a37msul1 
         ---- 964531839.0</span></p>
       <p><span style='font-size:8.0pt;font-family:"Courier New"'>user.role.dc./msu/ 
         ---- 964531839.0</span></p>
       <h2>&nbsp;</h2>
       <h3><a name="_Toc421867052">Handler Reference: LON-CAPA and the 77 Web Perl 
         Modules</a></h3>
       <p><i>Scott Harrison, freeware volunteer, sharrison@sourceforge.net</i><span
   style='font-style:normal'> </span></p>
       <p>LON-CAPA provides many different web services for coordinating online educational 
         interactions. Currently, these web services are made available by 77 different 
         perl modules. The invocation of these perl modules is many times due to 
         the URI format based on entries inside <tt><span style='font-family:
   "Courier New"'>/etc/httpd/conf/loncapa_apache.conf</span></tt>. </p>
       <p>Throughout this technical manual, various web perl modules are described 
         in detail. Here is a summary of all the 77 web perl modules: </p>
       <table border=1 cellpadding=0>
         <tr> 
           <td class="Normal"> 
             <p align=center style='text-align:center'><b>Name/Location</b></p>
           </td>
           <td class="Normal"> 
             <p align=center style='text-align:center'><b>Description</b></p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonwrapper.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonwrapper.pm</p>
           </td>
           <td class="Normal"> 
             <p>Wrapper for external and binary files as standalone resources. Edit 
               handler for rat maps; TeX content handler.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/publisher/loncfile.pm<br>
               TARGET: home/httpd/lib/perl/Apache/loncfile.pm</p>
           </td>
           <td class="Normal"> 
             <p>Provides web-based functionality for file copy, rename, mkdir, etc, 
               in the construction space menu.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonstatistics.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonstatistics.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to show statistics on solving LON-CAPA problems.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/publisher/londiff.pm<br>
               TARGET: home/httpd/lib/perl/Apache/londiff.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to show difference between two files.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/publisher/lonupload.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonupload.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to upload files through browser into construction space.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/essayresponse.pm<br>
               TARGET: home/httpd/lib/perl/Apache/essayresponse.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to evaluate essay (ungraded) style responses.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/externalresponse.pm<br>
               TARGET: home/httpd/lib/perl/Apache/externalresponse.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to evaluate externally graded responses.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/loncapagrade.pm<br>
               TARGET: home/httpd/lib/perl/Apache/loncapagrade.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to evaluate externally graded responses.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/publisher/lonpubdir.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonpubdir.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to publish directories.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/publisher/lonretrieve.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonretrieve.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to retrieve old versions from resource space.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/edit.pm<br>
               TARGET: home/httpd/lib/perl/Apache/edit.pm</p>
           </td>
           <td class="Normal"> 
             <p>Helper functions when in homework edit mode.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonmeta.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonmeta.pm</p>
           </td>
           <td class="Normal"> 
             <p>Metadata display handler.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonambiguous.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonambiguous.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to resolve ambiguous file locations.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonratparms.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonratparms.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to set resource parameters inside of the RAT based on metadata.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonsequence.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonsequence.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler for showing sequence objects of educational resources.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/loncreatecourse.pm<br>
               TARGET: home/httpd/lib/perl/Apache/loncreatecourse.pm</p>
           </td>
           <td class="Normal"> 
             <p>Allows domain coordinators to create new courses and assign course 
               coordinators.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/loncreateuser.pm<br>
               TARGET: home/httpd/lib/perl/Apache/loncreateuser.pm</p>
           </td>
           <td class="Normal"> 
             <p>Allows users to within their own privileges create/edit users and 
               give them roles.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonchart.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonchart.pm</p>
           </td>
           <td class="Normal"> 
             <p>Produces simple LectureOnline-like student assessment performance 
               chart</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/loncommon.pm<br>
               TARGET: home/httpd/lib/perl/Apache/loncommon.pm</p>
           </td>
           <td class="Normal"> 
             <p>Makes a table out of the previous attempts. Inputs result_from_symbread, 
               user, domain, home_server, course_id.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/grades.pm<br>
               TARGET: home/httpd/lib/perl/Apache/grades.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles the viewing of grades.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/imageresponse.pm<br>
               TARGET: home/httpd/lib/perl/Apache/imageresponse.pm</p>
           </td>
           <td class="Normal"> 
             <p>Coordinates the response to clicking an image.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/optionresponse.pm<br>
               TARGET: home/httpd/lib/perl/Apache/optionresponse.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles tags associated with showing a list of options.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/outputtags.pm<br>
               TARGET: home/httpd/lib/perl/Apache/outputtags.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles tags associated with output. Seems to relate to due dates 
               of the assignment.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lontest.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lontest.pm</p>
           </td>
           <td class="Normal"> 
             <p>Used for debugging and testing the LON-CAPA system.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/radiobuttonresponse.pm<br>
               TARGET: home/httpd/lib/perl/Apache/radiobuttonresponse.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles multiple-choice style responses.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonassignments.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonassignments.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles processing of assignments.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/loncommunicate.pm<br>
               TARGET: home/httpd/lib/perl/Apache/loncommunicate.pm</p>
           </td>
           <td class="Normal"> 
             <p>Will be the access handler to email sending, as well as the planned 
               chatrooms, etc.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonerrorhandler.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonerrorhandler.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles errors.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonevaluate.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonevaluate.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles evaluation.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonfeedback.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonfeedback.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles feedback from students to instructors and system administrators. 
               Provides a screenshot of the current resource, as well as previous 
               attempts if the resource was a homework. Used by lonmsg.pm.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonnavmaps.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonnavmaps.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles navigational maps.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonpreferences.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonpreferences.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles user preferences associated with customizing the online LON-CAPA 
               educational environment.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonprintout.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonprintout.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles the production of printable files and resources.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonsearchcat.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonsearchcat.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handles a searchable catalogue.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/londropadd.pm<br>
               TARGET: home/httpd/lib/perl/Apache/londropadd.pm</p>
           </td>
           <td class="Normal"> 
             <p>Allows course coordinators to upload courselists in different formats, 
               and automatically create users (if they do not exist already), assign 
               them the role of student in a course, and add them to the classlist.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonmsg.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonmsg.pm</p>
           </td>
           <td class="Normal"> 
             <p>lonmsg.pm has several functions to send and receive internal messages. 
               author_res_msg - send message to resource author. user_crit_msg - 
               send a critical message to a user. A critical message will require 
               acknowledgment by the recipient and the sender will be notified. user_crit_received 
               - routine to trigger acknowledgment. statuschange - change the status 
               of a message (read, replied, forwarded, etc). The handler also displays 
               messages, has routines to reply, etc.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/hint.pm<br>
               TARGET: home/httpd/lib/perl/Apache/hint.pm</p>
           </td>
           <td class="Normal"> 
             <p>This handler coordinates the delivery of hints to students working 
               on LON-CAPA problems and assignments.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonspreadsheet.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonspreadsheet.pm</p>
           </td>
           <td class="Normal"> 
             <p>Spreadsheets are completely web-based. They exist on the level of 
               a whole course, a student, and individual assessments.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonparmset.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonparmset.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler to resolve ambiguous file locations</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/publisher/lonconstruct.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonconstruct.pm</p>
           </td>
           <td class="Normal"> 
             <p>Page wrapper for handling construction space.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/publisher/lonpublisher.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonpublisher.pm</p>
           </td>
           <td class="Normal"> 
             <p>Publishes an LON-CAPA educational resource complete with metadata 
               (authorship, language, copyright, creation date, etc).</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonmenu.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonmenu.pm</p>
           </td>
           <td class="Normal"> 
             <p>Has routines which control the remote control.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonpageflip.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonpageflip.pm</p>
           </td>
           <td class="Normal"> 
             <p>Deals with forward, backward, and other page flips.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonratedt.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonratedt.pm</p>
           </td>
           <td class="Normal"> 
             <p>Builds up frame set and loads in the right thing.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/html/res/adm/pages/homeworkmenu.html<br>
               TARGET: home/httpd/html/res/adm/pages/homeworkmenu.html</p>
           </td>
           <td class="Normal"> 
             <p>Homework remote control.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/html/res/adm/pages/annotator/admannotations.pm<br>
               TARGET: home/httpd/lib/perl/Apache/admannotations.pm</p>
           </td>
           <td class="Normal"> 
             <p>This will take annotations and then plug them into a page.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/html/res/adm/pages/bookmarkmenu/admbookmarks.pm<br>
               TARGET: home/httpd/lib/perl/Apache/admbookmarks.pm</p>
           </td>
           <td class="Normal"> 
             <p>This will take bookmarks and get/write/display them for the LON-CAPA 
               user interface.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonratsrv.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonratsrv.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler that takes output from RAT and stores it on disk. Handles 
               the upper hidden frame of the added window that comes up in RAT. (3 
               frames come up in RAT server, code, and output. This module handles 
               server connection.)</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonpage.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonpage.pm</p>
           </td>
           <td class="Normal"> 
             <p>bundles pages into one page</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: rat/lonuserstate.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonuserstate.pm</p>
           </td>
           <td class="Normal"> 
             <p>compile course into binary data structure (in loncom/rat)</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/lontex.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lontex.pm</p>
           </td>
           <td class="Normal"> 
             <p>Handler for tex files (somewhere in modules)</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/lontexconvert.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lontexconvert.pm</p>
           </td>
           <td class="Normal"> 
             <p>Access to tth/ttm</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/lonxml.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonxml.pm</p>
           </td>
           <td class="Normal"> 
             <p>XML Parsing Module</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/lonplot.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonplot.pm</p>
           </td>
           <td class="Normal"> 
             <p>XML-based plotter of graphs</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/style.pm<br>
               TARGET: home/httpd/lib/perl/Apache/style.pm</p>
           </td>
           <td class="Normal"> 
             <p>Style Parsing Module</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/londefdef.pm<br>
               TARGET: home/httpd/lib/perl/Apache/londefdef.pm</p>
           </td>
           <td class="Normal"> 
             <p>Tags Default Definition Module</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/run.pm<br>
               TARGET: home/httpd/lib/perl/Apache/run.pm</p>
           </td>
           <td class="Normal"> 
             <p>used to prevent poorly written problems from causing lingering after 
               effects</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/scripttag.pm<br>
               TARGET: home/httpd/lib/perl/Apache/scripttag.pm</p>
           </td>
           <td class="Normal"> 
             <p>implements &lt;script&gt;, &lt;scriptlib&gt;, &lt;parserlib&gt;, 
               and &lt;import&gt;</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/randomlabel.pm<br>
               TARGET: home/httpd/lib/perl/Apache/randomlabel.pm</p>
           </td>
           <td class="Normal"> 
             <p>Interface for producing applet code which randomizes the labelling 
               of an image.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/lonhomework.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonhomework.pm</p>
           </td>
           <td class="Normal"> 
             <p>handles requests for output, evaluation, and alteration of a homework 
               resource</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/inputtags.pm<br>
               TARGET: home/httpd/lib/perl/Apache/inputtags.pm</p>
           </td>
           <td class="Normal"> 
             <p>produces HTML input tags (&lt;INPUT&gt;) for rendering homework resources</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/structuretags.pm<br>
               TARGET: home/httpd/lib/perl/Apache/structuretags.pm</p>
           </td>
           <td class="Normal"> 
             <p>produces HTML tags necessary for structuring the presentation of 
               homework resources</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/response.pm<br>
               TARGET: home/httpd/lib/perl/Apache/response.pm</p>
           </td>
           <td class="Normal"> 
             <p>defines different types of responses given to student as well as 
               syntax for producing response values</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/caparesponse/caparesponse.pm<br>
               TARGET: home/httpd/lib/perl/Apache/caparesponse.pm</p>
           </td>
           <td class="Normal"> 
             <p>handles request to the CAPA homework processing engine</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/xml/Safe.pm<br>
               TARGET: home/httpd/lib/perl/Safe.pm</p>
           </td>
           <td class="Normal"> 
             <p>Meant to safely substitute for CPAN version of Safe. Allows for safely 
               executing embedded perl comands in a way that does not threaten the 
               operating system.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/auth/localauth.pm<br>
               TARGET: home/httpd/lib/perl/localauth.pm</p>
           </td>
           <td class="Normal"> 
             <p>Local authentication mechanism (meant to be customized).</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/auth/lonacc.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonacc.pm</p>
           </td>
           <td class="Normal"> 
             <p>(This module, like loncacc.pm also authenticates with cookies.) lonacc.pm 
               coordinates access to a wide range of administrative-type functions 
               (e.g. roles, logout, annotations, and bookmarks) as well as coordinating 
               access to educational resources.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/auth/lonracc.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonracc.pm</p>
           </td>
           <td class="Normal"> 
             <p>access handler for file transfers</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/auth/loncacc.pm<br>
               TARGET: home/httpd/lib/perl/Apache/loncacc.pm</p>
           </td>
           <td class="Normal"> 
             <p>This module provides access to an educational resource construction 
               area. This module is invoked by the URL-related pattern syntax LocationMatch 
               &quot;^/priv.*&quot; or LocationMatch &quot;^/\~.*&quot;. Authentication 
               of user identity is coordinated through cookies. The abbreviation 
               &quot;cacc&quot; corresponds to &quot;construction-space access&quot;). 
               If the cookie handle is invalid, then this module returns a forbidden 
               status and makes appropriate log entries. If the cookie handle is 
               valid, status is determined to be okay (and, for the &quot;priv&quot;-type 
               access, the resource is delivered by the lonconstruct module).</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/auth/lonauth.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonauth.pm</p>
           </td>
           <td class="Normal"> 
             <p>authenticate, set up session environment</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/auth/lonlogin.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonlogin.pm</p>
           </td>
           <td class="Normal"> 
             <p>login screen</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/auth/lonlogout.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonlogout.pm</p>
           </td>
           <td class="Normal"> 
             <p>logout</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/lonnet/perl/lonrep.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonrep.pm</p>
           </td>
           <td class="Normal"> 
             <p>replication</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/auth/lonroles.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonroles.pm</p>
           </td>
           <td class="Normal"> 
             <p>This perl handling module reads in the available roles available 
               for a LON-CAPA user (different courses, different privileges, etc) 
               and produces a form-element HTML page which allows the user to select 
               which role he wishes to exercise in the LON-CAPA system. For instance, 
               a user may want to select between being a student in a thermodynamics 
               physics course or a teaching assistant for an introductory calculus 
               class.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/lonindexer.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonindexer.pm</p>
           </td>
           <td class="Normal"> 
             <p>cross server filesystem browser</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/interface/groupsort.pm<br>
               TARGET: home/httpd/lib/perl/Apache/groupsort.pm</p>
           </td>
           <td class="Normal"> 
             <p>Implements a second phase of importing multiple resources into the 
               RAT. Allows for reordering the sequence of resources.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/lonnet/perl/lonnet.pm<br>
               TARGET: home/httpd/lib/perl/Apache/lonnet.pm</p>
           </td>
           <td class="Normal"> 
             <p>This file is an interface to the lonc processes of the LON-CAPA network 
               as well as set of elaborated functions for handling information necessary 
               for navigating through a given cluster of LON-CAPA machines within 
               a domain. There are over 40 specialized functions in this module which 
               handle the reading and transmission of metadata, user information 
               (ids, names, environments, roles, logs), file information (storage, 
               reading, directories, extensions, replication, embedded styles and 
               descriptors), educational resources (course descriptions, section 
               names and numbers), url hashing (to assign roles on a url basis), 
               and translating abbreviated symbols to and from more descriptive phrases 
               or explanations.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/lectureonline.lcpm<br>
               TARGET: home/httpd/html/res/adm/includes/lectureonline.lcpm</p>
           </td>
           <td class="Normal"> 
             <p>Intended for providing perl functions for the &lt;script&gt;&lt;/script&gt; 
               environment in a problem that was converted from lectureonline.</p>
           </td>
         </tr>
         <tr> 
           <td class="Normal"> 
             <p>SOURCE: loncom/homework/default_homework.lcpm<br>
               TARGET: home/httpd/html/res/adm/includes/default_homework.lcpm</p>
           </td>
           <td class="Normal"> 
             <p>Provides many functions for the &lt;script&gt; environment in a .problem. 
               Functions are documented in CVS:loncapa/doc/homework/homework5.html.</p>
           </td>
         </tr>
       </table>
     </div>
   </div>
   </body>
   </html>

Removed from v.1.1  
changed lines
  Added in v.1.2


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