Server Side Includes


This is a test document for the .SHTML extension files. This documents URL is /exercise/shtml.shtml (actual file: WASD_ROOT:[EXERCISE]SHTML.SHTML), last modified 02-May-2014 14:23:36.

This is the 626,756th time since Mon Dec 11 10:55:16 1995 that this document has been accessed (yes that's correct ... the document is used when batch testing the server!)

It is possible to include another SSI file. The following blue section has been <!--#include virtual="shtml_include1.shtml">ed ...

Current date/time:

The local time is: Thu Jan 23 22:08:41 2025
(or more VMSish: 23-Jan-2025 22:08:41)

GMT time is: Thu Jan 23 20:08:41 2025 GMT

"#echos":

"*/*" browser accepted content types
"polarhome.com:703" request host and port destination
"[VARIABLE-DOES-NOT-EXIST!]" refering document
"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" browser identification string
"/exercise/shtml.shtml" request path
"WASD_ROOT:[EXERCISE]SHTML.SHTML" current document VMS file name
"" request query string
"3.22.66.55" browser host address
"3.22.66.55" browser host name
"" authenticated user
"vax.polarhome.com" server host name
"80" server host port
"HTTP/1.1" HTTP protocol version
"HTTPd-WASD/10.3.0 OpenVMS/VAX" server identification string

Let's include a file using:

<!--#include file="wasd_root:[exercise]shtml_include1.html" -->
The included text is italicised for clarity.

I have begun a new paragraph.

That same file between <LISTING></LISTING> tags:

The included text is italicised for clarity.

I have begun a new paragraph.

The same file, this time using a VIRTUAL specification:

<!--#include virtual="../exercise/shtml_include1.html" -->
The included text is italicised for clarity.

I have begun a new paragraph.

Size of the file:

<!--#fsize file="wasd_root:[exercise]shtml_include1.html" -->
We can determined the size of the file ... 88 bytes

Creation date:

<!--#fcreated file="wasd_root:[exercise]shtml_include1.html" -->
We can determined the creation date/time of the file ... 18-Sep-2013 02:22:31

Last modification date:

<!--#flastmod file="wasd_root:[exercise]shtml_include1.html" -->
We can determined the last modification date/time of the file ... 02-May-2014 14:23:36

``Index of'' this directory:

(The blue background is just to delineate the extent of the listing)

<!--#dir virtual="*.*" -->

Documents and files to exercise and test the HTTPd server.
Also performance testing procedures and raw results.

[TXT]  0k.txt                      2-May-2014 14:23            0  plain text
[TXT]  16k.txt                     2-May-2014 14:23       16,000  plain text
[TXT]  32k.txt                     2-May-2014 14:23       32,000  plain text
[TXT]  48k.txt                     2-May-2014 14:23       48,000  plain text
[TXT]  64k.txt                     2-May-2014 14:23       64,000  plain text
[TXT]  aaaa_test                   2-May-2014 14:23           10  plain text
[HTM]  escherknot.html             2-May-2014 14:23           25  HyperText Markup Language
[IMG]  escherknot.xbm              2-May-2014 14:23       34,261  X-bitmap
[TXT]  face2face.com               2-May-2014 14:23          381  DCL procedure
[TXT]  face2face.php               2-May-2014 14:23           31  PHP source
[TXT]  face2face.pl                2-May-2014 14:23           58  Perl source
[TXT]  index.php                   2-May-2014 14:23          490  PHP source
[IMG]  ismap.gif                   2-May-2014 14:23        5,386  GIF image
[HTM]  ismap.html                  2-May-2014 14:23        1,606  "ISMAP Demo"
[txt]  ismap_cern.ismap            2-May-2014 14:23          241  Clickable-image mapping
[HTM]  ismap_circle.html           2-May-2014 14:23           43  HyperText Markup Language
[txt]  ismap_ncsa.ismap            2-May-2014 14:23          272  Clickable-image mapping
[HTM]  ismap_outside.html          2-May-2014 14:23           58  HyperText Markup Language
[txt]  ismap_point.ismap           2-May-2014 14:23          139  Clickable-image mapping
[HTM]  ismap_point_circle.html     2-May-2014 14:23           65  HyperText Markup Language
[HTM]  ismap_point_poly.html       2-May-2014 14:23           77  HyperText Markup Language
[HTM]  ismap_point_rect.html       2-May-2014 14:23           68  HyperText Markup Language
[HTM]  ismap_poly.html             2-May-2014 14:23           55  HyperText Markup Language
[HTM]  ismap_rect.html             2-May-2014 14:23           30  HyperText Markup Language
[IMG]  openvms.gif                 2-May-2014 14:23        1,536  GIF image
[HTM]  openvms.html                2-May-2014 14:23           40  HyperText Markup Language
[HTM]  readme.html                 2-May-2014 14:23          121  HyperText Markup Language
[htm]  shtml.shtml                 2-May-2014 14:23        5,693  HyperText Markup Language (pre-processed)
[FIL]  shtml.shtml$               23-Jan-2025 22:08            4  
[HTM]  shtml_include1.html         2-May-2014 14:23           88  HyperText Markup Language
[htm]  shtml_include1.shtml        2-May-2014 14:23          236  HyperText Markup Language (pre-processed)
[TXT]  singlebyteoutput.com        2-May-2014 14:23        2,310  DCL procedure
[TXT]  this$20is$20a$20pathwork+   2-May-2014 14:23          278  plain text
[TXT]  this$7ais$7aan$7a$sri$7a+   2-May-2014 14:23          268  plain text
[TXT]  this_is_$2balso$2b$2epat+   2-May-2014 14:23          256  plain text
[FIL]  this_is_$5kalso$5k.$sri$+   2-May-2014 14:23          244  
[FIL]  url_doc.url                 2-May-2014 14:23           94  
[FIL]  url_doc_relative.url        2-May-2014 14:23           84  
[FIL]  url_none.url                2-May-2014 14:23           30  
[FIL]  url_openvms.url             2-May-2014 14:23           52  
[FIL]  url_wasd.url                2-May-2014 14:23          134  

More controlled ``Index of'' HTML files in this directory:

<!--#dir virtual="*.html" par="layout=UL_S:b&delimit=none&nops=yes&readme=no" -->

ESCHERKNOT.HTML                    25
ISMAP.HTML                      1,606
ISMAP_CIRCLE.HTML                  43
ISMAP_OUTSIDE.HTML                 58
ISMAP_POINT_CIRCLE.HTML            65
ISMAP_POINT_POLY.HTML              77
ISMAP_POINT_RECT.HTML              68
ISMAP_POLY.HTML                    55
ISMAP_RECT.HTML                    30
OPENVMS.HTML                       40
README.HTML                       121
SHTML_INCLUDE1.HTML                88

Now some allowed DCL commands:

<!--#dcl say="f$time()" -->
23-JAN-2025 22:08:42.30
<!--#dcl say="4+5" -->
9
<!--#dcl say="\"<I>hello</I>\"" -->
hello
<!--#dcl dir="wasd_root:[exercise]" -->
Directory WASD_ROOT:[EXERCISE] 0K.TXT;1 16K.TXT;1 32K.TXT;1 48K.TXT;1 64K.TXT;1 AAAA_TEST.;1 ESCHERKNOT.HTML;1 ESCHERKNOT.XBM;1 FACE2FACE.COM;1 FACE2FACE.PHP;1 FACE2FACE.PL;1 INDEX.PHP;1 ISMAP.GIF;1 ISMAP.HTML;1 ISMAP_CERN.ISMAP;1 ISMAP_CIRCLE.HTML;1 ISMAP_NCSA.ISMAP;1 ISMAP_OUTSIDE.HTML;1 ISMAP_POINT.ISMAP;1 ISMAP_POINT_CIRCLE.HTML;1 ISMAP_POINT_POLY.HTML;1 ISMAP_POINT_RECT.HTML;1 ISMAP_POLY.HTML;1 ISMAP_RECT.HTML;1 OPENVMS.GIF;1 OPENVMS.HTML;1 README.HTML;1 SHTML.SHTML;1 SHTML.SHTML$;1 SHTML_INCLUDE1.HTML;1 SHTML_INCLUDE1.SHTML;1 SINGLEBYTEOUTPUT.COM;1 THIS$20IS$20A$20PATHWORKS$20FILE-NAME.TXT;1 THIS$7AIS$7AAN$7A$SRI$7A$FILE-NAME.TXT;1 THIS_IS_$2BALSO$2B$2EPATHWORKS.TXT;1 THIS_IS_$5KALSO$5K.$SRI$5N$TXT;1 URL_DOC.URL;1 URL_DOC_RELATIVE.URL;1 URL_NONE.URL;1 URL_OPENVMS.URL;1 URL_WASD.URL;1 Total of 41 files.
<!--#dcl show="process" -->
23-JAN-2025 22:08:42.60 User: HTTP$NOBODY Process ID: 00021CFA Node: VAX Process name: "WASD:80-302" Terminal: MBA3620: User Identifier: [HTTP$NOBODY] Base priority: 4 Default file spec: CGI-BIN:[000000]
<!--#dcl show="users/node" -->
OpenVMS User Processes at 23-JAN-2025 22:08:42.68 Total number of users = 0, number of processes = 0

Now some privileged DCL commands:

<!--#dcl exec="show sym www_*" -->
WWW_AUTH_TYPE == "" WWW_CONTENT_LENGTH == "0" WWW_CONTENT_TYPE == "text/x-shtml" WWW_DOCUMENT_ROOT == "" WWW_GATEWAY_BG == "BG2248:" WWW_GATEWAY_INTERFACE == "CGI/1.1" WWW_GATEWAY_MRS == "4492" WWW_HTTP_ACCEPT == "*/*" WWW_HTTP_ACCEPT_ENCODING == "gzip, br, zstd, deflate" WWW_HTTP_HOST == "polarhome.com:703" WWW_HTTP_USER_AGENT == "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" WWW_KEY_COUNT == "0" WWW_PATH_INFO == "/exercise/shtml.shtml" WWW_PATH_TRANSLATED == "WASD_ROOT:[EXERCISE]SHTML.SHTML" WWW_QUERY_STRING == "" WWW_REMOTE_ADDR == "3.22.66.55" WWW_REMOTE_HOST == "3.22.66.55" WWW_REMOTE_PORT == "50142" WWW_REMOTE_USER == "" WWW_REQUEST_METHOD == "GET" WWW_REQUEST_SCHEME == "http:" WWW_REQUEST_TIME_GMT == "Thu, 23 Jan 2025 20:08:41 GMT" WWW_REQUEST_TIME_LOCAL == "Thu, 23 Jan 2025 22:08:41" WWW_REQUEST_URI == "/exercise/shtml.shtml" WWW_SCRIPT_NAME == "" WWW_SECURITY_STATUS == "NONE" WWW_SERVER_ADDR == "192.168.10.2" WWW_SERVER_CHARSET == "ISO-8859-1" WWW_SERVER_GMT == "+02:00" WWW_SERVER_NAME == "vax.polarhome.com" WWW_SERVER_PORT == "80" WWW_SERVER_PROTOCOL == "HTTP/1.1" WWW_SERVER_SIGNATURE == "<address>WASD/10.3.0 Server at vax.polarhome.com Port 80</address>" WWW_SERVER_SOFTWARE == "HTTPd-WASD/10.3.0 OpenVMS/VAX" WWW_UNIQUE_ID == "Z5K96QAAAAQAAAIekwc"
<!--#exec cmd="show sym *" -->
$RESTART == "FALSE" $SEVERITY == "1" $STATUS == "%X00030001" WWW_AUTH_TYPE == "" WWW_CONTENT_LENGTH == "0" WWW_CONTENT_TYPE == "text/x-shtml" WWW_DOCUMENT_ROOT == "" WWW_GATEWAY_BG == "BG2248:" WWW_GATEWAY_INTERFACE == "CGI/1.1" WWW_GATEWAY_MRS == "4492" WWW_HTTP_ACCEPT == "*/*" WWW_HTTP_ACCEPT_ENCODING == "gzip, br, zstd, deflate" WWW_HTTP_HOST == "polarhome.com:703" WWW_HTTP_USER_AGENT == "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" WWW_KEY_COUNT == "0" WWW_PATH_INFO == "/exercise/shtml.shtml" WWW_PATH_TRANSLATED == "WASD_ROOT:[EXERCISE]SHTML.SHTML" WWW_QUERY_STRING == "" WWW_REMOTE_ADDR == "3.22.66.55" WWW_REMOTE_HOST == "3.22.66.55" WWW_REMOTE_PORT == "50142" WWW_REMOTE_USER == "" WWW_REQUEST_METHOD == "GET" WWW_REQUEST_SCHEME == "http:" WWW_REQUEST_TIME_GMT == "Thu, 23 Jan 2025 20:08:41 GMT" WWW_REQUEST_TIME_LOCAL == "Thu, 23 Jan 2025 22:08:41" WWW_REQUEST_URI == "/exercise/shtml.shtml" WWW_SCRIPT_NAME == "" WWW_SECURITY_STATUS == "NONE" WWW_SERVER_ADDR == "192.168.10.2" WWW_SERVER_CHARSET == "ISO-8859-1" WWW_SERVER_GMT == "+02:00" WWW_SERVER_NAME == "vax.polarhome.com" WWW_SERVER_PORT == "80" WWW_SERVER_PROTOCOL == "HTTP/1.1" WWW_SERVER_SIGNATURE == "<address>WASD/10.3.0 Server at vax.polarhome.com Port 80</address>" WWW_SERVER_SOFTWARE == "HTTPd-WASD/10.3.0 OpenVMS/VAX" WWW_UNIQUE_ID == "Z5K96QAAAAQAAAIekwc"


Look at the source file:

<!--#include virtual="shtml.shtml" type="text/plain" --> the source of this document follows:

<!DOCTYPE html>
<!--##config trace=1 -->
<html>
<title>SSI / Pre-Processed HTML</title>
<h1>Server Side Includes<br></h1>
<p><hr size="3" width="100%" noshade>

<!--#config sizefmt="bytes" -->

<p> This is a test document for the <tt>.SHTML</tt> extension files.  This
documents URL is <tt><!--#echo PATH_INFO --></tt> (actual file:
<tt><!--#echo
file_name --></tt>), last modified <!--#echo LAST_MODIFIED -->.

