
                                XS-HTTPD SSI's
                                       
   One of the most advanced features of this WWW server is its server
   side includes. Server side includes (SSI's) are "commands" to the
   server to do something. These may be embedded in HTML documents.
   
   The format of such a directive is as follows:
   <!--#name [argument(s)]-->
   
   name is the name of the directive. You may specify arguments to the
   directive if needed or wanted, seperated from the directive's name by
   one space. Note also that a directive must start and end on the same
   line. You may have other things on that line, including other
   directives.
   
   When the server sends a HTML document to the remote client, it will
   parse all of the directives that are embedded in that document. The
   possible directives are:
   
   count-total
          This directive inserts the number of times that this page has
          ever been retrieved. You may use counters as many times as you
          wish per page, they will only increment once.
          
   count-month
          This directive inserts the number of times that this page has
          been retrieved this month.
          
   count-today
          This directive inserts the number of times that this page has
          been retrieved today.
          
   count-total-gfx [location]
          This directive inserts a HTML tag to include a graphical
          representation of the number of times that this page has ever
          been retrieved. If location is specified, it will be used as a
          base location for the font. A font has 10 digits in it, each in
          a seperate file, all PPM's. Say location is /~user/font1, and
          digit 1 is needed, then /~user/font1/1.ppm will be used as that
          digit.
          
          Two default fonts are supplied with the deamon. These may be
          accessed with locations: /fonts/digital and /fonts/large.
          
   count-month-gfx [location]
          This directive inserts a HTML tag to include a graphical
          representation of the number of times that this page has been
          retrieved this month. See above for location.
          
   count-today-gfx [location]
          This directive inserts a HTML tag to include a graphical
          representation of the number of times that this page has been
          retrieved today. See above for location.
          
   date
          This directive inserts the current date and time, optionally in
          your own format. You can specify your own date and time format
          using the date-format directive (see below).
          
   date-format format
          This directive uses format as the new date and time format. You
          must specify the format in strftime(3) format. Type man
          strftime for help on how to use this format.
          
   include-file file
          This directive allows you to include another file in this
          document. Very useful for standard headers and footers. Note
          that included files may be nested and that directives are
          parsed in them. Note also that counters and such always count
          the original file, so you can use the count-* directives in
          your standard headers and footers.
          
   last-mod [file]
          This directive (with a pseudonym last-modified inserts the last
          modification date of either the originally request file (the
          current document) or the optionally specified file. The date
          will be in the format specified by the date-format directive.
          
   remote-host
          Inserts the name (or the IP number if the name cannot be
          resolved) of the remote computer that is asking for this
          document.
          
   run-cgi cgi
          Runs the CGI binary cgi and inserts its output at this point.
          Standard PATH_INFO and PATH_TRANSLATED parsing is done, so you
          can give argumens to the CGI binary. All standard CGI
          environment variables will be set up appriopriately. See the
          CGI section for more details on CGI's.
          
   agent-short
          This directive inserts the name of the browser that the remote
          user is using in the short version (i.e. without the version
          number). Note that Netscape is displayed as Mozilla, which is
          Netscape's real name.
          
   agent-long
          This directive inserts the name of the browser that the remote
          user is using in the long version (i.e. with version numbers
          and other comments that the browser sends).
          
   if keyword pattern(s)
          The following four directive are the most powerful: they allow
          a kind of flow control in your documents. This directive
          displays all text and directives after it until it encounters
          an endif or a else directive, if the query evaluates to true.
          
          Possible keywords are:
          
        browser
                If any of the patterns match the browser name that the
                remote user if using, the query evaluates to true,
                otherwise it evaluates to false. See below on how to
                specify patterns.
                
        remote-host
                If any of the patterns match the remote host's name or IP
                number, the query evaluates to true, otherwise it
                evaluates to false.
                
        remote-name
                If any of the patterns match the remote host's name, the
                query evaluates to true, otherwise it evaluates to false.
                
        remote-addr
                If any of the patterns match the remote host's IP number,
                the query evaluates to true, otherwise it evaluates to
                false.
                
        argument
                It is possible (since version 2.1) to pass arguments to
                HTML documents. If any of the patterns match the given
                argument, the query evaluates to true, otherwise it
                evaluates to false.
                
                Arguments are passed by appending a question mark to the
                page's URL and giving the arguments after that. For
                example:
                http://www.foo.bar/~test/blah.html?this_is_an_argument
                
          Patterns are simple wildcard patterns (case-insensitive). For
          example, to match any version of Netscape (which is really
          called Mozilla), you would use mozilla/*. If you want to match
          any Mosaic version 2, you would use *Mosaic*/2*.
          
          A browser's name is always constructed in the following way:
          browsername/version extra/version
          
   if-not keyword pattern(s)
          This does exactly the same as if, except that it displays the
          following text only if the query evaluates to false instead of
          true.
          
   else
          This can be used after an if or if-not directive. The meaning
          is obvious.
          
   endif
          Ends an if or not-if. Note that these constructions may be
          nested!
