This directory contains the source files for a DECthreads-based HTTP server. Building the base images without SSL: First build the www_server executable, either by MMS with the descrip.mms file or the build_xxxx.com command procedure in the [.BASE_CODE] sub-directory. The commands to do this are: (MMS) $ MMS/MACRO=TCP=xxxx (DCL) $ @BUILD_xxxx.COM where 'xxxx' is a code for the TCP package: UCXTCP, MULTINET, CMUTCP, TWGTCP, TCPWARE NOTE: If you get 'NOLINKAGE' errors in a TYPES.H file, you have a broken TCP installation and must contact your TCP vendor to get it fixed. Building the base images with SSL: Before you build with SSL support, you need to get, build and install OpenSSL for VMS. See http://www.free.lp.se/openssl/. There are for now two supported methods to use SSL with this server. One is to use a DECNET-based SSL engine, called SSL_TASK, that is part of OpenSSL. The other is to use a MST-based SSL engine For more technical explanations, please read [.BASE_CODE]AAAREADME.SSL. First build the http_server executable by MMS with the descrip.mms file in the [.BASE_CODE] sub-directory. The command to do this is: (MMS) $ MMS/MACRO=SHARE_TCP=xxxx where 'xxxx' is a code for the TCP package: UCXTCP, MULTINET, CMUTCP, TWGTCP, TCPWARE NOTE: If you get 'NOLINKAGE' errors in a TYPES.H file, you have a broken TCP installation and must contact your TCP vendor to get it fixed. Next, build the SSL support engine of your choice in the [.BASE_CODE] directory. The command to do this is: (MMS) $ MMS/MACRO=(SSL=yyyy) TSERVER_SSL.EXE where 'yyyy' is one of the following: SSL_SERVER_MST, SSL_SERVER_DNET, SSL_SERVER_NULL or, if you prefer to use SSL_ENGINE.EXE: (MMS) $ MMS/MACRO=(SSL=SSL_SERVER_DNET) TSERVER_SSL.EXE (MMS) $ MMS SSL_ENGINE.EXE The recommended engine is SSL_SERVER_MST. SSL_SERVER_DNET and SSL_ENGINE both use DECnet and SSL_SERVER_NULL will produce a transparent test engine. Building the rest: Next set default to the [.SCRIPT_CODE] sub-directory and compile/link the script images using either one of the the commands: (MMS) $ MMS/MACRO=TCP=xxxx (DCL) $ @BUILD_SCRIPTS_xxxx.COM Finally, set default to the [.FORK_CODE] sub-directory and compile/link the script images using either one of the the commands: (MMS) $ MMS (DCL) $ @BUILD_FORKSCRIPTS.COM Testing server: Verify that the server operates by invoking the [.SYSTEM]HTTP_SERVER.COM with the following parameters: @[.SYSTEM]HTTP_SERVER.COM RUN SYS$OUTPUT/3 HTTP_MAIN.CONF 8000 of if you haven't setup DECnet yet: @[.SYSTEM]HTTP_SERVER.COM MBXNET 'f$trnlnm("TT")'/3 HTTP_MAIN.CONF 8000 and then attempt to connect to the server using a WWW client (use url "http://your-host-name:8000/"). The "/3" appended to the second parameter sets the logging level to 3, increasing the logging level makes the server report more information (useful for debugging problems with the configura- tion). The demonstrations (vmshelp and nagel23a) will not work until the DECnet proxy access is set up properly, view the HTML file serverdoc/script_setup.html for hints on setting this up. Comments at the top of HTTP_SERVER.COM give detailed descriptions of the parameters it expects. Logical names: WWW_ROOT Logical root of web server files. If not defined when invoked, http_server.com defines it as parent directory of directory containing http_server.com. WWW_SYSTEM Contains server executables and configuration files. Defaults to same directory as http_server.com. WWW_SERVER_PORTS Exec mode logical that lists privileged TCP ports http_server.exe is permitted to listen on. Distribution directories: [] (WWW_ROOT:[000000]) If login directory, holds WWWEXEC.COM and WWWDIR.COM (DECnet task objects). Default location for log files such as access.log. [.BASE_CODE] Source code for main server and support programs such as privrequest.c. [.BIN] Default location for scripts invoked via URL paths starting with /htbin. [.JAVA_CODE] Contains source code for http_java_script scripserver and sample java scripts. [.JBIN...] Default location for java scripts invoked via URL paths that start with /jbin. [.SERVERDOC] Holds HTML documents used in sample configuration. These documents describe the server's features as they demonstrate them. [.SCRIPT_CODE] Source code for scripts run from the WWWEXEC object (i.e. any code that uses scriptlib.c, or cgilib.c). [.SYSTEM] (WWW_SYSTEM) Holds procedures, executables, and configuration files for running server. Installing server: The best way and safest way to install the server is to create a dedicated non-privileged account, duplicating the distribution file tree in this account's login directory. Another way to install, if you don't want the server account to be filled with source, is to use INSTALL.COM, like this: $ @INSTALL The destination should be the directory of the server account. If DECnet present: Define DECnet proxy access to the server account from both the server account and the SYSTEM account for the current node, making the proxy from the server account a default proxy (/default). The comments at the top of HTTP_STARTUP.COM give more details on creating the proxy records via AUTHORIZE. If no DECnet present: Modify system startup procedures to invoke MBXNET_STARTUP.COM with the web server account's username as parameter P1. Modify system startup procedures to invoke HTTP_STARTUP.COM, specifying the parameters as directed by the comments at the top of HTTP_STARTUP.COM. HTTP_STARTUP.COM will define the logicals listed above as system-wide logical names. If using MBXNET, the MBXNET_STARTUP.COM invocation must immediately precede the HTTP_STARTUP.COM invocation. Create a rules file for your site, using http_main.html as a starting point. The rules file format is similar to the CERN http server format, see file [.SERVERDOC]CONFIGFILE.HTML for descriptions of the individual rules. Shutting down/Restarting server: Management commands are sent to the running server using the privrequest program. Privrequest must be invoked as a foriegn command with the following arguments: $ privrequest local-port "command" remport where: local-port Local port number server recognizes as management port (HTTP_MAIN.CONF configures server to use port 931). "command" Managment command: HELP, SHUTDOWN, RESTART, ... remport Port number, required if server not running on port 80. Mailing list: Javier Henderson operates a mailing list for discussion of issues related to DECthread HTTP server. To subscribe send a command like the following in the body of a mail message to MXserver@kjsl.com: SUBSCRIBE VMS-WEB-daemon "Your real name here" Release notes: See the file aaareadme.release_notes for a summary of fixes and enhancments made to the various releases. ----------------------------------------------------------------------------- David L. Jones | Phone: (614) 292-6929 Ohio State Unviversity | Internet: 2070 Neil Ave. Rm. 122 | jonesd@kcgl1.eng.ohio-state.edu Columbus, OH 43210 | vman+@osu.edu