e1c4504ede3264caa46df70ba351a14033c49f34
nearly all concepts and simple implementations thereof needed to get a simple HTTP/0.9 "compliant" server working (there are some hacks needed that we don't yet provide, since the correct things will be added shortly, like complete HTTP/1.1 request parsing. The hacks needed are provided as part of the basic HTTP/0.9 server demo in src/test/basic-demo.cl). Further work is needed to clean up some things, Entity and Resource handling needs to be implemented right and less "naive" (the current implementations are just simple place-holders to get things up and running). Connections need to have knowledge of client identity (passed from the driver, this is implementation-specific stuff). Logging needs to be implemented (probably as server mixins). Condition handling needs to generate better responses for HTTP/0.9, and the division between condition handling and normal handling needs to be documented/rethought. Content generation is totally missing currently and needs to be implemented. If this is all in place, an HTTP/1.0 conforming server should be possible, and after porting the drivers to ACL and LW, we can make a first release.
CLASH - The Common Lisp Adaptable Simple HTTP server
====================================================
This package is a very simple, yet adaptable HTTP server for various
implementations of ANSI Common Lisp. Since this package was born out
of neccessity ("scratching one's own itch", as Eric Raymond put it in
[1]), it provides the following feature set, which might or might not
suit your needs:
* CLASH is as simple as was possible to achieve the given objective of
serving static and dynamic content to various new and old clients,
as well as allowing for the creation of static snapshots of parts of
the served document tree for off-line distribution.
* It's very adaptable, since I never knew what features would be
needed next.
* It's as portable as possible, requiring only few changes to make it
run in other implementations capable of supporting serious HTTP
serving.
* It's under a very unrestrictive and clear licence, mostly X-style.
There exist a number of HTTP servers for CL already, but most of
them are under licences which are quite vague, and wouldn't stand up
in court, thus putting any user under too much of a risk. Since
CLASH has been explicitly put in the public domain, this shouldn't
be a problem, minus the ever present danger of software patents.
For information on the conditions of use and copying that come with
CLASH, see the file COPYING included in the distribution.
If CLASH suits your needs, use it as you wish. If it doesn't, take a
look at the following packages, which might suit your needs better
(and which are quite impressive in their feature sets):
* CL-HTTP
This is a very impressive and comprehensive implementation of HTTP
(including HTTP/1.1), HTML and XML generation, advanced user
interfacing via the WWW, proxying, mirroring, spiders and robots and
many other things. It runs in nearly all current implementations.
See http://www.ai.mit.edu/projects/iiip/doc/cl-http/home-page.htm
* Closure
This is the counter-part of CL-HTTP, in that it is a GPLed web
browser. It's still being developed, and although it currently runs
only under Franz' Allegro CL (for Linux/Unix), there are plans of
porting this further.
See http://www.uni-karlsruhe.de/~unk6/closure/
For further information on the conditions of use and copying that come
with CLASH, see the file COPYING included in the distribution.
For information on building and using CLASH, see doc/README.
Description
Languages
Common Lisp
94.5%
NewLisp
4.2%
Emacs Lisp
1.1%
Shell
0.2%