Introduction to Plexus

Plexus is a public domain HTTP server written in perl (you should use perl 4.0 patchlevel 36 or later). It is designed to be easy to install and use, have good performance, and be easily extensible (serving as a development toolkit).

The core server is about 1400 lines of perl and there are approximately 2200 lines of support routines and 70KBytes of documentation.

Protocols

Plexus currently supports both the HTTP/0.9 and HTTP/1.0 protocols. There are plans for a Gopher protocol module that will let you serve data from gopher directorys. The Plexus dispatch routine can manage incoming connections on multiple socket ports and manage multiple protocol streams.

Logging

There are two logging functions to chose from (and it's easy to write your own custom routines). The basic logging routines just log all transactions to a log file and emails serious errors to the webmaster (this is configurable). The alternate set of logging routines use the syslog() functions to allow remote logging and reporting of serious errors.

File Locking

You can configure POSIX style locking using fcntl() or BSD style locking using flock().

Authentication

A skeletal RIPEM (Riordan Internet Privacy Enhanced Mail) based authentication package is provided (RIPEM itself is not included). Any PEM compliant package would easily drop in to replace RIPEM. This requires customization to get working but the basic functionality is provided. The most important thing is that the hooks for providing whatever authentication scheme you need (Basic, PEM, Kerberos) is in place.

Access Control

Hooks for access control (aka authorization) are provided. There are two sample access control modules include. One is a simple filter based on the IP address of the remote host. The other is a pass/fail access control for restricting access to certain directories. Neither of these are complete but could be used as the foundation of a more complete access control system.

The Access Control system and the Authentication system are designed to operate together. The Authentication system provides the username of the authenticated user to the Access Control system.

Access Methods

You can completely configure the actions taken on each request. The HTTP GET and HEAD methods are provided and are fairly complete. There is a skeletal POST method provided (the only provided functionality is it will mail the request to the server administrator).

Configuration Files

There are two levels of configuration files provided. plexus.conf is the server configuration file that contains things like the user and group id's to run as. local.conf is more of a user level configuration file. It is used to customize the system and add new gateways.


Tony Sanders