Server Side Includes


This is a test document for the .SHTML extension files. This documents URL is /exercise/shtml.shtml (actual file: ), last modified 31-Jan-2020 14:53:47.

This is the 795,154th 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 May 1 14:18:54 2025
(or more VMSish: 01-May-2025 14:18:54)

GMT time is: Thu May 1 12:18:54 2025 GMT

"#echos":

"*/*" browser accepted content types
"hrem162.nano.tudelft.nl" request host and port destination
"[VARIABLE-DOES-NOT-EXIST!]" referring 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
"" current document VMS file name
"" request query string
"3.145.138.21" browser host address
"3.145.138.21" browser host name
"" authenticated user
"tango.nano.tudelft.nl" server host name
"80" server host port
"HTTP/1.1" Request HTTP protocol version
"HTTP/1.1" Server HTTP protocol version
"HTTPd-WASD/11.4.1 OpenVMS/IA64 SSL" server identification string

This request has been made via the HTTP/1.n protocol

<!--#if var={request_protocol} eqs="HTTP/2" -->
<u>HTTP/2</u>
<!--#else-->
<u>HTTP/1.<i>n</i></u>
<!--#endif-->

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 ... 03-Mar-2020 11:48:56

``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.
See WASD_TEST_AND_EXERCISE.TXT ⤤ for additional information.

NameRevisedSizeDescription

[TXT]0k.txt31-Jan-2020 14:530plain text
[TXT]16k.txt31-Jan-2020 14:5316,000plain text
[TXT]32k.txt31-Jan-2020 14:5332,000plain text
[TXT]48k.txt31-Jan-2020 14:5348,000plain text
[TXT]64k.txt31-Jan-2020 14:5364,000plain text
[TXT]cors.com31-Jan-2020 14:534,238DCL procedure
[HTM]cors.html 3-Mar-2020 11:483,884"WASD CORS Test JavaScript"
[HTM]dotty.html 3-Mar-2020 11:484,004"Let's concurrently load some dots!"
[BIN]dotty.js31-Jan-2020 14:53144JavaScript source
[IMG]dotty.png 3-Mar-2020 11:58347Portable Network Graphic
[BIN]dotty2.js31-Jan-2020 14:53136JavaScript source
[HTM]escherknot.html 3-Mar-2020 11:4825HyperText Markup Language
[IMG]escherknot.xbm31-Jan-2020 14:5334,261X-bitmap
[TXT]face2face.com31-Jan-2020 14:53381DCL procedure
[TXT]face2face.php31-Jan-2020 14:5331PHP source
[TXT]face2face.pl31-Jan-2020 14:5358Perl source
[TXT]h2load_files.txt31-Jan-2020 14:534,852plain text
[TXT]h2load_mixed.txt31-Jan-2020 14:531,088plain text
[TXT]index.php31-Jan-2020 14:53490PHP source
[IMG]openvms.gif31-Jan-2020 14:531,536GIF image
[HTM]openvms.html 3-Mar-2020 11:4840HyperText Markup Language
[TXT]perf_files_nocache_wb_v10.txt31-Jan-2020 14:5317,590plain text
[TXT]perf_files_wb.com31-Jan-2020 14:532,543DCL procedure
[TXT]perf_files_wb_v10.txt31-Jan-2020 14:5317,616plain text
[TXT]perf_persist_wb.com31-Jan-2020 14:532,197DCL procedure
[TXT]perf_persist_wb_v10.txt31-Jan-2020 14:5315,310plain text
[TXT]perf_scripts_wb.com31-Jan-2020 14:537,237DCL procedure
[TXT]perf_scripts_wb_v10.txt31-Jan-2020 14:5341,960plain text
[TXT]perf_xfer_wb.com31-Jan-2020 14:531,509DCL procedure
[TXT]perf_xfer_wb_v10.txt31-Jan-2020 14:537,808plain text
[HTM]readme.html 3-Mar-2020 11:48258HyperText Markup Language
[htm]shtml.shtml31-Jan-2020 14:536,148HyperText Markup Language (pre-processed)
[???]shtml.shtml$ 1-May-2025 14:184
[HTM]shtml_include1.html 3-Mar-2020 11:4888HyperText Markup Language
[htm]shtml_include1.shtml31-Jan-2020 14:53236HyperText Markup Language (pre-processed)
[TXT]singlebyteoutput.com31-Jan-2020 14:532,310DCL procedure
[TXT]this$20is$20a$20pathworks$20file-name.txt31-Jan-2020 14:53278plain text
[TXT]this$7ais$7aan$7a$sri$7a$file-name.txt31-Jan-2020 14:53268plain text
[TXT]this_is_$2balso$2b$2epathworks.txt31-Jan-2020 14:53256plain text
[???]this_is_$5kalso$5k.$sri$5n$txt31-Jan-2020 14:53244
[TXT]wasd_test_and_exercise.txt31-Jan-2020 14:535,986plain text

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

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

