The HTTPd server comprises several main modules, implementing the obvious functionality of the server, and other, smaller, support modules. Most modules contains descriptive prologues. As these are usually up-to-date (usually more-so than discrete documentation such as this text anyway), it is recommended that the source code modules be consulted for specific information on how each operates.
All files are located in HT_ROOT:[SRC.HTTPD]
WASD.H
This C header file contains many of the general data structures and macros required for the HTTPd.
Server administration is based in this module, although other modules provide their own functions for implementing menus, reports and actions.
This module provides path-based authorization and authentication. Uses the HTTPD$AUTH file as the source of configuration information.
Implmentation of the "BASIC" HTTP authentication scheme are implemented in this module.
This module implements a file data and revision time cache, designed to provided an efficient static document request (file transfer) mechanism.
The CGI module provides the CGI scripting support functions used by the DCL.C and DECNET.C modules.
Module to process (interpret) the HTTPD command-line.
This module implements the HTTPd command-line control functionality. At the command-line an administrator may enter HTTP/DO=command. This is written to the HTTPd via a mailbox, interpreted and the requested action taken or an error message sent back to the administrator.
CONTROL.C
CONTROL.H
3.8 - CONFIG.C
This module provides basic server and service configuration. Uses the HTTPD$CONFIG file as the source of configuration information.
The DCL execution functionality must interface and coordinate with an external subprocess. Supports CGI and CGIplus scripting and SSI DCL-processed directives.
The DECnet module provides scripting based on process management using DECnet. Both standard WASD CGI scripting and an emulation of OSU (DECthreads) scripting are supported.
DECNET.C
DECNET.H
3.11 - DESCR.C
The Descr.c module generates a file description by searching HTML files for the first occurance of <TITLE>...</TITLE> or <Hn>...</Hn> tags, using the description provided there-in. It is primarily used by the directory listing module, but can also be used by the menu module.
DESCR.C
DESCR.H
3.12 - DIGEST.C
This module provides authentication functionality for the DIGEST method.
DIGEST.C
DIGEST.H
3.13 - DIR.C
This module implements the HTTPd directory listing (Index-of) functionality.
Error generating and reporting functions.
This module implements the static file transfer functionality.
This module generates the server activity graph.
GRAPH.C
GRAPH.H
3.17 - HTADMIN.C
This module allows on-line administration of the HTTPd-specific authentication (.HTA) databases.
HTADMIN.C
HTADMIN.H
3.18 - HTTPD.C
This is the main() module of the server. It performs server startup and shutdown, along with other miscellaneous functionality.
HTTPD.C
HTTPD.H
3.19 - ISMAP.C
The clickable-image support module provides this functionality as an integrated part of the server. It supports image configuration file directives in either of NCSA or CERN formats.
ISMAP.C
ISMAP.H
3.20 - LOGGING.C
The logging module provides an access log (server logs, including error messages are generated by the detached HTTPd process. The access log format can be that of the Web-standard, "common"-format, "common+server"-format or "combined"-format, along with user-definable formats, allowing processing by most log-analysis tools.
LOGGING.C
LOGGING.H
3.21 - MAPURL.C
Module supporting mapping of URLs to VMS file specifications and VMS specifications to URLs, setting specified characteristics agaionst paths, etc. Uses the HTTPD$MAP file as the source of configuration information.
MAPURL.C
MAPURL.H
3.22 - MD5.C
Module providing MD5 digest code from RFC1321. This is used to generated "digests" (or unique fingerprints of sequences of bytes and strings) for use in authorization and the generation of file names in proxy caching.
This module implements the WASD menu interpretation functionality.
The message database for the server is maintained by this module. Uses the HTTPD$MSG file as the source of configuration information.
This module handles all TCP/IP network activites, from creating the server socket and listening on the port, to reading and writing network I/O. It manages request initiation and rundown, and controls connection persistence.
It supports both the Digital TCP/IP Services (UCX) and MadGoat NETLIB network agents. The excellent MagdGoat freeware tool provides a generic, asynchronous interface to a number of underlying TCP/IP packages. It behaves in much the same manner as the $QIO interface and so dove-tails perfectly into this server.
All data structures and general macros, etc., for proxy processing are located in the following header file.
Provides the request and network functionality for proxy HTTP and HTTPS serving.
PROXY.C
PROXY.H
3.27 - PROXYCACHE.C
Implements a basic HTTP proxy disk caching service. The design always trades simplicity off against efficiency and elegance. Cache management is performed by the PROXYMAINT.C module. It works intimately with this module to provide routine and reactive purging (deletion) of cache files to maintain device free space and currency of cache content.
PROXYCACHE.C
PROXYCACHE.H
3.28 - PROXYMAINT.C
See PROXYCACHE.C above.
PROXYMAINT.C
PROXYMAINT.H
3.29 - PUT.C
The PUT module allows files to be uploaded to, and stored by, the server. It also allows the deletion of files, and the creation and deletion of directories. This same module handles PUT, POST and DELETE methods appropriately. It requires authorization to be enabled on the server.
This module reads the request header from the client, parses this, and then calls the appropriate task function to execute the request (i.e. send a file, SSI an HTML file, generate a directory listing, execute a script, etc.)
REQUEST.C
REQUEST.H
3.31 - SESOLA.C
This module provides the optional Secure Sockets Layer (SSL) encrypted communication link functionality for WASD and is named "SeSoLa" to avoid any confusion and/or conflict with OpenSSL package library routines.
SESOLA.C
SESOLA.H
3.32 - SSI.C
The Server Side Includes (HTML pre-processor) module provides this functionality as an integrated part of the server.
The stmLF.c module converts VARIABLE format records to STREAM-LF. It is only called from the File.c module and only then when STREAM-LF conversion is enabled within the server configuration.
STMLF.C
STMLF.H
3.34 - SUPPORT.C
The support module provides a number of miscellaneous support functions for the HTTPd (well go-o-o-lee!).
SUPPORT.C
SUPPORT.H
3.35 - UPD.C
Implements the on-line web directory administration and file editing and upload facility. It requires authorization to be enabled on the server. File and directory modification are still performed by the Put.c module. The Upd.c is an overly large body of code generating all of the dialogues and editing pages. It also provides additional functionality for the server administration, adding admin-specific portions of dialogues as required.
The virtual memory management module provides dynamic memory allocation and deallocation functions. These functions use the VMS system library virtual memory routines. Also see general comments in 2.5 - Memory Management.