The basic server maintains a server administration page, which has the point and click ability to add server extensions for web building, server maintenance (link auditing, web mirroring, etc.), virtual document programming, or potentially any other provider-side software package. These extensions are automatically downloaded, unpacked, configured, and listed on the server administration page. As a result, the WSK is an interface for quickly finding and integrating the pieces of a custom web server. The WSK supports several UNIX server platforms, and an experimental version is freely accessible over the Web.
The WSK simplifies this process and improves the resulting site through the following innovations:
The core HTTP protocol implementation on both parent and child servers is a standard, slightly enhanced HTTP daemon. The novel parts of the WSK are implemented in virtual documents on both parent and child servers using the Common Gateway Interface (CGI) specification. (The HTTP daemon is slightly enhanced, in particular, so that it can pass extended environment information to virtual documents running on the child server.) We implemented the virtual documents on both parent and child servers using our libCGI library for simplified CGI programming in C.
Virtual documents on the parent server process the configuration form inputs, customize the installation instructions based on those inputs, and produce a customized server distribution for download. The latter process matches patterns against lines in the outgoing distribution and substitutes appropriate configuration inputs. Parent servers store and transmit distributions in the UNIX shell-archive (shar) format, with compressed binary components. This format makes it easy to match patterns, and that format is widely usable on target UNIX systems.
Virtual documents on the child server present a list of possible extensions, solicit confirmation and any additional information needed to install the extension, download, unpack, and configure extensions. The extensions themselves are usually server maintenance tools with virtual document interfaces. Examples of these extensions appear in the next section.
Verify Links This tool traverses the documents on a server by following links from a start page, reporting on any links that produce error conditions (e.g., the infamous "404 Error not found" message). The implementation uses a combination of queues and parallel processing for efficiency. Runtime parameters include server and document on which to start (doesn't have to be the same server running the tool), the depth of links to traverse, whether to following links pointing outside the starting server, overall timeout.
libCGI This library aides C programmers creating virtual documents using the ``Common Gateway Interface'' (which includes all form-processing programs). Features include: support for multiple methods (GET, PUT, POST, HEAD), better code structuring, memory and runtime efficient parsing of forms entries, aides in generating HTML forms.
Home Page Builder This tool presents a simple form, that when filled in produces a standard HTML home page. Features include incorporation of a graphical logo, organizational description, and simple top-level links. The result is structured in such a way so other tools may easily add top-level links.
Hypermail This tool turns an Internet mailbox, as is produced by archiving a mailing list, into a set of HTML documents: individual messages are HTML-formatted, and hyperlinked message lists index the messages. New hypermailed archives are automatically linked into the local web though an interactive interface. Features include: multiple indexes (by date, subject, author), threading (replies are hyperlinked to the original message), URLs made active within messages, integrated reply mechanism.
Getstats This tool produces a number of different reports summarizing server activity, based on log files. Report types include: by client site, by time period, by domain class (.com, .edu, etc.), by document or directory. The reports are highly parameterized through command-line options and through an HTML form.
The experimental WSK supports SunOS 4.1.3, Solaris 2.3, OSF/1 V2.0, AIX 3.2.5, and IRIX 5.2 operating systems. Additional ports, including Windows NT, are in progress.
Some problems have been reported, e.g., the lack of access management tools, trouble with firewalls and proxy servers, and missing operating system ports. However, feedback has been overwhelmingly positive, including reports of ``a total of 7 minutes to complete the installation, including putting our organization's logo on the home page.''
First, the automated WSK installation process can serve as a distribution mechanism for software where payment was determined though some off-line means (telephone, etc.) Secure operation of such a mechanism could encrypt the distribution such that it can be decrypted using an authentication key transmitted to the webmaster during the off-line payment transaction. The installation virtual document on the child server would prompt for the authentication key and perform the encryption. Variations could dispense evaluation copies and timed licenses.
Going further, privacy and digital signature enhancements on the HTTP transactions would enable exchange of payment information on-line. The use of public-key crytography would minimize the exchange of keys and the associated risk. Extensions could be offered by lesser-knows parent servers as long as the distributions are digitally signed and thereby deemed trustworthy.
With the full range of freeware and payware server extension options, WSK parent servers could form a major new Web software marketing, sales, and distribution channel. This would serve freeware authors, payware authors, and would-be webmasters as the Web pushes out into the mainstream.
Jay has been a Web developer for over a year and a half, with the T-shirts to prove it. In addition to supervising a variety of Web-related technology projects, he is the primary author of several Web-related software packages, including The Webmaster's Starter Kit, libCGI, and ServiceMail (a toolkit for developing MIME email servers). He developed the first real order-taking form on the Web (the original Document Center storefront) and even built a complete Web server whose only net connection is sendmail (fortunately it was never released).