WASD Scripts for generic VMS CGI
Alpha (AXP), Itanium (IA64) and VAX
 January 2004
WASD VMS Hypertext Services, Copyright © 1996-2004 Mark G. Daniel.
This package (all associated programs), comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under the conditions
of the GNU GENERAL PUBLIC LICENSE, version 2.

Calendar Simple script to produce calendars.
CGILIB Collection of C language functions to ease script authoring across the WASD, OSU, Apache, Purveyor, and vanilla CGI environments (used by these scripts for portability).
CGIutl A CLI utility to assist at the DCL level with generating HTTP responses, returning content and with the handling of POSTed requests. Intended to be used within DCL procedures to manipulate the CGI environment.
Conan Access VMS Help and text libraries.
HyperReader
HyperShelf
Bookreader emulator (BNU and Bookreader format).
Hypershelf is used to navigate BNU or Bookreader shelves.
HyperSPI System performance monitor (of sorts!)
Query
Extract
Plain and HTML text file search utility.
Processes hits from the query script.
QDLogStats Quick & Dirty access LOG STATisticS


Installation


Unbundled from the WASD VMS Hypertext Services package for use by generic VMS CGI environments.  Installation steps:

  1. compile+link executables ... $ @BUILD   or (after UNZIPing optional object modules)
    link-only executables ... $ @BUILD LINK
  2. copy executables and support procedures ... $ @INSTALL CGI cgi-bin-directory
  3. add general and per-script mapping rules as described below
  4. HyperSPI has additional requirements (see HYPERSPIREADME.TXT in this same directory)

Runtime files (documentation, images, etc.) are located in the [.RUNTIME] subdirectory.  That area must be mapped to make the required graphics, help, etc., available to the scripts. scripts to access required images, help, etc.

All scripts generally provide additional usage information in the script source-code description.

NOTE:   The HyperReader, HyperShelf and Conan scripts can all respond with a "HTTP/1.0 304 Not Modified" against requests with "If-Modified-Since:" header lines.  The SYS$TIMEZONE_DIFFERENTIAL logical is used to generate the GMT times used in the calculations.  If this logical is not correctly maintained (as in many VMS v6.n systems) an invalid time error may be reported by the script.  In the relevant script support procedure simply uncomment the indicated line to define the HTTPD$GMT logical which provides a work-around.


Script Overviews


This information is very generic.  Any specific environment may require some tweaking.

Calendar Simple script to produce calendars.

Access this year's calendar with

  /cgi-bin/calendar?0

and next year's with

  /cgi-bin/calendar?+1
CGIutl No usage examples are provided with this kit.
Demonstrations of form decoding and file upload are available on the WASD demonstration site.
  http://wasd.vsm.com.au/ht_root/src/misc/
A comprehensive description of CGIutl functionality is available in the source code.
  cgiutl.c
Conan Access VMS help with:
  /cgi-bin/conan

Other demonstrations are available:

  /wasd/runtime/conanhelp.html
HyperReader
HyperShelf

To access the default DECW$BOOKSHELF library:

  /cgi-bin/hypershelf

To access a BNU library specify it's location:

  /cgi-bin/hypershelf/sys$common/decw$book/library.decw$bookshelf
  /cgi-bin/hypershelf/sys$common/decw$defaults/user/library.odl

To directly access a book:

  /cgi-bin/hypershelf/sys$common/decw$book/bookreader.decw$book
HyperSPI See the HYPERSPIREADME.TXT in this same directory.

The [.RUNTIME]HYPERSPIEXAMPLE.GIF image gives some idea of what the script-processed data looks like via a browser (before you go to all the trouble of setting it up ;^)

Query
Extract
Both plain-text and HTML-text files can be searched, the latter only has the content of the file searched, not any tag-related text! "Text" files are recognised by the file extension.  A useful collection of these are predefined by the scripts.  To change the contents of this list use the /TEXT= and /HTML= qualifiers as described in the script prologues.  Additional plain-text files also must be specified to the EXTRACT script.

Examples, the first for generating a simple form-based search interface, the second for initiating a simple search:

  /cgi-bin/query/wasd/runtime/*.*
  /cgi-bin/query/wasd/runtime/*.*?wasd

It also supports form-initiated searches.  See the QUERY.C prologue.  Depending on server support it may be possible to make this script the default query (ISINDEX-style) engine.

QDLogStats Quick & Dirty LOG STATisticS provides very elementary statistics from Web server common/combined format log files.  A number of filters allow subsets of the log contents to be selected.  These filters can use the familiar asterisk wildcard or comprise simple or complex regular expressions.  This utility has a command-line and a CGI interface.
  /cgi-bin/qdlogstats

The CGI interface requires authorization to be active before it can be used.  Further setup and usage information is provided in the code description.

  qdlogstats.c



Mark G. Daniel
Mark.Daniel@vsm.com.au
Mark.Daniel@dsto.defence.gov.au

Demonstration & Download
http://wasd.vsm.com.au/
http://wasd.vsm.com.au/wasd/
ftp://ftp.vsm.com.au/wasd/index.html