]> gitweb @ CieloNegro.org - Lucu.git/blobdiff - Network/HTTP/Lucu/Config.hs
Code clean-up using convertible-text
[Lucu.git] / Network / HTTP / Lucu / Config.hs
index 2ea2055de853c35faa89f4d2e21cf3d3c2d74d83..366a63cb1aab9bad37f96cd9eb4f5d701fff01e6 100644 (file)
@@ -1,22 +1,30 @@
 {-# LANGUAGE
-    OverloadedStrings
+    CPP
+  , OverloadedStrings
   , UnicodeSyntax
   #-}
 -- |Configurations for the Lucu httpd.
 module Network.HTTP.Lucu.Config
     ( Config(..)
+#if defined(HAVE_SSL)
     , SSLConfig(..)
-    , defaultConfig
+#endif
     )
     where
 import Data.Ascii (Ascii)
+import Data.CaseInsensitive (CI)
+import qualified Data.CaseInsensitive as CI
+import Data.Default
 import Data.Text (Text)
 import qualified Data.Text as T
 import Network
 import Network.BSD
 import Network.HTTP.Lucu.MIMEType.Guess
 import Network.HTTP.Lucu.MIMEType.DefaultExtensionMap
+#if defined(HAVE_SSL)
 import OpenSSL.Session
+#endif
+import Prelude.Unicode
 import System.IO.Unsafe
 
 -- |Configuration record for to run the httpd.
@@ -28,7 +36,7 @@ data Config = Config {
 
     -- |The host name of the server. This value will be used in
     -- built-in pages like \"404 Not Found\".
-    , cnfServerHost ∷ !Text
+    , cnfServerHost ∷ !(CI Text)
 
     -- |A port number (or a service name) to listen to HTTP clients.
     , cnfServerPort ∷ !ServiceName
@@ -46,9 +54,11 @@ data Config = Config {
     -- problem.)
     , cnfServerV6Addr ∷ !(Maybe HostName)
 
+#if defined(HAVE_SSL)
     -- |Configuration for HTTPS connections. Set this 'Nothing' to
     -- disable HTTPS.
     , cnfSSLConfig ∷ !(Maybe SSLConfig)
+#endif
 
     -- |The maximum number of requests to simultaneously accept in one
     -- connection. If a client exceeds this limitation, its last
@@ -77,6 +87,7 @@ data Config = Config {
     , cnfExtToMIMEType ∷ !ExtMap
     }
 
+#if defined(HAVE_SSL)
 -- |Configuration record for HTTPS connections.
 data SSLConfig
     = SSLConfig {
@@ -89,20 +100,23 @@ data SSLConfig
         -- up yourself with at least a server certification.
       , sslContext ∷ !SSLContext
       }
+#endif
 
 -- |The default configuration. Generally you can use this value as-is,
 -- or possibly you just want to replace the 'cnfServerSoftware' and
 -- 'cnfServerPort'. SSL connections are disabled by default.
-defaultConfig ∷ Config
-defaultConfig = Config {
-                  cnfServerSoftware              = "Lucu/1.0"
-                , cnfServerHost                  = T.pack (unsafePerformIO getHostName)
-                , cnfServerPort                  = "http"
-                , cnfServerV4Addr                = Just "0.0.0.0"
-                , cnfServerV6Addr                = Just "::"
-                , cnfSSLConfig                   = Nothing
-                , cnfMaxPipelineDepth            = 100
-                , cnfMaxEntityLength             = 16 * 1024 * 1024 -- 16 MiB
-                , cnfDumpTooLateAbortionToStderr = True
-                , cnfExtToMIMEType               = defaultExtensionMap
-                }
+instance Default Config where
+    def = Config {
+            cnfServerSoftware              = "Lucu/1.0"
+          , cnfServerHost                  = CI.mk ∘ T.pack $ unsafePerformIO getHostName
+          , cnfServerPort                  = "http"
+          , cnfServerV4Addr                = Just "0.0.0.0"
+          , cnfServerV6Addr                = Just "::"
+#if defined(HAVE_SSL)
+          , cnfSSLConfig                   = Nothing
+#endif
+          , cnfMaxPipelineDepth            = 100
+          , cnfMaxEntityLength             = 16 * 1024 * 1024 -- 16 MiB
+          , cnfDumpTooLateAbortionToStderr = True
+          , cnfExtToMIMEType               = defaultExtensionMap
+          }