home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spezial / SPEZIAL2_97.zip / SPEZIAL2_97.iso / ANWEND / ONLINE / SREFV12J / CHANGES.DOC < prev    next >
Text File  |  1997-09-21  |  47KB  |  969 lines

  1. 20 September  1997.
  2.  
  3. This document contains a history of changes to SRE-FILTER, starting
  4. from version 1.2d.  Older changes (from version 1.11 to 1.2d)
  5. are documented in CHANGES0.DOC (CHANGES0.DOC can be found at
  6. http://rpbcam.econ.ag.gov/srefilter/changes0.doc)
  7.  
  8. Please note that as of this writing the SRE-Filter is at version 1.2j
  9. (sub version .997c).  Please keep an eye on the SRE-Filter home page
  10. for updates (http://rpbcam.econ.ag.gov/srefilter).
  11.  
  12. You may also want to examine the documentation files, including:
  13.    The user's guide: GUIDE.HTM.
  14.    A "frequently asked questions" file: SREFILTR.FAQ.
  15.    An outline of how SRE-Filter works: OUTLINE.HTM.
  16.    The SRE-Filter manual: SREFILTR.HTM.
  17.    A detailed description of initialization parameters: INITFILT.DOC.
  18.  
  19.  
  20.                  ------------------------------------
  21.                      Changes from ver 1.2d to 1.2e:
  22.  
  23. HTACCESS support added:
  24.    Addition of support for directory-specific access controls (and
  25.    redirection) using HTACCESS files (using code adapated from the
  26.    GOHTTP filter, courtesy of D. Meyer).
  27.    For further details, see the description of the HTACCESS_FILE and
  28.    DO_HTACCESS variables in INITIFLT.DOC
  29.  
  30.    One fringe benefit of HTACCESS support is that the SHOWDIR dynamic
  31.    directory list processor can now be used with SRE-Filter -- see
  32.    SHOWDIR.DOC for details.
  33.  
  34. NOTIFY method of redirection added:
  35.    Addition of a !NOTIFY method of redirection (client is informed of the
  36.    move, but is not actually redirected).
  37.  
  38. Best matching is used (instead of first matches):
  39.    When searching access controls, virtual directories, aliases, and the
  40.    various other .IN, .CNT, and .CTL files: SRE-filter will now use a "best
  41.    match" criteria, rather then a first match criteria, when choosing
  42.    between wildcard matches (exact matches still have priority).
  43.  
  44. User defined MIME types:
  45.    You can now define your own MIME media types using the MEDIATYP.RXX file.
  46.    Furthermore, you can define your own "SHTML" (server side include
  47.    permitted HTML files) extensions by modifying the SSI_EXTENSIONS variable.
  48.  
  49.  
  50.                     --------------------------------------
  51.                  Changes from 1.2e to 1.2f  (up to 24 Sept 1996)
  52.  
  53.  
  54. Configurator improvements:
  55.    A number of changes were made to the "Initialization Parameters" portion
  56.    of the configurator (in addition to earlier changes to the "parameter
  57.    files section). The most important change is that you can now use the
  58.    configurator to modify "host specific" parameters en masse.
  59.  
  60.    Almost all initialization parameters can be host specific.
  61.    The naming convention has been standardized (NAME.HOST_NICKNAME or
  62.    NAME.n.HOST_NICKNAME). Note that the OWNERS, PUBLIC_URLS, INHOUSEIPS, and
  63.    UNALLOWEDIPS parameters must be host-specific (non host-specific values
  64.    will NOT be used as defaults for these four parameters).
  65.  
  66.    The configurator can now be used to view and modify HTACCESS files.
  67.  
  68. Enhancements to file upload capabilities:
  69.    The GET_URL and PUT_FILE "file upload" methods are no longer limited to
  70.    the UPLOAD_DIR directory.  The client can now specify a directory (using
  71.    a URL-like syntax, i.e.; DIR1/foo.bar) of the UPLOAD_DIR.  Furthermore,
  72.    the "subdirectory" portion can map to a virtual directory -- for example,
  73.    DIR1/ may map to D:\NOTWWW\OURDIR\.
  74.    As a security feature, uploads to  "virtual directory" require
  75.    that this virtual directory (i.e.; DIR1/) have a PUT permission assigned
  76.    to it (using the ACCESS_FILE).
  77. Addition of a simple load balancing feature:
  78.    You can implement a simple form of load balancing by changing
  79.    a few parameters in the SREFILTR.80 file.  See the discussion of the
  80.    LOADTHRESHOLD variable in INITFILT.DOC for details.
  81.  
  82. Improvments to the FIX_EXPIRE parameter:
  83.    The FIX_EXPIRE parameter (for suppressing "immediate expiration")
  84.    now applies to GETAFILE, DOSEARCH, and CGI-BIN requests (as well as
  85.    documents cnotaining server side includes).
  86.  
  87. Changes to the post-filter capability:
  88.    You can now call a series of Post-filters (instead of just one).
  89.    The Post-filters are now passed the name of the fully qualified file
  90.    used in the request (either a document name, or the name of the CGI
  91.    script or external REXX procedure used in a server side processing
  92.    request).
  93.  
  94.    The "used file" is now passed to the client.  This may be the
  95.    name of the file transfered (such as an HTML or GIF file),
  96.    the name of the CGI-BIN script executed, or the name of the
  97.    external REXX procedure executed).
  98.  
  99.    POSTRCRD.80, A simple "client information recorder" post-filter,
  100.    is not packaged with SRE-Filter. POSTFILT.80 is now just a simple
  101.    example, with POSTMAIL.80 now containing the "e-mail alert" procedure.
  102.  
  103. Changes to public_urls:
  104.  
  105.    When determining which of several wildcard matches to PUBLIC_URLS should
  106.    be used, a "best match" is used rather then a "first match".
  107.    On multiple-host servers, only PUBLIC_URLS specifically listed for a
  108.    (defined) host are used (that is, the non host-specific PUBLC_URLS are
  109.    NOT used as defaults).
  110.  
  111.    There is now a more forgiving method of responding to "literal"
  112.    PUBLIC_URLS that point to aliases. Before, requests that matched
  113.    these "improper" literal public_urls resulted in "no such document"
  114.    responses.  Now, SRE-Filter will ignore the "literal", and treat
  115.    the request like a normal PUBLIC_URL (that is, alias matching
  116.    will be attempted).
  117.  
  118. Logon bug fix:
  119.    Repaired a bug that, under unusual circumstances, allowed a client
  120.    to logon by using a blank username and password.
  121.  
  122.  
  123. -------------------------------------------------------
  124. Changes from  ver 1.2f to ver 1.2g.
  125.  
  126. !DIRECTORY option added to AUTO_NAME.
  127.    !DIRECTORY and !DIRECTORY* are now synonyms for !CREATE and !CREATE*.
  128.  
  129. Fixed uninformative "not found document" message:
  130.    When using the !CREATE "auto name" option, if the requested directory did not
  131.    exist, a too-simple "Unavailable" message was returned.  Now, the standard
  132.    "document not found" message will be returned.
  133.  
  134. Not found response can now point to a file:
  135.    You can now return a customized document (rather then a simple text string)
  136.    whenever a request for a  non-existent resource occurs.  See the
  137.    the discussion of the NOT_FOUND_RESPONSE variable (in INITFILT.DOC)
  138.    for details.
  139.  
  140. Timefmt NSCA HTTPD directive brought up to spec:
  141.     The timefmt NCSA HTTPD "server side include" directive is now fully
  142.     supported by SRE-Filter -- all dates in the NCSA HTTPD style server
  143.     side includes will now follow the rules set in timefmt directives
  144.     (with a default of '%c').   For details on the timefmt directive,
  145.     see TIMEFMT.DOC.  Note that the "native" SRE-Filter time and date
  146.     server side includes are not effected by timefmt (basically,
  147.     a %c equivalent is used; i.e.; 13:01:33 27 August 1988).
  148.  
  149. DNS_CHECK bug repaired
  150.     DNS_CHECK failed to work.  It has now been fixed.
  151.  
  152. Restructuring of code:
  153.     A minor restructuring of code to shrink the size of the filter (but
  154.     expand macrospace) should help speed things up (a bit) under load.
  155.  
  156. Best match improvement:
  157.     Best match will now consider the "length of the string after the *"
  158.     when comparing "best matches" that are otherwise equivalent (see
  159.     INITFILT.DOC for details).
  160.  
  161. Message box facility improved:
  162.     The simple message box facility (MESSAGE, ASKMESSBOX, and VIEWMESS)
  163.     has been upgraded.  Of greater interest, a new  "multi-
  164.     threaded forum" facility has been added.  This uses REXX procedures
  165.     and server side including HTML documents, in conjunction with
  166.     SRE-Filter message boxes, to implement a basic multi-threaded
  167.     forum using a "news reader" type interface. See FORUM.DOC for details.
  168.  
  169.     Note that MESSBOX specific privileges (possibly wildcarded)
  170.     are now required to access message boxes (either through the
  171.     MESSAGE or FORUM).
  172.  
  173. A "list server" like facility added:
  174.     Complementing the improved message boxes and the FORUM facility,
  175.     READMAIL and MAILLIST, two "list server" like facilities, have been
  176.     added. READMAIL (and MAILLIST) will read e-mail messages stored in an
  177.     inbox (say, as written by SENDMAIL), and place the contents of these
  178.     messages into a SRE-Filter messagebox OR rebroadcast the
  179.     message to a list of users.  See READMAIL.DOC for details.
  180.  
  181. Fixed an occasional bug in the INTERPRET and SELECT keyphrases:
  182.     A problem when setting INTERPRET.RESULTS or SELECT.RESULT has
  183.     been fixed.  In addition, you can now return results to
  184.     the SELECT keyphrase by including RETURN 1 or RETURN 0 in your
  185.     "REXX code block" (rather then setting the value of SELECT.RESULT).
  186.     Similarly, use of QUEUE statements, in addition to setting the
  187.     value of INTERPRET.RESULTS, is supported for the INTERPRET keyphrase.
  188.  
  189. An example of how to set up a simple, 3-tiered site:
  190.     See INITFILT.DOC for a description of how to efficiently setup a
  191.     3-tiered site: with directories et al that provide unmonitored public
  192.     access, monitored public access, and controlled access.
  193.  
  194. Fixed a bug with the HOSTS. variables:
  195.     Requests directly to a numeric IP address, rather then a name,
  196.     were mishandled when a HOST: request header was present.  This has
  197.     been fixed.
  198.  
  199. Add COUNTS_FILE and HITS_FILE server side include options:
  200.     COUNTS_FILE and HITS_FILE are equivalent to the COUNTS and HITS
  201.     options of the REPLACE ssi keyphrase.  The difference is that
  202.     the fully qualified file name is used, rather then the request string
  203.     (the URL).
  204.  
  205. RECORD_OPTION can now "record by file":
  206.      You can tell SRE-Filter to record all requests by file name,
  207.      rather then by URL (this is the RECORD_ALL_FILE equivalent to
  208.      COUNTS_FILE and HITS_FILE) -- see the description of RECORD_OPTION
  209.      in INITFILT.DOC for details
  210.  
  211. A bug when "aliasing" CGI-BIN scripts has been fixed:
  212.     The use of aliases to redirect CGI-BIN requests to scripts, in
  213.     directories other then CGI_BIN_DIR, malfunctioned when the
  214.     request was of the form CGI-BIN/ASCRIPT?wow (where ASCRIPT
  215.     was an alias to some directory).
  216.  
  217. A syntax for indicating the directory of a CGI-BIN script:
  218.     When the CGI-BIN/ sub-string apears after some subdirectory information
  219.     (for example  DADSTUFF/SCRIPTS1/CGI-BIN/ascript?anargumemt),
  220.     SRE-Filter will use that "pre CGI-BIN/"  information as a pointer to
  221.     the directory containing the script.
  222.     Note that this may be under the CGI_BIN_DIR, or may be a virtual
  223.     directory (i.e.; D:\GOSERVE\CGI-BIN\DADSTUFF\SCRIPTS1\)
  224.  
  225. NO_SSP permissions were not applied to CGI-BIN scripts:
  226.     CGI-BIN requests took place, even if a NO_SSP permission applied.
  227.     This has been fixed (this is now an important feature, given
  228.     the "non-spec" virtual directory method mentioned above).
  229.  
  230. Adding the "username" to the privilege list:
  231.      SRE-Filter will now add the users "logon name" to her
  232.      privilege list (this can be suppressed). This can be useful,
  233.      when combined with URL-specific access controls, as a means
  234.      of providing individualized access.
  235.  
  236. PUBLIC_PRIVS added to privilege list of PUBLIC_URLS:
  237.  
  238. The RECORD_ALL_FILE can now be cached:
  239.     To cut down on the number of disk writes, the RECORD_ALL_FILE
  240.     is now cached.  To modify, or turn this caching on, set the
  241.     RECORD_CACHE_LINES variable in SREFILTR.80
  242.  
  243. A "just read" documents list can now be used to suppress hit augmenting:
  244.     To cut down on false hits (i.e.; from people "backing up" to a
  245.     document), SRE-Filter can maintain a  "suppress recent hits list".
  246.     To turn this feature on, see the HIT_CACHE_LEN variable in
  247.     INITFILT.DOC.
  248.  
  249. Minor modification to range retrieval:
  250.      Range retrieval now understands the If-modified: and Umless-modified:
  251.      request headers.  Note that the If-Invalid: and If-valid: headers
  252.      are ignored.
  253.  
  254. Changes to the USETABL2.RXX "interpretable" file:
  255.      The list of "table capable" and "table incapable" browsers has been greatly
  256.      expanded. Also, a bug that could crash GoServe has been fixed
  257.      (if the user-agent was unknown, an EXIT command resulted, which crashed GoServe).
  258.  
  259. Changes to PUBLIC_URL processing:
  260.      * If a literal public_url was specified using an "exact name" that
  261.        contained a * wildcard, the appropriate file match was not performed,
  262.        and a "not found" message was returned.  This has been fixed.
  263.      * The PUBLIC_PRIVS are now used as the privilege list for
  264.        request for PUBLIC_URLS.  Note that this can be useful when
  265.        using a PUBLIC_URL to invoke  the FORUM or MESSAGE facilities
  266.        (i.e.; include a MESSBOX:PUBFORUM in your PUBLIC_PRIVS list).
  267.      * PUBLIC_URLS may have a  NORECORD attribute (in addition to
  268.        the LITERAL and LITERAL_NORECORD attribute).  T
  269.      * The "exact names" in literal PUBLIC_URLS with "exact names" can
  270.        now contain a * wildcard character (SRE-Filter will make the
  271.        appropriate substituttion.
  272.  
  273.  
  274. ---------------------------------------------
  275. Fixes to ver 1.2g.
  276.  
  277.  
  278. 10/28/96
  279.    *  Post-filter routines now are given the value of the "referer" request
  280.       header.  See POSTRCRD.80 for an example of how this is used.
  281.  
  282. 10/30/96
  283.    *  The "PASSWORD" field in SRE-Filter message boxes was inadvertently
  284.        set when no explicit password was given. FORUM would then accept
  285.        a blank password as a legitimate match.  This has been fixed.
  286.  
  287. 10/31/96
  288.    *   A HIT_SUPPRESS_OWNERS variable, when set to 1, will instruct
  289.        SRE-Filter NOT to record requests from OWNERS.
  290.        For details, see the description of the HIT_SUPPRESS_OWNERS
  291.        variable in INITFILT.DOC.
  292.    *    You can now "chain" pre-filters.  For details, see the descripiton of
  293.         PREFILTER_NAME in INITFILT.DOC.
  294.  
  295. 11/01/96
  296.    *    The GETAFILE facility was been upgraded:
  297.            A  suppress TABLE border option has been added
  298.            The SHOWDATE=YES option of GETAFILE now shows dates using
  299.            15 Nov 1995 format (if you want to display dates using a
  300.            11/15/95 format, use SHOWDATE=YES_SHORT).
  301.            See SREFILTR.HTM for details.
  302.  
  303. 11/03/96
  304.  
  305.    *    The INTERPRET FILE keyphrase can now include arguments, which
  306.         will be available to the "interpreted" REXX file. See
  307.         SREFILTR.HTM for details.
  308.    *    The "resource privileges" list can now contain two types
  309.         of privileges -- ANY_ONE and MUST_HAVE; where ANY_ONE are
  310.         "or" conditions, and MUST_HAVE are "and" conditions.
  311.         See SREFILTR.HTM for details.
  312.    *    A dynamic (and short lived)  privilege can be assigned to
  313.         clients (using their IP address).  This can be used to restrict
  314.         access to files to those going through "proper" procedures.
  315.         Furthermore, creation of these dynamic privileges is easily
  316.         accomplished by invoking the ADDPRIV.RXX add-on in an INTERPRET FILE
  317.         keyphrase. See ADDPRIV.DOC for details.
  318.     *    A LOGON_LIMIT number of "logons" can be enforced per client per minute.
  319.     *    If  LOGON_FAIL_FILE is set, a custom written  "logon-failure" response
  320.          file can be sent instead of a plain "401 Unauthorized" response.
  321.          See the discussion of the LOGON_FAIL_FILE variable in INITFILT.DOC
  322.          for details.
  323.  
  324. 11/07/96
  325.     *    If the client does not have "URL-specific" access, an ACCESS_FAIL_FILE
  326.          can be sent.
  327.     *    A "access failure file" field has been added to the ACCESS_FILE.
  328.          If present, it overrides the value of ACCESS_FAIL_FILE.
  329.          See the discussion of the ACCESS_FAIL_FILE variable in INITFILT.DOC
  330.          for details.
  331.     *    The SRE-Filter configurator has been modified to recognize thie
  332.          "access failure file" field in the ACCESS_FILE.
  333.  
  334. 11/08/96
  335.     *    The OWNERS variable was not being recognized.
  336.          The HIT_OWNER_SUPPRESS variable was not being acted on.
  337.          Both of these bugs have been fixed. Note that in all likelihood,
  338.          these bugs were introduced around Nov. 3.
  339.  
  340. 11/10/96
  341.     *    A NO_INTERPRET_CODE parameter can now be set; it instructs SRE-Filter
  342.          to suppress SELECT and INTERPRET CODE server-side-include keyphrases.
  343.          In addition, an equivalent "NO_CODE" permission can be set on a
  344.          "URL-specific" basis.  Note that this is a subset of NO_PROCESSING
  345.          and the NO_SSP permission -- it provides some protection against
  346.          ill-mannered users, without quashing all server-side includes and
  347.          processing.
  348.     *    The ACCESS_FAIL_FILE and LOGON_FAIL_FILE are now set in INITFILT.80
  349.          (rather then in SREFILTER.80).
  350.  
  351. 11/12/96
  352.     *    You can tell SRE-Filter to save "request specific" information
  353.          to a temporary file. This information can be used by external
  354.          procedures, AND by post-filter actions. See the description of
  355.          the SAVE_STATE variable (in INITFILT.DOC) for details.
  356.     *    To support the above, SRE-Filter now passes the "thread-id"
  357.          of the request to the post-filter processor.
  358.  
  359.  
  360. 11/14/96
  361.     *    A "web page counter", COUNTER.RXX, is now included. COUNTER.RXX has
  362.          a number of options, including the ability to save information on
  363.          each request.  See COUNTER.DOC for details.
  364.     *    The SENDFILE facility can use COUNTER.RXX (rather then the simpler
  365.          default). See SREFILTR.HTM for details.
  366.  
  367.  
  368. 11/16/96
  369.     *   When using the LOGON_FAIL_FILE, Netscape would not display the response
  370.         (due to faulty response code).  This has been fixed.
  371.     *   The error message when attempting to SENDFILE a non-existent file
  372.         was uninformative. This has been fixed.  SENDFILE will also
  373.         note (if COUNTER= is used) failed attempts.
  374.  
  375. 11/17/96
  376.     *   Modified the various *CFG.CMD files (the configurator procedures)
  377.         to permit remote access by clients with SUPERUSER privileges.
  378.     *   The "own name" privilege was being added to the client privilege
  379.         list, even when ADD_USER_NAME='NO'. This has been fixed.
  380.  
  381. 11/19/96
  382.     *   Minor modifications to FILTINST.CMD.
  383.     *   Created SREF_WRITE_STATE -- the complement to SREF_READ_STATE
  384.         (used for writing to the "thread specific" cache)
  385.     *   If SAVE_STATE=1, the SENDFILE facility will write the bytes sent
  386.         and the bytes in the file to a SENDFILE_STATUS variable in
  387.         the "thread specific" cache
  388.     *   CGI-BIN calls are given two additional (SRE-Filter specific) variables:
  389.         CALLER_THREAD (useful if you want to use SREF_WRITE_STATE) and
  390.         SCRIPT_DIR  (the directory the of CGI-BIN script being executed).
  391.         In addition, TEST-CGI.CMD has been modified to display these
  392.         "environment variables".
  393.  
  394. 11/21/96
  395.     *   The OWNER_SUPPRESS feature of COUNTER.RXX did not work, when called
  396.         as a procedure.  This has been fixed.
  397.     *   The "#config sizefmt=xxx" server side include directive
  398.         was not spec.  This has been fixed: fractions are not used
  399.         when sizefmt=abbrev, and commas are inserted when sizefmt=bytes.
  400.     *   COUNTER.RXX can now generate simple "odomoeter" style graphical
  401.         counters, when called as an in-line image (it uses Don Meyer's
  402.         XCOUNT.CMD code).
  403.  
  404. 11/23/96
  405.     *  On GET method requests that invoke an external procedure to
  406.        perform "server side processing": the LIST variable (consisting
  407.        of items following a ? in the request string) is url-decoded
  408.        url-decoded -- the documentation (SREFILTR.HTM) had claimed that
  409.        it was not!
  410.        Note that in some cases it's best to use the URI argument, which
  411.        will contain the original request string.
  412.  
  413. 11/27/96
  414.     *   The RESPONSE_FILE option of the MESSAGE facility did not work.
  415.         This has been fixed.
  416.     *   A simple means of "limiting" the scope of virtual directories
  417.         has been added.  See the "sample" VIRTUAL.IN file for details.
  418.     *   A few options have been added to GETAFILE, including a "standard"
  419.         mode (where you specify just the subdirectory) that yields
  420.         a standard tabular display of icon, name, date and size.
  421.         See GETAFILE.HTM for details.
  422. 12/01/96
  423.     *   The installation procedure has been moderately reworked. It now
  424.         gives you the opportunity to set a few of the more commonly
  425.         used parameters.
  426.     *   A  bug that rendered GETAFILE useless, introduced sometime between
  427.         11/27 and 12/01,  was repaired.
  428.     *   The various .CMD files now give coherent error messages if accidentally
  429.         run from the command line (rather then called as external procedures
  430.         by SRE-Filter).
  431.  
  432. 12/09/96
  433.     *   The AUTO_HEADER would occasionally add a second : to http-equiv
  434.         generated response headers.  This has been fixed.
  435.  
  436. ----------------
  437. On 12/31/96, a new version of SRE-Filter was released (SREFV12H.ZIP).
  438. This incorporates all the above changes, plus the following.
  439.  
  440. Changes from 1.2g to 1.2h
  441.  
  442.     *   User specific "web" subdirectories of the HOME_DIR can now be
  443.         specified by including a $ in the HOME_DIR parameter.
  444.  
  445.     *   The HOME_DIR replacment for ~ could not be used with AUTO_NAME
  446.         construction.  This has been fixed (HOME_DIR replacement now
  447.         occurs before AUTO_NAME construction).
  448.  
  449.     *   The FORUM, READMAIL and MAILLIST facilities are no longer
  450.         packaged with SRE-Filter.  Instead, they are available as
  451.         add ons.
  452.  
  453.     *   A web based BBS add-on is now available for SRE-Filter.
  454.  
  455.     *   The   MAILLIST add-on can now be instructed to forward unused mail
  456.         (mail NOT to one of the listed "forums") to an alternative
  457.         mail box  directory.  Furthermore, a special .UML file can be created
  458.         for use by UltiMail.
  459.  
  460.     *   !DIR, a new "directory lister" has been added to SRE-Filter.
  461.         The !DIR facility largely replaces the GETAFILE external
  462.         procedure; it is used when a !CREATE option appears in the
  463.         AUTO_NAME variable.
  464.             To control the format and content of the directory listings
  465.         created by !DIR, two new variables have been added to
  466.         INITFILT.80: DIR_OPTIONS and DIR_EXCLUSION
  467.             Furthermore, !DIR will cache it's output, and use the cache
  468.         when appropriate.  This can substantially improve performance,
  469.         especially when you are using "automatic descriptions".
  470.             For more details on the !DIR facility, pless see DIR.DOC.
  471.  
  472.     *    GETAFILE is now available as an add-on.
  473.          GETAFILE has a few new features, including:
  474.              * the ability to use "one line per file" description
  475.                files (these are more standard then the "block delimited"
  476.                files used by earlier versions of GETAFILE).
  477.              * the ability to automatically generate a description for
  478.                HTML, Text, and .ZIP files
  479.              * the ability to "expand" .ZIP files, and to extract files from
  480.                .ZIP files
  481.          Note: the !DIR built-in facility also has the first two of these
  482.                features (but NOT the .ZIP file expansion capability)
  483.  
  484.      *   Several new special "directives" have been added:
  485.            !SENDAS_MIMETYPE_SUBTYPE -- forces server to use a particular
  486.                                         mime-type/subtype
  487.            !DELSEND  -- Sends, and then deletes, files from the
  488.                         TEMPFILE_DIR directory.
  489.            !FORCE -- Used in LOGON_FAIL_FILE s to "force" a logon.
  490.                      It also can be used to "suppress the SSI-CACHE",
  491.  
  492.      *   The SRE-Filter configurator has been substantially re-done.
  493.          There is now a "simple" mode configurator, as well as the
  494.          older "intermediate" mode configurator. As part of this process,
  495.          the FILTINST.* files have been renamed. If you use the
  496.          defaults to install SRE-Filter (ver 1.2h), you can invoke
  497.          the configurator by pointing your browser at
  498.          http://your.server/CONFIGURE
  499.  
  500.      *  The CACHED_FILES parameter has been dropped.
  501.  
  502.      *  A seperate "thread" has been added to handle the "SSI-Cache".
  503.         The SSI-Cache is used to cahce html documents which contain server
  504.         side includes.
  505.         SSICACHE.HTM contains a description of how "SSI-caching" works,
  506.         and how you can configure it.
  507.  
  508.       * If the HEADER.1 parameter begins with a <BODY>, it will replace the
  509.         first <BODY> element (rather the follow it).
  510.  
  511.      *  Self-recursive (hence infinite) server-side includes are now trapped.
  512.  
  513.      *  Several new documentation files have been added, including GUIDE.HTM --
  514.         a guide to the features of SRE-Filter (it complements SUMMARY.HTM).
  515.  
  516. 1/14/97 -- Version 1.2g.113
  517.  
  518.      * Several small bugs in the SSI-caching algorithim were fixed (?OPTIONS
  519.        #FLASTMOD, and #FSIZE were not being replaced)
  520.  
  521.      * The CONFIG2.CMD "intermediate configurator" returned a "Sorry"
  522.        message if the client did not have SUPERUSER privileges. It will now
  523.        challenge the client for username/password.
  524.  
  525.       * STATUS.CMD will now report on the number of !DIR and SSI-Cache
  526.         files. It can also be instructed to "clear the !DIR cache".
  527.         STATUS.HTM has also been upgraded -- it now has
  528.         several other "configuration and status" options
  529.  
  530.      * A "install code only" option has been added to the INSTALL program
  531.        (this should be useful to upgraders).
  532.  
  533. 1/18/97 -- Version 1.2g.118
  534.  
  535.      * Modified the access_fail_File feature to facilitate "dynamic
  536.        privileges" (a value of 1, and -1, now have special meanings)
  537.  
  538.      * A few new add-ons are  available (_COMMAND and SREFANIM).
  539.  
  540.      * A new special command, !AUTHORIZE, has been added. When issued,
  541.        SRE-Filter will send back an "authorization" request (this is
  542.        intended for administrator use).
  543.  
  544.      * The WRITE_TO_FILE option of the MESSAGE facility did not understand
  545.        y or yes (lower case).  This has been fixed.
  546.  
  547.      * A REDIR option is now available for the NOEXT_TYPE parameter -- it is
  548.        similar to DIR, but will redirect the client before attempting to
  549.        resolve the  directory specific name.
  550.  
  551. 1/23/97. Version 1.2h.123
  552.  
  553.      * A MULTI_SEND option has been added to the DIR_OPTIONS parameter.
  554.        It instructs !DIR to send "status messages" to Connection:Keep-Alive
  555.        capable browsers.
  556.  
  557.      * SREF_MULTI_SEND, a new procedure to facilitate multiple part documents,
  558.        has been added to the SRE-Filter macrospace library.
  559.  
  560.      * The _COMMAND add-on would crash under Merlin when input was expected.
  561.        This has been fixed.
  562.  
  563.  
  564. 1/25/97. Version 1.2h.1.25
  565.      *  Fixed several bugs:
  566.           i) SENDFILE did not include a content-length header: netscape
  567.              would show NO status information during downloads.  This
  568.              has been fixed.
  569.          ii) PUBLIC_URLS that began with a / did not match otherwise
  570.              equal request strings. Now, leading / and \ are stripped.
  571.        * The documenation was edited again (and not for the last time)
  572.  
  573.  
  574. 2/09/97.  Version 1.2h.209
  575.      * Fixed several bugs:
  576.         i) The !DIR facility did not properly deal with files that had
  577.            no extension.
  578.        ii) The AUTO_DESCRIBE=0 and DESCRIBE=0 "request string" options of
  579.            the !DIR facility did not work.
  580.       iii) The DIRINFO.RXX "interpretable" file returned incorrect results.
  581.        iv) The #CONFIG NCSA SSI directive was being improperly cached.
  582.  
  583.     * Fixed a bug caused by an incompatability between the Toronto Virtual
  584.       File System and REXX.  This bug caused incorrect output from the
  585.       !DIR facility (and add-ons that used the SYSFILETREE procedure). Work
  586.       arounds for this have been put into place.
  587.  
  588. ----------------
  589. On 5 March 1997, a new version of SRE-Filter was released (SREFV12I.ZIP).
  590.  
  591. Changes from 1.2h to 1.2i (other then various bug fixes, mostly dealing
  592. with proper detection of post-filter suppression)
  593.  
  594.  * STATUS.HTM has been upgraded (it now contains a number of configuration
  595.    links).
  596.  
  597.  * New options added  to the ACCESS_FAIL_FILE parameter
  598.  
  599.  * A REDIR option is now available for the NOEXT_TYPE parameter --
  600.    it cause a redirection back to xxx/yyy/.
  601.  
  602.  * A MULTI_SEND option has been added to the DIR_OPTIONS parameter.
  603.    It instructs !DIR to send "status messages" to Connection:Keep-Alive
  604.    capable browsers.
  605.  
  606.  * SREF_MULTI_SEND, a new procedure to facilitate multiple part documents,
  607.        has been added to the SRE-Filter macrospace library.
  608.  
  609.  * A "change the configurator background colors" facility is now built into
  610.    the configurator
  611.  
  612.  * A special environment variable, SREF_PRIVSET, has been added to the CGI-BIN
  613.    enviornment variables.  Similarly, PRIVSET is now added to the SAVE_STATE
  614.    "thread specific cache"
  615.  
  616.  * SRE-Filter will now record requests in a common-log audit file (as
  617.    well as record browsers and referers in seperate log files).
  618.  
  619.  * Several new add-ons are now available (including an updated search
  620.    engine facility).
  621.  
  622.  * The documentation was put through a heavy edit. Besides a lot of
  623.    new and revised verbiage, be aware that some of the terminology
  624.    has changed. In particular:
  625.      the term "URL-specific" has been changed to "SEL-specific", and
  626.           "requested URL" has been changed to  "request selector"
  627.    (it still leaves something to be desired, but it's more technically
  628.    accurate)
  629.  
  630.  * The SREFQUIK variant was improved: a few bugs fixed, a new option to
  631.    control "post-filtering", and much better documentation (SREFQUIK.DOC).
  632.  
  633.  * You can now "suppress hits" from supersers, as well as owners
  634.    (see the description of HIT_SUPERUSER_SUPPRESS in INITFILT.DOC).
  635.  
  636.  * A new set of  "advanced options" can be enabled on a "SEL-specific"
  637.    basis. These include pre-file-transfer execution of an external
  638.    REXX procedure, customization of the response headers, and
  639.    selective suppression of server side includes (see ADV_OPTS.DOC for
  640.    details).
  641.  
  642.  * A few of the less frequently used SRE-Filter facilities (such as PUT
  643.    request processing) were not properly interpreting the "homename" variable.
  644.    This has been fixed.
  645.  
  646.  * The #INCLUDE and INCLUDE ssi-keyphrases are now slightly different ---
  647.    INCLUDE will check for "recursive includes", #INCLUDE will not. Since
  648.    a very simple recursive-file checking algorithim is used, INCLUDE will
  649.    only let you include a file ONCE -- if you want to include a file
  650.    twice (say, a button bar list at the top and bottom of your document), use
  651.    #INCLUDE.
  652.  
  653.  
  654.  
  655. 3/18/97
  656.  
  657.   * The "username" feature of the "nologs" option for suppressing
  658.     common-log audit file entries was not working (it has been fixed).
  659.  
  660.   * The !DIR directive now understands the * wildcard character.
  661.  
  662. 3/21/97
  663.   * The intermediate configurator "over-refreshed" (when a back button
  664.     was pushed).  This has been fixed.
  665.  
  666. 3/22/97
  667.   * A new option, NOREFERERS, has been added to the SREFLOGS.INI file
  668.   * An advanced Status facility (NUSTATUS) is now available.
  669.  
  670. 3/25/97  --- Version 1.2i.325 released.
  671.  
  672.   * Several bugs relating to the use of INHOUSEIPS. were fixed. In addition, you
  673.      can now use * in IP names with INHOUSEIPS. parameters.
  674.   * CERN imagemaps are now supported (as well as NCSA imagemaps).  See
  675.      the NCSA_ISMAP and CERN_ISMAP parameters (in INITFILT.DOC) for details.
  676.  
  677. 4/01/97  --- Version 1.2i.401 released
  678.   *  Documents containing SELECT ssi-keyphrases will now be cached.
  679.   *  FREEUP procedure has been simplified and fixed.
  680.  
  681. 4/02/97
  682.    *  COUNTER.RXX failed when used as an "INTERPRET FILE" keyphrase. This has been
  683.       fixed.
  684.  
  685. 4/03/97
  686.    *  SRE-Filter would crash when a very long request string was recieved,
  687.       common-log audting was on, and VERBOSE>0.  This has been fixed.
  688.  
  689. 4/06/97 -- Version 1.2i.497a release  (note change in version numbering scheme)
  690.    *  Minor improvements to the RECORD_ALL_FILE caching algorithim.
  691.    *  Added a "save total bytes and bytes sent" option to COUNTER.RXX.  Also
  692.       a minor edit of COUNTER.DOC.
  693.    *  Minor changes to SREFMON.CMD (corrected some low probability bugs).
  694.    *  Minor changes to GETAFILE add-on.
  695.    *  Due to minor format misspecification, common-log files were not being read by
  696.       several log-audit tools (such as GETSTATS and ANALOG).  This has been fixed.
  697.  
  698. 4/15/97
  699.     * Minor changes to COUNTER.RXX: fixed some small bugs. More importantly,
  700.       add a DURATION option (for reporting number of hits in last "duration" days).
  701.     * When a !SENDAS_x_y requeset string (without anything after the "y") was recieved,
  702.       SRE-Filter would CRASH.  This has been fixed.
  703.  
  704. 4/17/97:  Version 1.2i.497b release
  705.     *  When host specific parameters were commented out, they were not being removed from
  706.        the SRE-Filter environment.  This has been fixed.
  707.     *  You can now redirect a DEFAULT, by entering the full URL (this is mostly useful
  708.         if you have multiple hosts).
  709.  
  710. 4/22/97
  711.     * The intermediate configurator failed to save the DO_HTACCESS variable. This has
  712.        been fixed.
  713.     *  A "shut down and restart GoServe/SRE-Filter remotely" add-on is now available.
  714.  
  715. 5/01/97 : Version 1.2i.597a released.
  716.      * Fixed a few bugs related to access control:
  717.           i) Headers  sent after closing connection,
  718.          ii) SELECT keyphrases failed when !FORCE used.
  719.      * A new "run scheduled events" option has been added.  See the description of the
  720.         SCHED. options in SREFLOGS.DOC for details (and see the RENLOGS.CMD
  721.         program for an example of a scheduled program, it is used to rename your log files).
  722.      * SRE-Filter would crash when a TZ= variable (for time zone specification) was not
  723.         specified in CONFIG.SYS.  This has been fixed.
  724.  
  725. 5/03/97:
  726.      *  The "recent hit's cache" is no longer stored in the environment.  Instead, a
  727.          special "variable storage" SRE-Filter thread is used.  Operationally, this means
  728.          that "5K" suggested size (yielding about 100 hits) is no longer operational.  Instead,
  729.          a recommended size of 500 to 1000 is recommended (i.e.; the value of
  730.          HIT_CACHE_LEN should be changed from 5 to 500).
  731.       *  A new "clientname" cache has been implemented.  This is used to avoid
  732.          calls to the DNS.  Note that the "variable storage thread" is used, with
  733.          a limit of about 800 entries (with a one hour duration).
  734.       *  Fixed a mild bug in COUNTER.RXX (counts in "last n days" was one too large).
  735.  
  736. 5/06/97:
  737.  
  738.       *  Fixed a mild bug in COUNTER.RXX (that caused the WRITE_USERS=0
  739.          option to be ignored).
  740.  
  741.  
  742. ------------
  743. On June 9, a version 1.2j.697c, was released,  (SREFV12J.ZIP).
  744.  
  745. Changes from ver 1.2i include:
  746.  
  747.       *  SREFAST, a "small and fast" variant of SRE-Filter is now available.
  748.          It's a more flexible alternative to SREFQUIK, but requires a fair amount
  749.          of configuration.  See SREFAST.DOC for details.
  750.  
  751.       *  For aesthetic and security reasons, SRE-Filter now stores configuration
  752.          procedures, "addons", and INTERPRETable .RXX files in an ADDON_DIR directory.
  753.          That is, it no longer uses (by default) the "GoServe working directory".  
  754.          Upgraders should modify INITFILT.80 accordingly -- you may also want to 
  755.          remove duplicate versions of these procedure (the INSTALL program 
  756.          contains additional details).
  757.                Some older versions of SRE-Filter addon's might not run
  758.                properly with this ADDON_DIR feature.  You can either
  759.                download the latest versions of the addons, or you can
  760.                sacrifice a little bit of security by setting ADDON_DIR
  761.                to equal the GoServe working directory.
  762.  
  763.        * To avoid problems with changing default directories when running external
  764.          procedures,  SRE-Filter  will load, call, and then remove procedures from
  765.          macrospace. This should eliminate some occasional problems that can occur
  766.          on busy sites, but might slow things down a bit.
  767.          In addition, a new set of parameters, KEEP_ADDONS.n have been added
  768.          to INITFILT.80.  These (which can only be changed by hand) can be used
  769.          to specify "add-ons" to retain in macrospace -- which should lead to
  770.          much quicker loads (see INITFILT.DOC for details).
  771.  
  772.        * As a security measure, you can now specify a DIR_ACCESS and DIR_ACCESS_PRIVS
  773.          parameters.  These are used by !DIR and GETAFILE to suppress display of
  774.          directories. INITFILT.DOC and DIR.DOC contain a further discussion.
  775.        * A "multiple" wildcard algorithim is now used in ACCESS control 
  776.          (ALL_FILE.CTL) and aliasing (ALIASES.IN).
  777.          Thus, entries of the form /SCHOOL/*/FACULTY/*/PERSONAL are
  778.          allowed.  For example, this would match:
  779.             /SCHOOL/PEOPLE/FACULTY/JONES/PERSONAL).
  780.          See SREFILTR.FAQ for details.
  781.        *  The browser log can now produce GoHTTP style, or Apache style, output.
  782.           In addition, a "combined log" can now be produced.
  783.        *  Fixed some mild bugs in HTTPD-style server side includes
  784.        *  The simple configurator set CHECKLOG='YES', instead of CHECKLOG='ALWAYS'.
  785.           This has been fixed.
  786.        *  The POSTMAIL.80 "e-mail event alert" post-filter procedure had several bugs
  787.           that rendered it flakey.  These have been fixed.
  788.        *  INTEPRET keyphrases that issued completion codes (such as 'VAR xxx ')
  789.           would cause inappropriate errors to be written to the GOAUDIT.80
  790.           log file.  This has been fixed (an example of this occured when
  791.           TESTTABL.HTM was called by an unrecognized browser).
  792.         * When a download was aborted by the client, the commonlog recorded
  793.           the file size as the number of bytes sent. This has been fixed.
  794.         * Several changes were made to CGI-BIN; with the goal of compatability
  795.           with ICS and NCSA servers. A new parameter (EMPTY_PATH_OK) can
  796.           now be set to control which "flavor" of CGI-BIN to emulate
  797.           (ICS/NCSA or GOHTTP).
  798.         * Several improvements were made to COUNTER.RXX.  Of especial interest,
  799.           COUNTER.RXX can now be used to create counters with "fancy digits".
  800.         * DEFAULT can now contain several possible file names; they will
  801.           be looked for in order.   
  802.        
  803. 6/20/97 : ver 1.2j.697g
  804.         * Several improvements to SRE-Filter's exception handling.
  805.         * A modification to SRE-Filter's use of macrospace to run addons was
  806.           made -- refreshes of procedures will occur only if no other clients
  807.           are active (problems were occuring when simultaneous request for
  808.           server side processing occured)
  809.         * FIX_EXPIRE now works with CGI-BIN output.
  810.         * A "gif text" generator addon is now available (it's used exposed
  811.           the problem listed just above).
  812.         * A !RUN special command can now be used to expedite processing of
  813.           SRE-Filter addons that you reference with a KEEP_ADDON. entry.
  814.  
  815. 6/24/97: ver 1.2j.697i
  816.         *  GET selectors can now contain spaces (i.e.; /MYSTUFF/FOO%20BAR.HTML )
  817.            that refer to long filenames that contains spaces.
  818.         *  More improvements to SRE-Filter's exception handling.
  819.  
  820. 6/25/97: ver 1.2j.697j
  821.         *  Fixed an error with the SSI-Cache.  This error often manifested itself
  822.            when using INTERPRET keyphrases.
  823.  
  824. 6/29/97: ver 1.2j.697k
  825.        *  To avoid conflicting with the FILEREXX library, the FILEREAD procedure
  826.            from REXXLIB is now loaded with the name SREF_FILEREAD.  
  827.            All references to FILEREAD have been recoded to SREF_FILEREAD
  828.            (except the addons, they were not modified).
  829.        *   Instead of using PMPRINTF, SRE-Filter uses "PMPRINTF_SREF".
  830.            In addition to preventing some fatal errors, you can control PMPRINTF_SREF
  831.            output with the PMPRINTF_OPT parameter (in srefiltr.80).
  832.  
  833. 7/03/97: ver 1.2j.797a
  834.         *  Fixed a small bug in !DIR; !DIR?/ would not work it the
  835.            data directory was a root drive (such as G:\).
  836.  
  837. 7/06/97: ver 1.2j.797b
  838.         * PMPRINTF output now handled by a seperate thread-- this thread
  839.           will lazy write output (by default, every 1.3 seconds)
  840.           Note that "addons" still call pmprintf.
  841.         * Minor edit of several documentation files
  842.         * The "auto_name" portion of the simple configurator was upgraded.
  843.         * When CGI-BIN scripts were invoked via a DEFAULT or an alias,
  844.           information was not being properly processed.  A fix has been
  845.           applied; but to be safe, we recommend using "external redirection" 
  846.           to  invoke CGI-BIN scripts (instead of internal redirection).
  847.         * !DIR was not handling no-extension files properly. This has been
  848.           fixed
  849.  
  850. 7/07/97: ver 1.2j.797c
  851.         * A stand-alone "SREFILTR.80" editor (EDITSREF.CMD) is now
  852.           included (it's especially useful for remote, TELNET, configuration).
  853.           This required minor changes in the user-configurable parameters
  854.           section of SREFILTR.80
  855.  
  856. 7/08/97: ver 1.2j.797d
  857.         *  Fixed a problem with the ACCESS_FAIL_FILE and LOGON_FAIL_FILE 
  858.            #LINK option -- NetScape would go into an endless loop
  859.            (solution involved changing  !FORCE? to !FORCE/)
  860.     
  861.         *  A rare bug inthe PMPRINTF thread" was fixed (occured when
  862.            a %ab was written).
  863.  
  864. 7/10/97: ver 1.2j.797e
  865.         *  Fixed up the LOGON_FAIL_FILE and ACCESS_FAIL_FILE -- these
  866.            files will now be displayed if the client immediately cancels
  867.            (previously, one attempt was required).
  868.  
  869. 7/11/97: ver 1.2j.797f
  870.           
  871.         *  Fixed a problem with FIX_EXPIRE and CGI-BIN scripts (content-type
  872.            was not being properly returned for non-html files
  873.         *  Added a "send CGI-BIN output as is becomes available" options.
  874.            See the discussion of the CGI_BIN_PIECES variable (in INITFILT.DOC),
  875.            for further discussion
  876.         *  In addition to SREFILTR.80, SREFAST.80 and COUNTER.RXX can now
  877.            be edited with the EDITSREF "command line" editor.
  878.  
  879. 7/11/97: ver 1.2j.797g
  880.  
  881.         *   Due to instability of the named-pipe procedures, a second
  882.             "send cgi-bin output in pieces" mode was added. This mode
  883.             (cgi_bin_Pieces=2) REQUIRES the FILEREXX procedure library
  884.             (available from hobbes.nmsu.edu).
  885.  
  886.  
  887. 7/17/97: ver 1.2j.797h
  888.         *   Added an "include only if matches a PATTERN=",
  889.             and a "add special directive PREFIX= option,
  890.             to !DIR (see DIR.DOC for details)
  891.  
  892.         *   The GETAFILE addon will support the PATTERN= option.
  893.             It can also check files for "all text characters", and
  894.             return the document as text/plain if the file IS al characters.
  895.  
  896.         *   Two special values of !SENDAS were added: SENDAS_TYPE_CHECK
  897.             and SENDAS_TEXT_CHECK
  898.  
  899. 7/20/97: ver 1.2j.797i
  900.  
  901.         *  Added a "suppress remote configuration option" (see the
  902.            NO_REMOTE_CONFIG parameter in SREFILTR.80).
  903.         *  A few minor modifications to the configurator forms.
  904.         *  Small improvements to the DOGET.CMD utility: username/password
  905.            can now be added (it will be encoded for you), 
  906.            as can other request headers.
  907.  
  908. 7/23/97: ver 1.2j.797j
  909.  
  910.         * You can now add a username and password to remote virtual directories.
  911.           It will be sent to the remote server in a request header (after
  912.           being pack64 encoded).
  913.  
  914.  
  915. 8/01/97: ver 1.2j.897a
  916.         
  917.         * Fixed a problem when long filenames were processed for SSI's
  918.           (a GOSERVE auditing problem ).
  919.  
  920.  
  921. 8/29/97: ver 1.2j.897b
  922.         * Changed naming of CGI-Bin temporary files to avoid possible
  923.           (albeit rare) naming conflict.
  924.         * Occasional cleanup of "orphaned" CGI-BIN temporary files
  925.           will now be done (this feature can be suppressed by modifying
  926.           SREFMON.CMD))
  927.  
  928. 9/08/97: ver 1.2j.997a
  929.         * Modified SREFMON.CMD, and the configurators, to appropriately
  930.           deal with ' characters in initfilt.80.
  931.  
  932. 9/18/97: ver 1.2j.997b
  933.  
  934.         *  Added a "run custom initialization procedures" feature (allows
  935.            you to specify REXX programs to run when Goserve/Sre-filter starts).
  936.         *  A new addon, PRELOAD, is now available.  Designed to be used
  937.            as a custom initialization procedure, PRELOAD will
  938.            hit your server with a specified set of requests -- useful for
  939.            immediately loading ("preloading" before a real request arrives)
  940.            information into the the various goserve/sre-filter caches.
  941.  
  942. 9/20/97: ver 1.2j.997c
  943.         *  Modified the SIZEFMT=ABBREV NSCA-style SSI directive. It will now
  944.            produce nnn.nnM style abbreviations (rather then nnnM 
  945.            abbreviations). If you want the nnnM style, use MABBREV
  946.            instead of ABBREV.
  947.  
  948.         *  A shorthand for the <!-- INTERPRET FILE xxx.xx --> SSI keyphrase
  949.            is now supported. By default, this is <!-- $ xxx.xx -->. If
  950.            desired, $ can be changed to some other character string
  951.            (see the QUICK_INTERP parameter in SREFILTR.80).
  952.         *  A shorthand for the <!-- INTERPRET code abc ; def --> SSI keyphrase
  953.            is now supported. By default, this is <!-- # abc ;def  -->. If
  954.            desired, # can be changed to some other character string
  955.            (see the QUICK_INTERP_CODE parameter in SREFILTR.80).
  956.  
  957.         *  A set of global parameters is now available for INTERPRET
  958.            keyphrases in a document. These can be referenced by
  959.            using GLOBALS.varname  "stem variables".  Note that these
  960.            parameters are "global" only to a particular request; and
  961.            that other parameters are "local" to a given "<!-- INTERPRET ...
  962.            keyphrase.
  963.  
  964.  
  965.  
  966.  --- End of document.
  967.  
  968.  
  969.