WASD VMS Hypertext Services -Technical Overview

2 - HTTPd - Overview

2.1 - Server Behaviour
2.2 - VMS Versions
2.3 - TCP/IP Packages
2.4 - International Features
2.5 - HTTP Methods Usage
    2.5.1 - GET
    2.5.2 - POST & PUT
    2.5.3 - DELETE
[next] [previous] [contents] [full-page]

The most fundamental component of the WASD VMS Hypertext Services environment is the HTTPd, or HyperText Protocol Transport Daemon, or HTTP server. WASD has a single-process, multi-threaded, asynchronous I/O design.


General


Scripting


Access Control


Administration


2.1 - Server Behaviour

The technical aspects of server design and behaviour are described in HT_ROOT:[SRC.HTTPD]READMORE.TXT


2.2 - VMS Versions

The WASD server is officially supported on any VMS version from V6.0 upwards, on Alpha, Itanium and VAX architectures. The most recently released version (as of early 2008), V8.3 Alpha and Itanium, as is commonly the case on VMS platforms, required nothing more than relinking. Obviously no guarantees can be made for yet-to-be-released versions but at a worst-case these should only require the same. Pre 7.n versions of WASD have also been known to compile and run successfully under V5.5-n (4.13 - VMS 5.5-n ).

Non-server account scripting requires a minimum VMS V6.2, to provide the $PERSONA services required for this functionality. Equivalent functionality on earlier versions of VAX VMS (i.e. 6.0 and 6.1) is available using the PERSONA_MACRO build option (4.12 - VMS 6.0 and 6.1 ).

The WASD distribution and package organisation fully supports mixed-architecture clusters (Alpha, Itanium and/or VAX in the one cluster) as one integrated installation.


2.3 - TCP/IP Packages

The WASD server uses the Compaq TCP/IP Services (UCX) BG $QIO interface. The following packages support this interface and may be used.

To deploy IPv6 services this package must support IPv6 (needless-to-say).


2.4 - International Features

WASD provides a number of features that assist in the support of non-English and multi-language sites. These "international" features only apply to the server, not necessarily to any scripts!


2.5 - HTTP Methods Usage

This section describes WASD-specific characteristics of the available HTTP/1.0 request methods.


2.5.1 - GET

Of course, the GET method is used to access documents supplied by the server. There is nothing WASD server-specific about this method.


2.5.2 - POST & PUT

The WASD HTTPd does not differentiate between POST and PUT methods, both are handled identically.


Script Handling

The "normal" usage of the POST method is to return data from a <FORM>..</FORM> construct to a script running on the server. In this regard WASD is no different to other any web server; the form data is delivered to the script's standard input as a stream of URL-encoded text. For example:

  name=Fred+Nurk&address=Fred%27s+House%0D%0A0+Nowhere+Lane&submit=Submit

Note that WWW_CONTENT_LENGTH will be the length of the form data. See "WASD Scripting" document for further information.


File Creation/Upload

If the client sends data back to the server using either the POST or the PUT methods, without a script being mapped to be executed in response to that data, the WASD HTTPd will create a file corresponding to the specified path. The data stream may be text or binary.

Of course, for the server to accept POST and PUT data in this manner, authentication and authorization must be enabled and allow such access to the request path.

The data stream is processed according to MIME content-type:


Directory Creation

A directory will be created by the HTTPd if a directory path is provided with the POST or PUT methods. For example:

  /dir1/dir2/dir-to-be-created/


File Deletion

A file will be deleted by the HTTPd if the file path ending with a wildard version specification is provided with the POST or PUT methods. For example:

  /dir1/dir2/file-to-be.deleted;*


Directory Deletion

A directory will be deleted by the HTTPd if a directory path ending with a wildard version specification is provided with the POST or PUT methods. For example:

  /dir1/dir2/dir-to-be-deleted/;*


2.5.3 - DELETE

The DELETE method should delete the file or directory corresponding to the supplied path.


[next] [previous] [contents] [full-page]