There are 5 HTTP-server for VMS:
| OSU/DECthreads | the most widely used | 
| CERN | the first, but it is no longer being maintained/developed | 
| Purveyor | by Process, it has been promoted by Digital | 
| Cheetah | by TGV, which was bougth by Cisco, which sold the VMS stuff to Process | 
| NetScape | Digital says it exist | 
The indexing and search engine kit is available from http://www.cerritos.edu/cerritos/kits/.
A long list of pointers to available scripts are available at http://www.hhs.dk/vms/cgiscripts.html.
| [HTTPD...]*.* | server source + binaries | 
| [INDEX...]*.* | indexer & search engine source + binaries | 
| [WWW...]*.* | WWW tree | 
| [WWW.DOC...]*.* | documents | 
| [WWW.SCRIPTS]*.* | CGI-scripts | 
| [WWW.INDEX]*.* | searchable index | 
$ @diskx:[HTTPD.SYSTEM]HTTPD_STARTUP username "" -
diskx:[HTTPD.SYSTEM]HTTP_SERVER.CONF 80
$ htman    :== $www_root:[base_code]privrequest.exe 931
There are 3 configurations files:
# 3 files to search as "index"
Welcome index.htmlx
Welcome index.html
Welcome welcome.html
# display IP names instead of IP numbers in ACCESS.LOG
DNSLookup on
# various
EventCounter Clients
TraceLevel http_log_level
AccessLog access.log
#OK to display directories
DirAccess on
# imagemaps
mapimage /www
# map /~username to [username.WWW]
userdir www
# includes suffixes
include www_system:http_suffixes.conf
# authenticator to check protection
authenticator www_system:md5_authenticator
# search engine
search 0::diskx:[WWW.SCRIPTS]WWWSEARCH.COM
# scripts
exec /htbin/* 0::diskx:[WWW.SCRIPTS]
# management ports
manage port 931
# HTTP PUT upload (NetScape Navigator Gold)
method PUT wwwpost.com
# map URL's to files
map /*                     /diskx/www/doc/*
map /diskx/www/diskx/www/* /diskx/www/*
pass /diskx/www/doc/*
fail *
# 3 files to search for as "index"
Welcome index.htmlx
Welcome index.html
Welcome welcome.html
# OK to display directories
DirAccess on
# display aaareadme.www in top of directory
DirReadMe TOP aaareadme.www
# display size and date
DirShowSize on
DirShowDate on
# define suffixes -> MIME type
suffix .aiff audio/x-aiff BINARY 0.8
suffix .gif image/gif BINARY 1.0
suffix .txt text/plain 8BIT 0.5
suffix .com text/plain 8BIT 0.5
suffix .htm text/html 8BIT 0.5
suffix .html text/html 8BIT 0.5
suffix .htmlx text/htmlx 8BIT 0.5
suffix .jpg image/jpeg BINARY
suffix .dat text/plain 8BIT 1.0
suffix .hlp text/plain 8BIT 1.0
suffix .ps application/postscript 8BIT 1.0
suffix .dvi application/x-dvi BINARY 1.0
suffix .pdf application/x-pdf BINARY 1.0
suffix .hlb vms/help BINARY
suffix .tlb vms/tlb BINARY
suffix .olb vms/olb BINARY
suffix .mlb vms/mlb BINARY
suffix .mpeg video/mpeg BINARY 1.0
suffix .exe vms/exe BINARY 1.0
suffix .zip application/zip BINARY 1.0
suffix .au audio/basic BINARY 1.0
suffix .bleep application/bleeper 8BIT 1.0
suffix .wav audio/x-wav BINARY 1.0
suffix .xbm image/x-xbm 7BIT
suffix .tar application/tar BINARY 1.0
suffix .imagemap application/imagemap 8BIT 1.0
suffix .class application/octet-stream BINARY 1.0
# do not touch this line
suffix *.* text/plain * 0.01
# preprocessing (server side includes)
presentation text/htmlx html_preproc.exe
# imagemaps
presentation application/imagemap www_root:[bin]mapimage
# directory
ThreadPool dsrv q_flag=1 limit=4 stack=162000
Service dirserv pool=dsrv dynamic=(dirserv,http_dirserv_mst) \ 
info=www_system:http_directory.conf
presentation text/file-directory %dirserv:
There is a mail-list VMS-Web-Daemon@kjsl.com (subscribe at mxserver@kjsl.com) dedicated to support this HTTP-server with the active participation of the author David Jones. The usual time from quetsion to answers is just a few hours, which is better support than most commercial vendors can offer !
There is documentation in the directory .
Also see the FAQ at http://http://kcgl1.eng.ohio-state.edu/www/doc/server_faq.html and Brian Reeds supplementarty documentation at http://http://kcgl1.eng.ohio-state.edu/tarserv/osu.tar/index.html.
The following two scripts are invaluable as debug-scripts for forms:
 
$ mcr 'f$parse("cgi_symbols.exe;",f$environment("procedure"))' www_
form_ 
$ write net_link "content-type: text/html" 
$ write net_link "" 
$ write net_link "<HTML>" 
$ write net_link "<HEAD>" 
$ write net_link "<TITLE>Test</TITLE>" 
$ write net_link "</HEAD>" 
$ write net_link "<BODY>" 
$ write net_link "<PRE>" 
$ define sys$output net_link 
$ show symbol www* 
$ show symbol form* 
$ deassign sys$output 
$ write net_link "</PRE>" 
$ write net_link "</BODY>" 
$ write net_link "</HTML>" 
$ exit 
$ write net_link "<DNETRECMODE>"
 
$ run 'f$parse("set_dcl_env.exe;",f$environment("procedure"))' 
$ write net_link "content-type: text/html" 
$ write net_link "" 
$ write net_link "<HTML>" 
$ write net_link "<HEAD>" 
$ write net_link "<TITLE>Test</TITLE>" 
$ write net_link "</HEAD>" 
$ write net_link "<BODY>" 
$ write net_link "<PRE>" 
$ define sys$output net_link 
$ show symbol www* 
$ deassign sys$output 
$ write net_link "</PRE>" 
$ write net_link "</BODY>" 
$ write net_link "</HTML>" 
$ exit 
$ write net_link "<DNETRECMODE>"
I would recommend something like a DCL wrapper:
$ write net_link "<DNETRECMODE>"
$ mcr 'f$parse("cgi_symbols.exe;",f$environment("procedure"))' www_ form_
$ write net_link "content-type: text/html"
$ write net_link ""
$ write net_link "<HTML>"
$ write net_link "<HEAD>"
$ write net_link "<TITLE>foo bar</TITLE>"
$ write net_link "</HEAD>"
$ write net_link "<BODY>"
$ write net_link "<PRE>"
$ define sys$output net_link
$ run diskx:[diry]foobar.exe
$ deassign sys$output
$ write net_link "</PRE>"
$ write net_link "</BODY>"
$ write net_link "</HTML>"
$ exit
Because now the webmaster has created the wrapper with all HTML and CGI and the database programmer can now create the FOOBAR.EXE, which: