]> gitweb @ CieloNegro.org - Lucu.git/blob - Network/HTTP/Lucu.hs
forgot to re-export AuthChallenge and AuthCredential
[Lucu.git] / Network / HTTP / Lucu.hs
1 -- | Lucu is an HTTP daemonic library. It can be embedded in any
2 -- Haskell program and runs in an independent thread.
3 --
4 -- Features:
5 --
6 --   [/Full support of HTTP\/1.1/] Lucu supports request pipelining,
7 --   chunked I\/O, ETag comparison and \"100 Continue\".
8 --
9 --   [/Performance/] Lucu doesn't fork\/exec to handle requests like
10 --   CGI. It just spawns a new thread. Inter-process communication is
11 --   done with STM.
12 --
13 -- Lucu is not a replacement for Apache. It is intended to be used to
14 -- create an efficient web-based application without messing around
15 -- FastCGI. It is also intended to be run behind a reverse-proxy so it
16 -- doesn't have the following (otherwise essential) facilities:
17 --
18 --   [/Logging/] Lucu doesn't log any requests from any clients.
19 --
20 --   [/Client Filtering/] Lucu always accepts any clients. No IP
21 --   filter is implemented.
22 --
23 --   [/SSL Support/] Lucu can handle only HTTP.
24 --
25 --   [/Bandwidth Limitting/] Lucu doesn't limit bandwidth it consumes.
26 --
27 --   [/Protection Against Wicked Clients/] Lucu is fragile against
28 --   wicked clients. No attacker should be able to cause a
29 --   buffer-overflow but can possibly DoS it.
30 --
31
32
33 module Network.HTTP.Lucu
34     ( -- * Entry Point
35       runHttpd
36
37       -- * Configuration
38     , module Network.HTTP.Lucu.Config
39
40       -- * Resource Tree
41     , ResourceDef(..)
42     , ResTree
43     , mkResTree
44
45       -- * Resource Monad
46     , module Network.HTTP.Lucu.Resource
47
48       -- ** Things to be used in the Resource monad
49
50       -- *** Status Code
51     , StatusCode(..)
52
53       -- *** Abortion
54     , abort
55     , abortPurely
56     , abortA
57
58       -- *** ETag
59     , ETag(..)
60     , strongETag
61     , weakETag
62
63       -- *** MIME Type
64     , MIMEType(..)
65
66       -- *** Authorization
67     , AuthChallenge(..)
68     , AuthCredential(..)
69     
70       -- * Utility
71
72       -- ** Static file handling
73     , module Network.HTTP.Lucu.StaticFile
74     )
75     where
76
77 import Network.HTTP.Lucu.Abortion
78 import Network.HTTP.Lucu.Authorization
79 import Network.HTTP.Lucu.Config
80 import Network.HTTP.Lucu.ETag
81 import Network.HTTP.Lucu.Httpd
82 import Network.HTTP.Lucu.MIMEType
83 import Network.HTTP.Lucu.Resource hiding (driftTo)
84 import Network.HTTP.Lucu.Resource.Tree
85 import Network.HTTP.Lucu.Response
86 import Network.HTTP.Lucu.StaticFile