Server Side Includes

Server side includes (SSI) allows the insertion of dynamic data into .html documents. OmniHTTPd does all of its SSI processing in-memory and sends the correct Content-Length header value.

How to Use

First, go to the Global Server Properties and click on the Advanced tab. Make sure Process Server Side Include (SSI) is checked. Since parsing SSI directives is resource intensive, only specially marked files are processed. OmniHTTPd will only parse files with the wwwserver/html-ssi content type for SSI directives.
By default, only files ending with .shtml are processed for SSI directives.

Security Note on Using SSI

File-based and absolute referencing is considered insecure, especially if you allow users to upload web documents to your site. Under NT, the SSI parser uses the web server security identity when accessing these files. You can disable the use of the cmd and file tags by going into the Advanced section of the server properties and clicking "Disable Insecure SSI".

The following commands are support under this implementation:

#config

Configures the SSI environment. The environment is reset for each SSI document. You can configure the error message, the size format and the time format.

#echo

Inserts the value of a variable. Supported environment variables include:

DOCUMENT_NAME
DOCUMENT_URI
QUERY_STRING_UNESCAPED
DATE_LOCAL
DATE_GMT
LAST_MODIFIED
SERVER_SOFTWARE
SERVER_NAME
GATEWAY_INTERFACE
SERVER_PROTOCOL
SERVER_PORT
REQUEST_METHOD
PATH_INFO
PATH_TRANSLATED
SCRIPT_NAME
QUERY_STRING
REMOTE_HOST
REMOTE_ADDR
AUTH_TYPE
REMOTE_USER
REMOTE_IDENT
CONTENT_TYPE
CONTENT_LENGTH

For example, the following line will insert the current time and date:

<!--#echo var="DATE_LOCAL"-->

#exec

Executes a program and inserts its output into the document. Use the cgi keyword for URL-based scripts and the cmd keyword for system commands. The SSI #exec method uses Standard CGI only. This means that if you are using Perl (or any other external processor), only the Standard CGI configured extension will work. this means that if you process .pl with Perl ISAPI, it will not work under SSI. Example usage:

<!--#exec cgi="/cgi-bin/hello.pl"--> [insecure]
<!--#exec cgi="/cgi-bin/yoda.exe"--> [insecure]
<!--#exec cmd="c:\mystuff\jedi.exe"--> [insecure]

#flastmod

Returns the date of the last modification to the specified file. Use the virtual keyword for URL-based files and the file keyword for path based files. Example usage:

<!--#flastmod virtual="stuff/extra.txt"-->
<!--#flastmod file="c:\mystuff\extra.txt"--> [insecure]

#fsize

Inserts the size of a file. Use the virtual keyword for URL-based files and the file keyword for path based files. Example usage:

<!--#fsize virtual="stuff/extra.txt"-->
<!--#fsize file="c:\mystuff\extra.txt"--> [insecure]

#include

Inserts a file into the document. You may nest documents up to 8 layers. Use the virtual keyword for URL-based includes and the file keyword for path based includes. Example usage:

<!--#include virtual="stuff/extra.txt"-->
<!--#include file="c:\mystuff\extra.txt"--> [insecure]


Copyright 1998 Omnicron Technologies Corporation