<p>
<table bgcolor="ffff00" cellpadding="10" cellspacing="0" border="1">
<tr><td>
This is the
<!--#accesses ordinal since=" time since " timefmt="%c" -->
that this document has been accessed
(yes that's correct ... the document is used when batch testing the server!)
</td></tr>
</table>

<p> It is possible to include another SSI file. The following blue section has
been
<nobr><tt>&lt;!--#include virtual="shtml_include1.shtml"&gt;</tt>ed ...</nobr>

<p>
<table bgcolor="99ccff" cellpadding="10" cellspacing="0" border="1">
<tr><td>
<!--#include virtual="shtml_include1.shtml" -->
</td></tr>
</table>

<h2> &quot;#echos&quot;: </h2>

<table cellpadding="5" cellspacing="0" border="1">
<tr><td>&quot;<!--#echo http_accept -->&quot;</td>
<td>browser accepted content types</td></tr>
<tr><td>&quot;<!--#echo http_host -->&quot;</td>
<td>request host and port destination</td></tr>
<tr><td>&quot;<!--#echo http_referer -->&quot;</td>
<td>refering document</td></tr>
<tr><td>&quot;<!--#echo http_user_agent -->&quot;</td>
<td>browser identification string</td></tr>
<tr><td>&quot;<!--#echo path_info -->&quot;</td>
<td>request path</td></tr>
<tr><td>&quot;<!--#echo path_translated -->&quot;</td>
<td>current document VMS file name</td></tr>
<tr><td>&quot;<!--#echo query_string -->&quot;</td>
<td>request query string</td></tr>
<tr><td>&quot;<!--#echo remote_addr -->&quot;</td>
<td>browser host address</td></tr>
<tr><td>&quot;<!--#echo remote_host -->&quot;</td>
<td>browser host name</td></tr>
<tr><td>&quot;<!--#echo remote_user -->&quot;</td>
<td>authenticated user</td></tr>
<tr><td>&quot;<!--#echo server_name -->&quot;</td>
<td>server host name</td></tr>
<tr><td>&quot;<!--#echo server_port -->&quot;</td>
<td>server host port</td></tr>
<tr><td>&quot;<!--#echo server_protocol -->&quot;</td>
<td>HTTP protocol version</td></tr>
<tr><td>&quot;<!--#echo server_software -->&quot;</td>
<td>server identification string</td></tr>
</table>

<h2> Let's include a file using: </h2>
<pre>&lt;!--#include file="wasd_root:[exercise]shtml_include1.html" --&gt;</pre>
<!--#include file="wasd_root:[exercise]shtml_include1.html" -->

<h2> That same file between &lt;LISTING&gt;&lt;/LISTING&gt;</tt> tags:
</h2>
<listing><!--#include virtual="shtml_include1.html" --></listing>

<h2> The same file, this time using a VIRTUAL specification:</h2>
<pre>&lt;!--#include virtual="../exercise/shtml_include1.html" --&gt;</pre>
<!--#include virtual="../exercise/shtml_include1.html" -->

<h2> Size of the file: </h2>
<pre>&lt;!--#fsize file="wasd_root:[exercise]shtml_include1.html" --&gt;</pre>
We can determined the size of the file ...
<!--#fsize file="wasd_root:[exercise]shtml_include1.html" -->

<h2> Creation date: </h2>
<pre>&lt;!--#fcreated file="wasd_root:[exercise]shtml_include1.html" --&gt;</pre>
We can determined the creation date/time of the file ...
<!--#fcreated file="wasd_root:[exercise]shtml_include1.html"
fmt="" 
-->

<h2> Last modification date: </h2>
<pre>&lt;!--#flastmod file="wasd_root:[exercise]shtml_include1.html" --&gt;</pre>
We can determined the last modification date/time of the file ...
<!--#flastmod
file="wasd_root:[exercise]shtml_include1.html"    
-->

<h2> ``Index of'' this directory:</h2>

<p> (The blue background is just to delineate the extent of the listing)

<pre>&lt;!--#dir virtual="*.*" --&gt;</pre>

<p>
<table bgcolor="99ccff" cellpadding="5" cellspacing="0" border="0">
<tr><td>

<!--#dir virtual="*.*" -->

</td></tr>
</table>

<h2> More controlled ``Index of'' HTML files in this directory:</h2>

<pre>&lt;!--#dir virtual="*.html" par="layout=UL_S:b&delimit=none&nops=yes&readme=no" --&gt;</pre>

<p>
<table bgcolor="99ccff" cellpadding="5" cellspacing="0" border="0">
<tr><td>

<!--#dir virtual="*.html" par="layout=UL_S:b&delimit=none&nops=yes&readme=no" -->

</td></tr>
</table>

<h2> Now some <b>allowed</b> DCL commands:</h2>

<pre>&lt;!--#dcl say="f$time()" --&gt;</pre>
<!--#dcl say="f$time()" -->

<pre>&lt;!--#dcl say="4+5" --&gt;</pre>
<!--#dcl say="4+5" -->

<pre>&lt;!--#dcl say="\"&lt;I&gt;hello&lt;/I&gt;\"" --&gt;</pre>
<!--#dcl say="\"<I>hello</I>\"" type="text/html" -->

<pre>&lt;!--#dcl dir="wasd_root:[exercise]" --&gt;</pre>
<listing><!--#dcl dir="wasd_root:[exercise]" --></listing>

<pre>&lt;!--#dcl show="process" --&gt;</pre>
<listing><!--#dcl show="process" --></listing>

<pre>&lt;!--#dcl show="users/node" --&gt;</pre>
<listing><!--#dcl show="users/node" --></listing>

<h2> Now some <b>privileged</b> DCL commands:</h2>

<pre>&lt;!--#dcl exec="show sym www_*" --&gt;</pre>
<listing><!--#dcl exec="show sym www_*" --></listing>

<pre>&lt;!--#exec cmd="show sym *" --&gt;</pre>
<listing><!--#exec cmd="show sym *" --></listing>

</ul>

<p><hr size="3" width="100%" noshade>

<h2> Look at the source file: </h2>
<listing>&lt;!--#include virtual="shtml.shtml" type="text/plain" --&gt;</listing>
the source of this document follows:

<p>
<table bgcolor="99ccff" cellpadding="5" cellspacing="0" border="0">
<tr><td>
<!--#include virtual="shtml.shtml" type="text/plain" -->
</td></tr>
</table>

<p><hr size="3" width="100%" noshade>

<h2>Finally a broken one: </h2>
<listing>&lt;!--#includ e virtual="shtml.shtml" type="text/plain" --&gt;</listing>

<!--#includ e virtual="shtml.shtml" type="text/plain" -->

</html>


Finally a broken one:

<!--#includ e virtual="shtml.shtml" type="text/plain" -->

SSI Error!

directive unknown (line 176)  ...  \#includ e virtual="shtml.shtml" type="text/plain"\