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: