home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spezial / SPEZIAL2_97.zip / SPEZIAL2_97.iso / ANWEND / ONLINE / SREFV12J / SREFILTR.FAQ < prev    next >
Text File  |  1997-07-06  |  45KB  |  943 lines

  1. 06 Jul 1997     SRE-Filter Frequently Asked Questions
  2.  
  3.                -------------------------------------
  4.  
  5. This document answers the following questions:
  6.  
  7. * What is SRE-Filter and GoServe?
  8. * What can SRE-Filter do?
  9. * What does SRE-Filter cost?
  10. * Where can I get SRE-Filter?
  11. * I downloaded SREFV12J.ZIP, how do I install it?
  12. * Can SRE-Filter run under Object REXX.
  13. * How do I configure SRE-Filter?
  14. * Can I edit SRE-Filter's configuration files?
  15.  
  16. * How can I control access to my site?
  17. * How can I use selector specific access controls to control access to a directory?
  18. * What are "client privileges" and "resource privileges" ?
  19. * What's the difference between REALMS and privileges?
  20. * I'm still confused about these privilege things?
  21. * How can I limit the capabilities of different users of our server?
  22. * How can I prevent other web sites from using images stored on our server?
  23.  
  24. * What are the server side include capabilities of SRE-Filter?
  25. * Can I use cookies with GoServe and SRE-Filter?
  26. * I am having trouble with uploads, what should I do?
  27. * What about default documents?
  28. * What are SRE-Filter's virtual directories?
  29. * How do I redirect a request?
  30. * Can I customize SRE-Filter responses?
  31. * How does SRE-Filter deal with multiple "wildcard" matches?
  32. * How can I record the number of hits I get?
  33. * How can I speed up throughput?
  34. * How do I define new MIME media types?
  35. * How can I prevent NetScape from reloading files too frequently?
  36. * What are the SRE-Filter add-ons?
  37.  
  38. To users of Don Meyer's GoHTTP -- where appropriate, this document notes
  39. the similarities between the two filters.  You might want to pay special
  40. attention to:
  41.     What are "client privileges" and "resource privileges"?
  42.     How do I redirect a request?
  43.     What are SRE-Filter's virtual directories?
  44.     How can I control access to my site?
  45.  
  46.  
  47.                    ------------------------------------------
  48.  
  49.  
  50. *** The basics:
  51.  
  52. * What is SRE-Filter and GoServe?
  53.  
  54.    SRE-Filter is a "filter" for the GoServe OS/2 Internet Server.
  55.    GoServe, an IBM EWS "freeware" product, is an HTTP (web) and Gopher server.
  56.    GoServe requires a "filter", written in REXX, to interpret and process
  57.    requests for resources.  SRE-Filter is one of several such filters.
  58.  
  59. * What  can SRE-Filter do?
  60.  
  61.   In a nutshell:
  62.     SRE-Filter is designed to provide a web server for non-cutting
  63.     edge, small-to-medium load sites being maintained by non-professionals
  64.     who want a fair degree of functionality in an easily maintained system.
  65.  
  66. * What does SRE-Filter cost.
  67.  
  68.   $0.00.  You may freely distribute SRE-Filter, and you may dissect, subsect,
  69.   and otherwise utilize it's source code.  Please be aware of the standard
  70.   "use at own risk" disclaimer, and the fact that SRE-Filter is in NO way
  71.   an official or unofficial product of the U.S government.
  72.  
  73. * Where can I get SRE-Filter
  74.  
  75.   The latest version of SRE-Filter (it's constantly being updated) can be
  76.   found at http://rpbcam.econ.ag.gov/srefilter.  If you have
  77.   problems with downloading large files over the web, you can
  78.   find FTP instructions at the above URL.
  79.  
  80. **** Installing SRE-Filter:
  81.  
  82. * I downloaded SREFV12J.ZIP, how do I install it?
  83.  
  84.    i) Create a temporary directory somewhere on your hard drive,
  85.    ii) Copy SREFV12J.ZIP (or the several "pieces") to this temporary directory
  86.   iii) Using UNZIP, unzip SREFV12J.ZIP 
  87.   iv) Read the READ.ME file
  88.    v) Run the INSTALL program (type INSTALL from an OS/2 prompt)
  89.  
  90. * Can SRE-Filter run under Object REXX?
  91.  
  92.   SRE-Filter was designed to run under "classic" REXX (technically, REXXSAA).
  93.   Unfortunately, for several reasons, the current version of SRE-Filter
  94.   (ver 1.2j) will NOT run object REXX.
  95.  
  96.   If you really want to use SRE-Filter and Object Rexx, you might
  97.   be interested in obtaining ver 1.2g of SRE-Filter, and some
  98.   special modifications of ver 1.2g.  However, besides lacking
  99.   many features of the current version, experience has shown that
  100.   this combination (modified 1.2g and Object Rexx) is not very stable.
  101.  
  102.   For details, see the "are you using OBJECT REXX" link on the
  103.   SRE-Filter home page.
  104.  
  105.   Author's note:  If there is real interest in using SRE-Filter in an
  106.   Object REXX environment, I might be persuadable ...
  107.  
  108. * How do I configure SRE-Filter?
  109.  
  110.    Most people will probably want to use the built in configurator.
  111.    This configurator is designed to be run via your web brower.
  112.    Assuming you did not make major modifications to SRE-Filter's
  113.    installation defaults, you can just point your web browser at:
  114.            http://your.browser.wherever/configur.htm
  115.    You will then be given the choice between a "simple-mode",
  116.    "intermediate mode", and "expert mode" configurator.  New users
  117.    will probably like the "simple mode" best.
  118.  
  119.    Both the simple and intermediate modes make heavy use of HTML
  120.    FORMS.  The simple mode has a "one, well-documented, form
  121.    per parameter" philosophy.  The intermediate mode has a
  122.    "one, not-so-well-documented, form for a large set of parameters"
  123.    The advantage of the simple mode is ease of use.  The disadvantage
  124.    is that it does not give you access to some of the more obscure
  125.    SRE-Filter parameters.
  126.  
  127.     Hint: If SRE-Filter denies you access to the configurator, you should
  128.           check the OWNERS variable (in INITFILT.80) to make sure it's
  129.           that same as your browser's IP address.  Or, use the
  130.           username/password that the INSTALL procedure asked you to
  131.           supply (or did you skip that part)?
  132.  
  133. * Can I edit SRE-Filter's configuration files?
  134.  
  135.   For those who like to make their changes quickly, you may want
  136.   to directly edit the SRE-Filter configuration files, and not
  137.   bother with the configurator. The configuration files are
  138.   all text (ascii) files, which you can modify with your favorite
  139.   text edtior (such as OS/2's EPM editor).
  140.   The most important configuration files are:
  141.        INITFILT.80, ALIASES.IN, ALL_FILE.CTL, VIRTUAL.IN, and USERS.IN.
  142.   INITFILT.80 is in the GoServe "working" directory (the directory you
  143.   installed SREFILTR.80 to). By default, other configuration files are
  144.   in the DATA/ subdirectory of the GoServe working directory.
  145.  
  146.   If you plan on editing INITFILT.80, you should read INITFILT.DOC first.
  147.   For the other files, pay attention to comments (lines that start
  148.   with a semi-colon) embedded in the default versions of these file -- they
  149.   provide detailed syntax information.
  150.  
  151. *** Some more specific questions:
  152.  
  153. *  How can I control access to my site?
  154.  
  155.    SRE-Filter contains three levels of access controls:
  156.  
  157.    *) LOGON controls: a "can you get into our site" control.
  158.    *) Directory specific: directory specific controls using  HTACCESS files.
  159.    *) Resource specifc: "SEL-specific" access controls contained in the
  160.       ACCESS_FILE (i.e.; data/all_file.ctl).
  161.  
  162.    Logon controls pertain to all requests.  You can tell SRE-Filter
  163.    to check none, some, or all requests for username/password authorization
  164.    (using the BASIC authorization scheme).
  165.  
  166.    For details on "logon controls", see the description of the CHECKLOG,
  167.    OWNERS, INHOUSEIPS, and UNALLOWEDIPS variables in INITFILT.DOC.
  168.    Or, check out the appropriate sections in the "simple mode" configurator.
  169.  
  170.    Of greater interest are the "directory specific" and "SEL-specific"
  171.    access control methods.  The HTACCESS method (using code graciously
  172.    provided by Don Meyer) uses special "HTACCESS" files located in the
  173.    directory (and in the parent directories) of the requested file.
  174.    This (or these) HTACCESS files contain information on who has access
  175.    rights to files in the directory (and in child directories).
  176.  
  177.    In contrast, "SEL-specific" access controls compare the request selector
  178.    against a list of "selectors".  This list (which may contain wildcarded
  179.    entries) dictates who can access these selectors.  Note that, in contrast
  180.    to HTACCESS files, there is one globally maintained list, rather then
  181.    seperate "HTACCESS file" per directory.
  182.  
  183.         Note that we use the term "SEL-specific" to mean "Selector-specific",
  184.         where the "selector" is the slightly-modified middle portion of
  185.         the client's request string.
  186.         For example, a URL of
  187.               http://foo.bar.net/dir1/redsox.htm
  188.         would generate a request string of
  189.               GET  /dir1/redsox.htm  http/1.0
  190.         which yields a selector of
  191.                    dir1/redsox.htm
  192.         In other words, SEL-specific access controls are
  193.         sensitive to how you code links in your HTML documents.
  194.  
  195.    The choice of method is a matter of taste and convenience -- controlling
  196.    directories is a sure way to prevent access to files, but controlling
  197.    selectors is more flexible.  In fact, these two methods (SEL-specific and
  198.    directory-specific) can be used jointly, which implies multiple checks. But
  199.    be careful when using both methods, it is possible to get stuck in
  200.    authorization loops!
  201.  
  202.    Since "SEL-specific" controls are native to SRE-Filter, they will tend
  203.    to be faster.  Therefore, our recommendation is to use the SEL-specific
  204.    method. If you do go with the "directory-specific" (HTACCESS) method, and
  205.    you want to suppress lookup in the access control file (by setting
  206.    ACCESS_FILE=' '), be aware that you will suppress other SRE-Filter
  207.    options (see the description of the ALLOW_ACCESS paramter in INITFILT.DOC,
  208.    or see the ALL_FILE.CTL file, for a description of these options).
  209.  
  210.    Lastly, to allow unhindered access to selected clients, or to a subset of
  211.    your site, you can use INHOUSEIPS. and PUBLIC_URLS. parameters.
  212.  
  213.     *  You can circumvent access controls for selected server resources by
  214.        by using the PUBLIC_URLS parameters.  When the client's 
  215.        "request selector" matches a PUBLIC_URLS, access controls are not 
  216.        attempted.
  217.  
  218.     *  INHOUSEIPS. parameters are similar to the IDENT method of
  219.        authorization (but INHOUSEIPS. does not obtain or use
  220.        username@ information).  Basically, if a client's IP address
  221.        matches one of a set of "INHOUSEIPS", she is given access
  222.        to the site (though she may still need resource/directory specific
  223.        privileges).  Note that these INHOUSEIPS entries may contain wildcard
  224.        characters.
  225.  
  226.     *  By the way, the simple mode configurator can be used to create,
  227.        and remove  both INHOUSEIPS. and PUBLIC_URLS. (note that the
  228.        PUBLIC_URLS are also called "public areas")
  229.  
  230. * How can I use selector specific access controls to control access to a
  231.   directory?
  232.  
  233.    Since "SEL-specific" can refer to "a set of resources on your server"
  234.    (via the use of the * wildcard), and since selectors typically point
  235.    to directories, "SEL-specific" controls are easily used to control
  236.    access to files in a subdirectory.
  237.  
  238.    A simple example follows:
  239.  
  240.    1) Place an entry in the access_file (e.g.; ALL_FILE.CTL) of the form
  241.             Relative_DIR_NAME/*    A_Privilege
  242.       For example:
  243.              ROCKETS/*    ROCKETEERS
  244.        (...to access selectors beginning with ROCKETS/, the client 
  245.            must have a  ROCKETEERS  priviliege).
  246.  
  247.    2) Place an entry in the USERS_FILE (e.g.; USERS.IN) of the form:
  248.            username  password  privilege_list
  249.       For example:
  250.            OBRIEN  JORDIX2  ROCKETEERS
  251.        (.. User OBRIEN, with password JORDIX2, has a ROCKETEERS privilege).
  252.  
  253.    3) Set ALLOW_ACCESS="NO" (in INITFILT.80)
  254.       (... SRE-Filter will check privileges for all requests).
  255.  
  256.    4) you might want to add a
  257.          *  *
  258.      entry to the ACCESS_FILE file to signal "all other files/directories
  259.      are open access".
  260.  
  261.    Summarizing this example:
  262.      When the client asks for anything in (or under) the ROCKETS subdirectory
  263.      (of your GoServe data directory), SRE-Filter will challenge the user
  264.      for a username and password.  If the client enters a username
  265.      with the correct privileges (such as OBRIEN), he will be allowed entry.
  266.  
  267.    Notes:
  268.       *  If CHECKLOG='ALWAYS', SRE-Filter will only "re-challenge"
  269.          the client if his initial logon privileges did NOT contain a
  270.          matching privilege.
  271.       *  The simple mode SRE-Filter configurator can be used to add
  272.          (and remove) both SEL-specific access controls and
  273.          username/password entries.
  274.  
  275. * What are "client privileges" and "resource privileges" ?
  276.  
  277.     SRE-Filter uses "privileges" to provide flexibility and brevity
  278.     when assigning (and determining)  access rights.
  279.  
  280.     "Client privileges" are assigned to clients in a variety of
  281.     fashions (typically as part of their username/password
  282.     authentication).  In a sense, "client privileges" can be thought of
  283.     as shorthands for "groups of users".  In fact, one could simply
  284.     define the client's username as a (or as the only) privilege
  285.     (the ADD_USER_NAME variable is used for just that purpose!).
  286.  
  287.     The point is that by allowing multiple privileges per username,
  288.     a given client can be placed in many different groups of users.
  289.  
  290.     "Resource privileges", contained in SEL-specific access
  291.     control entries (in the ACCESS_FILE), refers to these "client privileges".
  292.     Resource privlieges can be thought of as a list of
  293.     "groups of users".  In the extreme case of each username
  294.     having a single privilege (equal to her username), the "resource
  295.     privileges" list the acceptable users!
  296.  
  297.     The use of REALMs can further augment the resource privilege list.
  298.     Each REALM is associated with it's own list of privileges.
  299.     REALM information, when specified for a particular SEL-specific access
  300.     control entry, augments the entries "own" privileges with the
  301.     "resource privileges list" associated with this REALM.
  302.  
  303.     In comparison to the HTACCESS method:
  304.        * The PASSWD.LST file is akin  to SRE-Filter's USERS.IN file
  305.          (albeit one that's directory specific); but with each entry
  306.          (in PASSWD.LST) assigned just an "own name" client privilege.
  307.        * The GROUPS.LST file is akin to a privilege, with each entry
  308.          in GROUPS.LST dictating which users have the "groupname" privilege.
  309.        * There does not seem to be a corollary to the "realm specific
  310.          resource privileges list".
  311.  
  312. * What's the difference between REALMS and privileges?
  313.  
  314.   For reasons both inertial and sensible, SRE-Filter's SEL-specific access
  315.   control method is based on the notion of  "privileges".  Basically,
  316.   a "client's privileges" are compared to a "resource privileges", and if
  317.   they match (as discussed above), access is granted.
  318.  
  319.   In contrast, other servers use the notion of the REALM -- where resources
  320.   are assigned to different REALMS on the server.  The client is then granted
  321.   access to these realms on as-needed basis.
  322.  
  323.   So, one could think of "resource privileges" as a list of REALMS that a
  324.   resource belongs to, and the "client privileges" as the REALMS that a client
  325.   has access rights to.
  326.  
  327.   But the astute reader might ask: then what are SRE-Filter's SEL-specific
  328.   REALMS?  Basically,  SRE-Filter's SEL-specific realms have two purposes:
  329.       1) They are sent to the client's browser when authorization is requested.
  330.          The browser will display this realm, and will cache responses by
  331.          server/realm.
  332.       2) As a shorthand for a "set of resource privileges".
  333.          By using this shorthand, you might be able to save some tedious entry
  334.          of long lists of "resource privileges". Note that !REALM entries in
  335.          the access control file are used to create these  "sets of resource
  336.          privileges".
  337.  
  338.   Perhaps we should have called the SRE-Filter SEL-specific realms  "displayed
  339.   REALMS", or "super-Realms"?
  340.  
  341. * I'm still confused about these privilege things?
  342.  
  343. It's actually simpler then it reads, especially if you don't need the
  344. fancier features. Let's sketch out a path to usefulness:
  345.     1) Use the simple-mode configurator to add a set of users.
  346.        For each user, you provide a username, password, and a
  347.        list of client privileges.
  348.     2) Use the simple-mode configurator to create "SEL-specific"
  349.        access-control entries. For each entry you'll specify the request
  350.        string (perhaps ending with a *), a list of resource
  351.        privileges, and an (optional) realm.
  352.  
  353. That's all you have to do -- user's with a "client privilege" that
  354. matches ANY ONE of a "selector's" resource privileges will be granted
  355. access rights to it.  If they haven't entered a username/password
  356. before hitting a protected server resource, the (optional) realm will be
  357. displayed on their browser's authorization screen.
  358.  
  359. * How can I limit the capabilities of different users of my server?
  360.  
  361.    The use of "SEL-specific" permissions allows one to control what
  362.    capabilities of the server are avaiable to different users.
  363.    Of particular interest are the following permissions:
  364.         NO_SSI : All server-side includes will be suppressed
  365.         NO_SSP : All server side processing will be suppressed
  366.         NO_CODE: INTERPRET CODE and SELECT keyphrases will be
  367.                   suppressed (these are "in-document" executable
  368.                   statements).
  369.    Note that these permissions are applied on a "SEL-specific" basis.
  370.    Thus, a given client may have "server side include" privileges
  371.    on some parts of your web-site, but not on other parts.
  372.  
  373.  
  374. * How can I prevent other web sites from using images stored on our server?
  375.  
  376.   If other sites are using your server to "store" files, such as interesting
  377.   .GIFs for use as in-line images, you may find this annoying.  For example,
  378.    you may maintain a publicly accessbile clip-art collection, which you
  379.    are happy to give away.  However, you don't want lazy websters to
  380.    use inline images that point to the files on your server.
  381.  
  382.    To preclude such sneaky tricks, you should use the "additional privileges"
  383.    facility of SRE-Filter.  Basically, you  issue a short-term
  384.    client privilege to all clients who "visit" your site (say, who
  385.    loads up the welcome screen for your clip-art collection).
  386.    This short-term client privilege is then required for all
  387.    requests for the actual clip-art files.  Thus, a request coming out of
  388.    the blue (with no prior request for  the "welcome" screen) will NOT
  389.    be assigned the short-term privileges, and access will be denied.
  390.  
  391.    The following outlines what you need to  implement the above:
  392.      *) Assume you have a /CLIPART directory, with lots of .GIF files in it.
  393.     **) Assume that your "welcome to clipart" page is called
  394.         /CLIPART/HELLO.HTM
  395.      1) Set SRE-Filter's variables:
  396.                  CHECK_ADD_PRIVS='YES'
  397.                  ALLOW_ACCESS='NO'
  398.                  ACCESS_FAIL_FILE=1
  399.         (you will have to hand-edit INITFILT.80 to change CHECK_ADD_PRIVS
  400.          and ACCESS_FAIL_FILE. Note that any non-0 value of ACCESS_FAIL_FILE
  401.          will do)
  402.      2 Add the following entries to your ALL_FILE.CTL file
  403.           /CLIPART/HELLO.HTM *
  404.           /CLIPART/*.GIF  !GETCLIP , , , -1
  405.        (the -1 signals "do NOT ask for authorization in event of failure")
  406.      3) Add the following line to /CLIPART/HELLO.HTM
  407.            <!-- INTERPRET FILE ADDPRIVS.RXX  GETCLIP , 30 -->
  408.  
  409.    That's it!  You might want to add a * * line to ALL_FILE.CTL (assuming
  410.    your site is otherwise open access).
  411.  
  412.    For further discussion of "dynamic privileges", see ADDPRIVS.DOC
  413.  
  414. * What are the server side include capabilities of SRE-Filter?
  415.  
  416.    A major advantage of SRE-FILTER is the ease with which a variety
  417.    of Server Side Includes  (SSIs) can be invoked-- just by adding special
  418.    keyphrases to your HTML document. Even better, these server side
  419.    includes are processed recursively -- so a server side include
  420.    can invoke further server side includes.
  421.  
  422.    SRE-Filter supports two classes of server side includes, instances of
  423.    which can be freely intermingled in your documents:
  424.  
  425.        i) The SRE-FILTER syntax.
  426.           The SRE-Filter syntax supports a variety of server side includes,
  427.           such as:
  428.             a) Inclusion of a file
  429.             b) Inclusion of a set of "dynamic variables" (such as time/date)
  430.             c) Inclusion of user defined "static variables"
  431.             d) Execution of a REXX program, with inclusion of "QUEUED"
  432.                output
  433.             e) SPECIAL Feature: Exclusion of a portion of a document,
  434.                based on the results of user written REXX code
  435.             f) Headers and Footers can be added to all documents.
  436.  
  437.        ii) The NCSA HTTPD syntax.
  438.            The NCSA HTTPD syntax is supported by SRE-Filter.  It overlaps
  439.            largely with the SRE_Filter syntax, with a few extra file-information
  440.            and time/date display features, and a CGI execution capacity.
  441.            More importantly, it's something of a standard.
  442.            For more information on the NCSA HTTPD server side includes,
  443.            check out http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html
  444.  
  445. * What's is the SSI-Cache?
  446.  
  447.    To improve performance, SRE-Filter can "intelligently" cache
  448.    documents that contain server-side includes.  In simple cases,
  449.    these cached entries can be sent to the client "as is" -- relieving
  450.    the server of the need to reprocess the "server side includes".  Needless
  451.    to say, this can yield major performance advantages.
  452.  
  453.    The "intelligently" refers to those not-so-simple cases where the server
  454.    side includes are "dynamic".  "Dynamic" server side includes are items that
  455.    change over time, client, and circumstance.   A few obvious examples
  456.    include the current time, the "number of hits", and the client's IP address.
  457.    Obviously, one can't cache-return dynamic server side includes "as is".
  458.  
  459.    SRE-Filter solves this dilemna by "partially caching".  Basically, "static"
  460.    includes are performed (such as file INCLUDES), and placemarkers are
  461.    created for the "dynamic" includes.  This can substantially diminish the
  462.    workload, especially in cases where large file include (such as a standard
  463.    menu bar) are combined with minor dynamic includes (such as the current
  464.    "hit"). If you are still curious, SSICACHE.HTM contains a more detailed
  465.     discussion.
  466.  
  467.  
  468. * Can I use cookies with GoServe and SRE-Filter?
  469.  
  470.    The short answer is YES -- the 'HEADER ' GoServe "return code",
  471.    and the REQFIELD() function can be used to read and write cookies.
  472.  
  473.    SRE-Filter offers a few conveniences when processing cookies:
  474.         *) The INTERPRET "keyphrase" of SRE-Filter provides a convenient
  475.            means of reading and creating cookies; and of changing
  476.            the contents of document based the values of the cookies.
  477.         *) SREF_GET_COOKIE, a "macrospace" procedure provided with SRE-Filter,
  478.            facilitates "cookie extraction".
  479.  
  480.    Notes:
  481.      *  A good description of cookies can be found at:
  482.           http://home.netscape.com/newsref/std/cookie_spec.html
  483.      *  A short example of how SRE-Filter works with cookies can be found
  484.         in SAMPCOOK.HTM and SAMPCOOK.RXX
  485.  
  486.  
  487. * I am having trouble with uploads, what should I do?
  488.  
  489.  
  490.   SRE-Filter's implementation of "file uploads" requires
  491.   the use of an HTML document that contains a special type
  492.   of  <FORM>. This should be constructed as:
  493.  
  494.       <FORM enctype="multipart/form-data" ACTION="/put_file" METHOD="post">
  495.            Some stuff here:
  496.       <INPUT TYPE="file"  name="userfile" value="filename.ext">
  497.            More stuff
  498.       </FORM>
  499.  
  500.   For an example of such a  document, you can look at the
  501.  "PUT_FILE" portion of the UPLOAD.HTM file that comes with SRE-Filter.
  502.  
  503.   In addition, an HTML 3.x  aware browser (netscape 2.01 and above),
  504.   that knows how to properly deal with such <FORM>s, has to upload this
  505.   document.
  506.  
  507.   But before you start, you should check the following variables in
  508.   your INITFILT.80 file (or you can use SRE-Filter intermediate mode
  509.   configurator).
  510.  
  511.        UPLOAD_DIR :Change this to your desired "upload directory:
  512.             Example: UPLOAD_DIR = 'g:\GOSERV\upload '
  513.  
  514.   These next are automatically set upon installation, and are probably
  515.   okay; but you might want to check them just for fun.
  516.         UPLOAD_MINFREE  : Minimum space (in Kbytes) that must exist on
  517.                           your disk after upload
  518.                  Example: UPLOAD_MINFREE= 20000
  519.  
  520.         UPLOAD_MAXSIZE  : Maximum size of file upload (in Kbytes)
  521.                  Example: UPLOAD_MAXSIZE=1000
  522.  
  523.              UPLOAD_LOG :  Location of a "log" file, a short note on
  524.                            recieved uploads are written here.
  525.                  Example:UPLOAD_LOG = 'g:\GOSERV\UPLOAD\UPLOAD.LOG '
  526.  
  527.   With these setting in place, with your HTML document ready to rock
  528.   (again, see UPLOAD.HTM for an example), and with your client running
  529.   NetScape 2.01; everything should be ready to go!?
  530.       That is, when the client requests this form, Netscape gives
  531.       her a file-browse box. When the form is submitted, Netscape
  532.       appends the file, and SRE-Filter writes it to a file name
  533.  
  534.   <Alas> GoServe seems to have intermittent problems with these uploads!
  535.    The following settings seem to help, sometimes (as does use of
  536.    GoServe ver 2.50):
  537.      1) double click on the GoServe icon
  538.      2) Select the OPTIONS  menu
  539.      3) Select the LIMITS tab
  540.      3) Change the Connection Maintain to some  positive value (say, 15).
  541.         The proper value should be determined by experimentation, and
  542.         may depend on the size of files being transfered.
  543.      4) You may also want to go to page 2 of this tab, and change the
  544.         "body data size" variable (to the largest size you expect to recieve).
  545.         NOTE THAT GOSERVE SEEMS TO HAVE A 1M LIMIT ON UPLOADS.
  546.  
  547.                       >>>>>  Reviewing:   <<<<<<<
  548.  
  549.   1) Check your INITFILT.80 settings (especially the UPLOAD_DIR parameter)
  550.   2) Create an HTML document with a special <FORM> element
  551.      (see UPLOAD.HTM for an example)
  552.   3) You might need to change some Goserve settings
  553.   4) Request your html document with netscape 2.01 (other browsers
  554.      might work.  .. but WebEx  1.1d does NOT understand this type of FORM
  555.      element)
  556.  
  557.   By the way, UPLOAD.HTM contains a discussion on how to specify the
  558.   filename that SRE-Filter should use when saving the file.
  559.   You may also want to look at SREFILTR.HTM for further discussion  of
  560.   the PUT_FILE facility of SRE-Filter.
  561.  
  562.  
  563. * What about default documents?
  564.  
  565.   SRE-Filter recognizes two types of "default documents" -- those for
  566.   "empty requests", and those for "requests to a directory".
  567.  
  568.       When an empty request arrives, the DEFAULT variable is used to indicate
  569.       what document to return.  For example, if DEFAULT='INDEX.HTML', then
  570.       a request for http://foo.bar.net/ would result in D:\WWW\INDEX.HTML
  571.       being returned (assuming that D:\WWW is your GoServe default data
  572.       directory).
  573.  
  574.       "Requests to a directory" refers to requests that mention a directory
  575.       name, but no file. For examplem, a request for http://foo.bar.net/mule/
  576.       refers to the "default document in the MULE subdirectory".  In order
  577.       to find this "default document", the AUTO_NAME variable is used.
  578.       For example, if AUTO_NAME='INDEX.HTML *.HTM ', then SRE-Filter
  579.       would first look for MULE/INDEX.HTML, and then look for MULE/MULE.HTM.
  580.  
  581.         Note: depending on the value of the NOEXT_TYPE variable,
  582.               a request for http://foo.bar.net/mule could also
  583.               be interpreted as a "request for the default document
  584.               in the MULE subdirectory"
  585.  
  586.  
  587.   Consider the following examples:
  588.  
  589.       http://foo.bar.net  -- empty request; uses the DEFAULT
  590.       http://foo.bar.net/  -- empty requests, use the DEFAULT
  591.       http://foo.bar.net/index -- depends on the value of NOEXT_TYPE. 
  592.           By default, SRE-Filter assumes this is a request to the "INDEX" 
  593.           subdirectory, and will try to use look for the AUTO_NAME files
  594.           in this INDEX subdirectory.  In the likely event that there 
  595.           is no INDEX subdirectory, a "could not find resource" error
  596.           message will be returned to the client.
  597.       http://foo.bar.net/index.  --- Looks for INDEX.; which probably does not 
  598.          exist. If it does exist, given the empty extension, SRE-Filter will 
  599.          transfer it as  a "text/plain" file (you can change this by
  600.          modifying MEDIATYP.RXX).
  601.  
  602.       http://foo.bar.net/index.htm   -- Looks for INDEX.HTM
  603.       http://foo.bar.net/index.html -- Looks for INDEX.HTML
  604.  
  605.   Now let's consider the behavior of the REPLACE HITS server side include.
  606.  
  607.      Because REPLACE HITS records on a "selector specific basis", and because
  608.      it's sort of difficult to indicate an "empty selector", SRE-Filter records
  609.      "empty requests" using a listing of --DEFAULT--.   Let's suppose that
  610.      DEFAULT='INDEX.HTM'. Now consider an request to INDEX.HTM -- it would be
  611.      recorded under a listing of INDEX.HTM.  Thus, you would need to add up
  612.      the INDEX.HTM and -DEFAULT- entries to find the true total number of
  613.      requests that yielded INDEX.HTM.
  614.  
  615.      If this is a disagreeable notion, you might want to use REPLACE HITS_FILE
  616.      -- it stores entries by fully-qualified file name; in the above example,
  617.      empty requests would be stored under  D:\WWW\INDEX.HTM (assuming that D:\WWW
  618.    is your GoServe default data directory).
  619.  
  620.  
  621. * What are SRE-Filter's virtual directories?
  622.  
  623.     By default, SRE-Filter will match a request selector to a file in the 
  624.     "GoServe data directory".  While a good security feature (files not in or
  625.      under the GoServe data directory are inaccessible), this can be an 
  626.      inconvenience.
  627.  
  628.     To remedy this inconvenience, one can define "virtual directories"
  629.  
  630.     Basically, SRE-FILTER will compare the starting portion of the client's
  631.     request to see if it matches one of your virtual directory entries. If it
  632.     does, the target directory listed in the matching entry is used
  633.     (instead of the data directory).
  634.  
  635.     Thus, you can make available a wide, but controllable, set of
  636.     directories (on or LAN accessible from) your server.
  637.  
  638.     Furthermore, virtual directories can point to "remote" directories on
  639.     other http servers --  SRE-Filter will attempt to retrieve the file
  640.     from the remote server, without using a redirection!
  641.  
  642.     For details on the use of the virtual directories, see the sample
  643.     VIRTUAL_FILE (VIRTUAL.IN). Or, you can use the configurator!
  644.  
  645.  
  646.     Note: Compared to Don Meyer's GOHTTP filter:
  647.          * GOHTTP's use of "aliases" corresponds to SRE-Filter's use of
  648.            "virtual directories",
  649.          * GOHTTP's use of "redirection" (via the REDIRECT.LST files)
  650.            corresponds to  SRE-Filter's use of "aliases".
  651.  
  652.     An example of the use of virtual directories:
  653.          i) Assume that the Goserve data directory is D:\WWW
  654.         ii) Assume you want to provide access to the following files;
  655.                 D:\WWW\TELLME.HTM, D:\WWW\BIRDS\PARROT.HTM,
  656.                 E:\SOUND\NATURE\CHIRP.WAV, E:\SOUND\NATURE\MORE\TWEET.WAV,
  657.                 E:\PHOTOS\SKY\FLYING.JPG
  658.         iii) Two entries should be included in VIRTUAL.IN
  659.                   NATURE/   E:\SOUND\NATURE*
  660.                   PHOTOS2/   E:\PHOTOS\SKY*
  661.  
  662.          Given i,ii, and iii; the following links can be used
  663.                  HTML anchor      ---> points to --->   file
  664.               href="/TELLME.HTM"              D:\WWW\TELLME.HTM
  665.               href="/BIRDS/PARROT.HTM"        D:\WWW\BIRDS\PARROT.HTM
  666.               href="/NATURE/CHIRP.WAV"         E:\SOUND\NATURE\CHIRP.WAV
  667.               href="/NATURE/MORE/TWEET.WAV"    E:\SOUND\NATURE\MORE\TWEET.WAV
  668.               href="/PHOTOS2/FLYING.JPG"       E:\PHOTOS\SKY\FLYING.JPG
  669.  
  670.  
  671. * How do I redirect a request?
  672.  
  673.    One of the strengths of SRE-Filter is the variety of redirection
  674.    mechanisms it offers, where redirection implies "sending the client
  675.    a file that is not a direct mapping of the request selector.  Redirection
  676.    has two general classes: remote and local.
  677.  
  678.     "Remote" redirection, which  is what most of the literature simply
  679.     calls redirection, involves telling the client's browser that
  680.     "the url you have been requested has been moved to xxxx", where xxxx may
  681.     be any URL  -- it need not be on the same server, and it need not have
  682.     the same name.
  683.  
  684.     To do remote redirection, you need to add an entry to the list of aliases
  685.     contained in the ALIAS_FILE (ALIASES.IN), either by editing with your
  686.     favorite text editor, or by using the configurator.
  687.  
  688.     For example, an entry (in the alias-file) of
  689.          whatgot  http://www.mine.org/dir1/index1.htm
  690.     would cause the server to send back a "302" response to the client's
  691.     browser whenever a request for "whatgot" arrives.  This 302 response,
  692.     would instruct the client's browser to automatically request
  693.           http://www.mine.org/dir1/index1.htm.
  694.  
  695.  
  696.    "Local" redirection is handled solely by SRE-Filter, and involves
  697.    directly modifying the "request selector."
  698.    SRE-Filter has a number of methods of specifying "local redirection",
  699.    such as the DEFAULT, AUTO_NAME, NOEXT_TYPE variables, and the
  700.    use of entries (in the ALIAS_FILE) of the form:
  701.          whatgot   dir1/index.htm.
  702.    Local redirections actually involve textual substitution (after SRE-Filter
  703.    has recieved the request). Among other advantages, this gives you quite a
  704.    bit of control over how "SRE-Filter facilities, and external procedures"
  705.    percieve the request.
  706.  
  707.   Notes:
  708.  
  709.    * A CAUTION on local redirection and partial urls:
  710.        When using aliases for "local redirection", partial URL resolution by
  711.        the client's browser may have unexpected consequences. See the
  712.        discussion of "local  vs remote redirection" in INITFILT.DOC for details!
  713.  
  714.    * On Using HTACCESS files for redirection:
  715.        In addition to the use of the ALIAS_FILE, the REDIRECTFILE parameter
  716.        of HTACCESS files can be used for "directory specific" redirections
  717.        (see the description of the HTACCESS_FILE variable, in INITFILT.DOC,
  718.        for more details).
  719.  
  720.     * Compared to Don Meyer's GOHTTP filter:
  721.          * GOHTTP's use of "aliases" corresponds to SRE-Filter's use of
  722.            "virtual directories",
  723.          * GOHTTP's use of "redirection" (via the REDIRECT.LST files)
  724.            corresponds to  SRE-Filter's use of "aliases".
  725.  
  726. * Can I customize SRE-Filter responses.
  727.  
  728.   In a number of circumstances, SRE-Filter will generate an error or status
  729.   response. For example, if a request file does not exist, or if a client
  730.   does not have access rights to a file, SRE-Filter will send a somewhat terse
  731.   response (but at least it's not a totally terse "401 Unauthorized"
  732.   displayed all by it's self)!
  733.  
  734.   Currently, you can customize a few of these responses (for details,
  735.   see the descriptions in INITFILT.DOC):
  736.  
  737.      No file found:
  738.        The NOT_FOUND_URL parameter can be assigned a
  739.        short string, which will be displayed in the middle of a
  740.        generic message.  Alternatively, you specify a special
  741.        "not found" response file (typically, an HTML document
  742.        that you create)
  743.  
  744.      Logon denied:
  745.         SRE-Filter can either reprompt the client for a different username
  746.         and password, or it can send her a custom written response
  747.         file.  This file's name is set with the LOGON_FAIL_FILE.
  748.  
  749.      Access to a server resource denied:
  750.           If a request is denied due to insufficient "SEL-specific" privileges,
  751.           SRE-Filter can either reprompt the client for a different username,
  752.           or it can send her a custome written response file.  This default
  753.           name of this file is set with the ACCESS_FAIL_FILE parameter.
  754.           In addition, you can specify "SEL-specific accesss failure response
  755.           files" -- see the descriptions of the ACCESS_FILE (in SREFILTR.HTM,
  756.           or in the sample ALL_FILE.CTL file) for details on this advanced
  757.           option.
  758.  
  759. * How does SRE-Filter deal with multiple "wildcard" matches.
  760.  
  761.    When SRE-Filter attempts to match a selector to an "alias", "virtual 
  762.    directory",  or "access control entry", it is possible that several entries
  763.    will be "wildcard" matches.  Depending on the action, several different
  764.    rules are used (in all cases, if an exact match exists, it's always used):
  765.  
  766.    *VIRTUAL Directories: The longest "abbreviation match" is used:
  767.           Example: If the selector is FOOD/FRUIT/ORANGES.HTM
  768.           and VIRTUAL.IN contains:
  769.                 /FOOD    D:\SNACKS\*
  770.                 /FOOD/FRUIT   E:\HEALTHY*
  771.           then  the /FOOD/FRUIT entry will be used (since both match, but
  772.           /FOOD/FRUIT is longer then /FOOD
  773.  
  774.    *ACCESS control and ALIASES: A multiple wildcard match algorithim is used.
  775.       Example: If the selector is FOOD/FRUIT/ORANGES.HTM
  776.      Then the following all match; with earlier entries used first.
  777.      That is, if more then one of these entries appears in ALL_FILE.CTL,
  778.      then the one earlier in the list is used.
  779.                 FOOD/FRUIT/*HTM
  780.                 FOOD/FRUIT/*
  781.                 FOOD/*IT/*HTM
  782.                 FOOD/*.HTM
  783.                 FOOD*
  784.       (these entries can appear in any order in this file, with no
  785.        effect on precedence).
  786.  
  787.      Furthermore, ACCESS and ALIAS matching suport "multiple replacements".
  788.      For example, an entry (in ALIASES.IN) of:
  789.         school/*/personal/*/pictures*  arg1=*:arg2=*
  790.      And a request of:
  791.         school/grade8/personal/killebrew/pictures/family.jpg
  792.      would yield:
  793.          arg1=grade8;arg2=killebrew
  794.      
  795.  
  796.    * RECORDALL, and others
  797.     A "single wildcard" algorithim is used (you can NOT include more
  798.     then one * character).  Using the above example, the following
  799.     entries are used (with earlier ones have precedence).
  800.                 FOOD/FRUIT/*
  801.                 FOOD/*.HTM          (more characters after the *)
  802.                 FOOD/*
  803.       (these 4 entries can appear in any order in this file, with no
  804.        effect on precedence).
  805.  
  806.   For further details, see the various "sample" configuration files shipped
  807.   with SRE-Filter.
  808.  
  809. * How can I record the number of hits I get?
  810.  
  811.   SRE-Filter provides a wide variety of tools for recording the number
  812.   of hits you recieve. These include:
  813.  
  814.      1) The RECORD_ALL_FILE. The RECORD_ALL_FILE is used to record
  815.         the number of times ALL of your files are requested (on a
  816.         file-by-file basis).  It does NOT record individual requests, nor
  817.         does it place a "number of hits" line into a requested document.
  818.         The RECORD_OPTION parameter of SRE-Filter is used to
  819.         turn this option on or off.
  820.      2) The COUNTER_FILE is used to record, and display, total hits
  821.         for explicit files. The COUNTER_FILE is accessed by the
  822.         <!-- REPLACE HITS --> SRE-Filter "server side include"
  823.         keyphrase (there are several variants of this keyphrase).
  824.      3) The SENDFILE_FILE is used to record files that are
  825.         transfered with SRE-Filter's SENDFILE facility.
  826.      4) COUNTER.RXX is used to track hits requests on a file-specific
  827.         basis, and can record individual requests (as well as
  828.         total requests). COUNTER.RXX  can be invoked as a server
  829.         side include (using a <!-- INTERPRET COUNTER.RXX  xxx -->
  830.         keyphrase), or it can be invoked by  SENDFILE.
  831.         Lastly, the output of COUNTER.RXX is highly configurable.
  832.      5) XCOUNT.CMD is a CGI-BIN script that generates
  833.         a simple odometer for specific files (it's meant to be
  834.         included as an in-line image).
  835.         JCOUNT.CMD is similar, but is called using an
  836.         <!-- #EXEC xxx --> style  server side include (both of
  837.         these are courtesy of Don Meyer).
  838.      6) The GOAUDIT.80 file contains tons of stuff, you can use it
  839.         (but you'll have to wade through a lot of verbiage).
  840.      7) SRE-Filter supports the common-log audit files, and there are
  841.         lots of tools out there for analyzing common-log files.
  842.  
  843.      For details on the above choices, see SREFILTR.HTM, INITFILT.DOC, and
  844.      COUNTER.DOC.  Power users will probably like COUNTER.RXX the best,
  845.      (and when used with SENDFILE, COUNTER.RXX can be used with any type
  846.      of file, not just HTML documents).
  847.  
  848.      One last point: A nice feature of the COUNTER_FILE and
  849.      RECORD_ALL_FILE is the ability to NOT augment the counter when
  850.      repetitive requests  (from the same client) are recieved --
  851.      check out the descriptions of the HIT_CACHE_LEN, HIT_CACHE_DURATION,
  852.      and HIT_OWNER_SUPPRESS variables in INITFILT.DOC
  853.      (note that COUNTER.RXX  has similar features).
  854.  
  855.  
  856.  
  857. * How can I speed up throughput?
  858.  
  859.   The best way to speed up throughput is to use either the SREFQUIK
  860.   (SREFQUIK.80) or SREFAST (SREFAST.80) variants of SRE-Filter.  
  861.   Both SREFQUIK and SREFAST are small filters designed to process "simpler" 
  862.   requests.  The benefits of either of these variants are especially 
  863.   noticable under moderate to heavy loads, where their small memory 
  864.   requirements are most important. 
  865.  
  866.   Both SREFAST and SREFQUIK require extra configuration: with the more 
  867.   flexible SREFAST requiring  more configuration.  In general, the more
  868.   effort you put into configuring either of these "simple filters", 
  869.   the greater the performance gains.  
  870.    
  871.   The use of either SREFAST or SREFQUIK will never diminish the functionality 
  872.   of SRE-Filter -- if SREFQUIK (or SREFAST) can't handle a request, it just 
  873.   calls SREFILTR.80.  However,  this does add some extra overhead.  Therefore, 
  874.   SREFQUIK (and SREFAST) are best used when you are willing to spend some
  875.   time to configure them optimally.  In other words, haphazard use of
  876.   either of these variants will degrade performance!
  877.  
  878.   For other speed up hints, see the introduction to INITFILT.DOC
  879.  
  880.  
  881. * How do I define new MIME media types?
  882.  
  883.   If you want define a new MIME media type (or link a non-standard extension
  884.   to a standard MIME media type), just edit the MEDIATYP.RXX file located in
  885.   the GoServe directory (the default version of MEDIATYP.RXX contains detailed
  886.   instructions).
  887.  
  888.   You may also wish to define a subset of the text/html files to be "server
  889.   side include capable".  To do this, you need to set the SSI_SHTML_ONLY
  890.   variable to 'YES', and edit the SSI_EXTENSIONS variable (at the top
  891.   of SREFILTR.80).
  892.  
  893.  
  894. * How can I prevent NetScape from reloading files too frequently?
  895.  
  896.   Certain browsers (NetScape seems to be the most stringent about this)
  897.   are quite serious about reloading "expired" documents WHENEVER you
  898.   refresh them.   That is, not only will such documents be loaded afresh
  899.   upon the first request of a session, but even if you "back button" to
  900.   it, Netscape will reload it!
  901.  
  902.   There are many cases where SRE-Filter (actually, GoServe by default) will
  903.   return a document with an "immediate expire" (i.e.; documents
  904.   with server side includes, and results of CGI-bin scripts).  Hence,
  905.   this "feature" of NetScape can be quite annoying.
  906.  
  907.   To alleviate this annoyance, you can set the FIX_EXPIRE variable to
  908.   a "time delay".  When this time delay is greater then 0, the
  909.   expiration date will be augmented (correctly accounting for
  910.   new-dates and GMT).  This eliminates the over zealous refresh
  911.   activity of NetScape, but retains the "don't keep this
  912.   temporary file around forever" notion.
  913.  
  914.   Further details are contained in the description of the FIX_EXPIRE
  915.   variable in INITFILT.DOC.
  916.  
  917.  
  918. * What are the SRE-Filter add-ons?
  919.  
  920.    As an alternative to the CGI-BIN script interface, one can
  921.    write REXX routines that are called directly by SRE-Filter,
  922.    without the somewhat convoluted use of environment strings
  923.    that CGI-BIN scripts depend on.
  924.  
  925.    Currently, there are several add-ons available for SRE-Filter.
  926.    These include:
  927.       FORUM: A  "news-group and list-server" discussion-group package
  928.         BBS: A full featured "web based bulletin board system"
  929.    GETAFILE: A  directory displayer, with user-settable display features
  930.        CALC: A character-mode scientific calculator with a web interface
  931.    SREFPRC1: The source code for the SRE-Filter macrospace routines
  932.    SRCHINX: A front-end (+ more) to the freeware SWISH search engine.
  933.  
  934.    Some new "SUPERUSER" additions:
  935.      VURECORD: View the Record_all_file, with several display options
  936.      _COMMAND: Issue OS/2 Commands to the server computer
  937.  
  938.  
  939.    These add-ons can be obtained from the SRE-Filter home page at
  940.    http://rpbcam.econ.ag.gov/srefilter.
  941.  
  942. --- End of document.
  943.