NameSize

CORS.HTML3,884
DOTTY.HTML4,004
ESCHERKNOT.HTML25
OPENVMS.HTML40
README.HTML258
SHTML_INCLUDE1.HTML88

Now some allowed DCL commands:

<!--#dcl say="f$time()" -->
1-MAY-2025 14:18:54.46
<!--#dcl say="4+5" -->
%DCL-E-OPENIN, error opening BOLERO$DKA100:[JOUKJ.PUBLIC.WASD.WASD_ROOT]WASD_FILE_DEV.COM; as input -RMS-E-PRV, insufficient privilege or file protection violation 9
<!--#dcl say="\"<I>hello</I>\"" -->
%DCL-E-OPENIN, error opening BOLERO$DKA100:[JOUKJ.PUBLIC.WASD.WASD_ROOT]WASD_FILE_DEV.COM; as input -RMS-E-PRV, insufficient privilege or file protection violation hello
<!--#dcl dir="wasd_root:[exercise]" -->
%DCL-E-OPENIN, error opening BOLERO$DKA100:[JOUKJ.PUBLIC.WASD.WASD_ROOT]WASD_FILE_DEV.COM; as input -RMS-E-PRV, insufficient privilege or file protection violation %DIRECT-E-OPENIN, error opening WASD_ROOT:[EXERCISE]*.*;* as input -RMS-E-PRV, insufficient privilege or file protection violation
<!--#dcl show="process" -->
%DCL-E-OPENIN, error opening BOLERO$DKA100:[JOUKJ.PUBLIC.WASD.WASD_ROOT]WASD_FILE_DEV.COM; as input -RMS-E-PRV, insufficient privilege or file protection violation 1-MAY-2025 14:18:54.50 User: HTTP$NOBODY Process ID: 21C0203E Node: TANGO Process name: "WASD:80-231" Terminal: MBA116: User Identifier: [HTTP$NOBODY] Base priority: 4 Default file spec: WASD_ROOT:[HTTP$NOBODY] Number of Kthreads: 1 (System-wide limit: 8)
<!--#dcl show="users/node" -->
%DCL-E-OPENIN, error opening BOLERO$DKA100:[JOUKJ.PUBLIC.WASD.WASD_ROOT]WASD_FILE_DEV.COM; as input -RMS-E-PRV, insufficient privilege or file protection violation OpenVMS User Processes at 1-MAY-2025 14:18:54.51 Total number of users = 1, number of processes = 1 Username Node Interactive Subprocess Batch JOUKJ TANGO 1

Now some privileged DCL commands:

