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