This is a complete implementation of an HTTP 1.0 server in Scheme.
The server contains other standalone packages that may separately be of
use:
- URI and URL parsers and unparsers.
- A library to help writing CGI scripts in Scheme.
- Server extensions for interfacing to CGI scripts.
- Server extensions for uploading Scheme code.
The server has three main design goals:
- Extensibility
- The server is in fact nothing but extensions, using a mechanism
called "path handlers" to define URL-specific services. It has a toolkit
of services that can be used as-is, extended or built upon.
User extensions have exactly the same status as the base services.
The extension mechanism allows for easy implementation of new services
without the overhead of the CGI interface. Since the server is written
on top of the Scheme shell, the full set of Unix system calls and
program tools is available to the implementor.
- Mobile code
- The server allows Scheme code to be uploaded for direct execution
inside the server. The server has complete control over the code,
and can safely execute it in restricted environments that do not
provide access to potentially dangerous primitives (such as the
"delete file" procedure.)
- Clarity
- I wrote this server to help myself understand the Web. It is voluminously
commented, and I hope it will prove to be an aid in understanding the
low-level details of the Web protocols.
The S.U. server has the ability to upload code from Web clients and
execute that code on behalf of the client in a protected environment.
Some simple documentation on the server
is available.