X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=Network%2FHTTP%2FLucu.hs;h=876064ce8c14701931f0a040e6e8c511a02783b1;hp=80012b07ff6f6ae8256e9912135db939f5324737;hb=0678be8;hpb=11c3854540c46bfcd9e88c2164ed554f3b6550a5 diff --git a/Network/HTTP/Lucu.hs b/Network/HTTP/Lucu.hs index 80012b0..876064c 100644 --- a/Network/HTTP/Lucu.hs +++ b/Network/HTTP/Lucu.hs @@ -1,58 +1,59 @@ --- | Lucu is an HTTP daemonic library. It can be embedded in any --- Haskell program and runs in an independent thread. +-- | Lucu is an embedded HTTP server library. -- -- Features: -- --- [/Full support of HTTP\/1.1/] Lucu supports request pipelining, +-- [/Affinity for RESTafarians/] Lucu is specifically designed to be +-- suitable for RESTful applications. +-- +-- [/Full support of HTTP/\//1.1/] Lucu supports request pipelining, -- chunked I\/O, ETag comparison and \"100 Continue\". -- --- [/Performance/] Lucu doesn't fork\/exec to handle requests like --- CGI. It just spawns a new thread. Inter-process communication is --- done with STM. +-- [/SSL connections/] Lucu can handle HTTP connections over Secure +-- Socket Layer when configured with -fssl flag. -- --- Lucu is not a replacement for Apache. It is intended to be used to --- create an efficient web-based application without messing around --- FastCGI. It is also intended to be run behind a reverse-proxy so it --- doesn't have the following (otherwise essential) facilities: +-- Lucu is not a replacement for Apache or lighttpd. It is intended to +-- be used to build an efficient web-based RESTful application which +-- runs behind a reverse-proxy so it doesn't have the following +-- (otherwise essential) functionalities: -- --- [/Logging/] Lucu doesn't log any requests from any clients. +-- [/Logging/] Lucu doesn't write logs of any requests from any +-- clients. -- -- [/Client Filtering/] Lucu always accepts any clients. No IP -- filter is implemented. -- --- [/SSL Support/] Lucu can handle only HTTP. --- -- [/Bandwidth Limitting/] Lucu doesn't limit bandwidth it consumes. -- --- [/Protection Against Wicked Clients/] Lucu is fragile against --- wicked clients. No attacker should be able to cause a +-- [/Protection Against Wicked Clients/] Lucu is somewhat fragile +-- against wicked clients. No attacker should be able to cause a -- buffer-overflow but can possibly DoS it. -- - - module Network.HTTP.Lucu ( -- * Entry Point runHttpd - -- * Configuration + -- * 'Config'uration , module Network.HTTP.Lucu.Config - -- * Resource Tree - , ResourceDef(..) - , ResTree - , mkResTree + -- * URI-related data types + , Host + , Path - -- * Resource Monad + -- * 'Resource' dispatcher + , module Network.HTTP.Lucu.Dispatcher + + -- * 'Rsrc' Monad , module Network.HTTP.Lucu.Resource -- ** Things to be used in the Resource monad + -- *** 'Method' + , Method(..) - -- *** Status Code - , StatusCode(..) + -- *** 'StatusCode' + , module Network.HTTP.Lucu.StatusCode - -- *** Abortion - , abort - , abortA + -- *** 'Abortion' + , module Network.HTTP.Lucu.Abortion -- *** ETag , ETag(..) @@ -61,20 +62,30 @@ module Network.HTTP.Lucu -- *** MIME Type , MIMEType(..) - - -- * Utility + , MIMEParams + , mimeType + -- *** Authentication + , AuthChallenge(..) + , AuthCredential(..) + + -- * Utilities -- ** Static file handling , module Network.HTTP.Lucu.StaticFile ) where - import Network.HTTP.Lucu.Abortion +import Network.HTTP.Lucu.Authentication import Network.HTTP.Lucu.Config +import Network.HTTP.Lucu.Dispatcher import Network.HTTP.Lucu.ETag import Network.HTTP.Lucu.Httpd -import Network.HTTP.Lucu.MIMEType -import Network.HTTP.Lucu.Resource hiding (driftTo) -import Network.HTTP.Lucu.Resource.Tree +import Network.HTTP.Lucu.MIMEParams +import Network.HTTP.Lucu.MIMEType hiding (mimeType) +import Network.HTTP.Lucu.MIMEType.TH +import Network.HTTP.Lucu.Request +import Network.HTTP.Lucu.Resource import Network.HTTP.Lucu.Response import Network.HTTP.Lucu.StaticFile +import Network.HTTP.Lucu.StatusCode +import Network.HTTP.Lucu.Utils