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.
62 lines
1.6 KiB
Common Lisp
62 lines
1.6 KiB
Common Lisp
;;;; -*-Mode: LISP; Package: CL-USER; Syntax: ANSI-Common-lisp -*-
|
|
;;;; CLASH --- The Common Lisp Adaptable Simple HTTP server
|
|
;;;; This is copyrighted software. See documentation for terms.
|
|
;;;;
|
|
;;;; clash.system --- CLASH system definitions for MK-DEFSYSTEM
|
|
;;;;
|
|
;;;; Checkout Tag: $Name$
|
|
;;;; $Id$
|
|
|
|
(in-package :CL-USER)
|
|
|
|
;;;; %File Description:
|
|
;;;;
|
|
;;;;
|
|
;;;;
|
|
|
|
#+NIL
|
|
(defsystem "CLASH-SYS"
|
|
:source-pathname "src/sys"
|
|
:source-extension "cl"
|
|
:components
|
|
((:file "package")
|
|
(:file "mp" :depends-on ("package"))
|
|
(:file "socket" :depends-on ("package"))))
|
|
|
|
(defsystem "CLASH"
|
|
:source-pathname "src"
|
|
:source-extension "cl"
|
|
:components
|
|
((:module "base"
|
|
:source-pathname ""
|
|
:components ((:file "package")))
|
|
(:module "main"
|
|
:source-pathname "main"
|
|
:components ((:file "conditions")
|
|
(:file "status-codes")
|
|
(:file "url"
|
|
:depends-on ("conditions" "status-codes"))
|
|
(:file "version"
|
|
:depends-on ("conditions" "status-codes"))
|
|
(:file "http-io"
|
|
:depends-on ("conditions" "status-codes"))
|
|
(:file "connection"
|
|
:depends-on ("http-io"))
|
|
(:file "method")
|
|
(:file "namespace"
|
|
:depends-on ("url"))
|
|
(:file "messages"
|
|
:depends-on ("url" "version"))
|
|
(:file "entity"
|
|
:depends-on ("http-io" "url"))
|
|
(:file "resource"
|
|
:depends-on ("entity" "method"))
|
|
(:file "server"
|
|
:depends-on ("namespace" "messages"
|
|
"resource")))
|
|
:depends-on ("base"))
|
|
(:module "driver"
|
|
:source-pathname "drivers"
|
|
:components (#+CMU (:file "simple-cmu"))
|
|
:depends-on ("base" "main"))))
|