<!--#dcl exec="show sym www_*" -->
%DCL-E-OPENIN, error opening BOLERO$DKA100:[JOUKJ.PUBLIC.WASD.WASD_ROOT]WASD_FILE_DEV.COM; as input -RMS-E-PRV, insufficient privilege or file protection violation WWW_AUTH_TYPE == "" WWW_CONTENT_LENGTH == "0" WWW_CONTENT_TYPE == "" WWW_DOCUMENT_ROOT == "" WWW_GATEWAY_BG == "BG40303:" WWW_GATEWAY_INTERFACE == "CGI/1.1" WWW_GATEWAY_MRS == "4492" WWW_HTTP_ACCEPT == "*/*" WWW_HTTP_ACCEPT_ENCODING == "gzip, br, zstd, deflate" WWW_HTTP_HOST == "hrem162.nano.tudelft.nl" 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_ODS == "5" WWW_PATH_TRANSLATED == "" WWW_QUERY_STRING == "" WWW_REMOTE_ADDR == "3.145.138.21" WWW_REMOTE_HOST == "3.145.138.21" WWW_REMOTE_PORT == "51450" WWW_REMOTE_USER == "" WWW_REQUEST_METHOD == "GET" WWW_REQUEST_PROTOCOL == "HTTP/1.1" WWW_REQUEST_SCHEME == "http:" WWW_REQUEST_TIME_GMT == "Thu, 01 May 2025 12:18:54 GMT" WWW_REQUEST_TIME_LOCAL == "Thu, 01 May 2025 14:18:54" WWW_REQUEST_URI == "/exercise/shtml.shtml" WWW_SCRIPT_NAME == "" WWW_SERVER_ADDR == "131.180.121.84" WWW_SERVER_CHARSET == "ISO-8859-1" WWW_SERVER_GMT == "+02:00" WWW_SERVER_NAME == "tango.nano.tudelft.nl" WWW_SERVER_PORT == "80" WWW_SERVER_PROTOCOL == "HTTP/1.1" WWW_SERVER_SIGNATURE == "<address>WASD/11.4.1 Server at tango.nano.tudelft.nl Port 80</address>" WWW_SERVER_SOFTWARE == "HTTPd-WASD/11.4.1 OpenVMS/IA64 SSL" WWW_UNIQUE_ID == "aBOCzgAAAAQhwARCBLM"
<!--#exec cmd="show sym *" -->
%DCL-E-OPENIN, error opening BOLERO$DKA100:[JOUKJ.PUBLIC.WASD.WASD_ROOT]WASD_FILE_DEV.COM; as input -RMS-E-PRV, insufficient privilege or file protection violation $FACILITY == "%X00000000" $IDENT == "%X00000000" $RESTART == "FALSE" $SEVERITY == "1" $STATUS == "%X10000001" WWW_AUTH_TYPE == "" WWW_CONTENT_LENGTH == "0" WWW_CONTENT_TYPE == "" WWW_DOCUMENT_ROOT == "" WWW_GATEWAY_BG == "BG40303:" WWW_GATEWAY_INTERFACE == "CGI/1.1" WWW_GATEWAY_MRS == "4492" WWW_HTTP_ACCEPT == "*/*" WWW_HTTP_ACCEPT_ENCODING == "gzip, br, zstd, deflate" WWW_HTTP_HOST == "hrem162.nano.tudelft.nl" 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_ODS == "5" WWW_PATH_TRANSLATED == "" WWW_QUERY_STRING == "" WWW_REMOTE_ADDR == "3.145.138.21" WWW_REMOTE_HOST == "3.145.138.21" WWW_REMOTE_PORT == "51450" WWW_REMOTE_USER == "" WWW_REQUEST_METHOD == "GET" WWW_REQUEST_PROTOCOL == "HTTP/1.1" WWW_REQUEST_SCHEME == "http:" WWW_REQUEST_TIME_GMT == "Thu, 01 May 2025 12:18:54 GMT" WWW_REQUEST_TIME_LOCAL == "Thu, 01 May 2025 14:18:54" WWW_REQUEST_URI == "/exercise/shtml.shtml" WWW_SCRIPT_NAME == "" WWW_SERVER_ADDR == "131.180.121.84" WWW_SERVER_CHARSET == "ISO-8859-1" WWW_SERVER_GMT == "+02:00" WWW_SERVER_NAME == "tango.nano.tudelft.nl" WWW_SERVER_PORT == "80" WWW_SERVER_PROTOCOL == "HTTP/1.1" WWW_SERVER_SIGNATURE == "<address>WASD/11.4.1 Server at tango.nano.tudelft.nl Port 80</address>" WWW_SERVER_SOFTWARE == "HTTPd-WASD/11.4.1 OpenVMS/IA64 SSL" WWW_UNIQUE_ID == "aBOCzgAAAAQhwARCBLM"


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>referring 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 request_protocol -->&quot;</td>
<td>Request HTTP protocol version</td></tr>
<tr><td>&quot;<!--#echo server_protocol -->&quot;</td>
<td>Server HTTP protocol version</td></tr>
<tr><td>&quot;<!--#echo server_software -->&quot;</td>
<td>server identification string</td></tr>
</table>

<h2> This request has been made via the 
<!--#if var={request_protocol} eqs="HTTP/2" -->
<u>HTTP/2</u>
<!--#else-->
<u>HTTP/1.<i>n</i></u>
<!--#endif-->
protocol</h2>

<pre>&lt;!--#if var={request_protocol} eqs="HTTP/2" --&gt;
&lt;u&gt;HTTP/2&lt;/u&gt;
&lt;!--#else--&gt;
&lt;u&gt;HTTP/1.&lt;i&gt;n&lt;/i&gt;&lt;/u&gt;
&lt;!--#endif--&gt;
</pre>

<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 193)  ...  \#includ e virtual="shtml.shtml" type="text/plain"\