X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Network%2FHTTP%2FLucu%2FConfig.hs;h=29c560891ebec2f9d13b38bca91f9ce2d77436ae;hb=0214f070b80791323430e21b53bcbe8a77b71b23;hp=d2b0f60eea84a8adf33946df02163285f54e1e53;hpb=f504167b85561373b4c444e2d37a513e0ab504a9;p=Lucu.git diff --git a/Network/HTTP/Lucu/Config.hs b/Network/HTTP/Lucu/Config.hs index d2b0f60..29c5608 100644 --- a/Network/HTTP/Lucu/Config.hs +++ b/Network/HTTP/Lucu/Config.hs @@ -26,8 +26,20 @@ data Config = Config { -- built-in pages like \"404 Not Found\". , cnfServerHost :: !Strict.ByteString - -- |A port ID to listen to HTTP clients. - , cnfServerPort :: !PortID + -- |A port number (or service name) to listen to HTTP clients. + , cnfServerPort :: !ServiceName + + -- |Local IPv4 address to listen to HTTP clients. Set this to + -- @('Just' "0.0.0.0")@ if you want to accept any IPv4 + -- connections. Set this to 'Nothing' to disable IPv4. + , cnfServerV4Addr :: !(Maybe HostName) + + -- |Local IPv6 address to listen to HTTP clients. Set this to + -- @('Just' "::")@ if you want to accept any IPv6 connections. Set + -- this to 'Nothing' to disable IPv6. Note that there is currently + -- no way to assign separate ports to IPv4 and IPv6 server + -- sockets. + , cnfServerV6Addr :: !(Maybe HostName) -- |Configuration for HTTPS connections. Set this 'Nothing' to -- disable HTTPS. @@ -73,8 +85,11 @@ data Config = Config { -- |Configuration record for HTTPS connections. data SSLConfig = SSLConfig { - -- |A port ID to listen to HTTPS clients. - sslServerPort :: !PortID + -- |A port ID to listen to HTTPS clients. Local addresses + -- (both for IPv4 and IPv6) will be derived from the parent + -- 'Config'. + sslServerPort :: !ServiceName + -- |An SSL context for accepting connections. , sslContext :: !SSLContext } @@ -86,7 +101,9 @@ defaultConfig :: Config defaultConfig = Config { cnfServerSoftware = C8.pack "Lucu/1.0" , cnfServerHost = C8.pack (unsafePerformIO getHostName) - , cnfServerPort = Service "http" + , cnfServerPort = "http" + , cnfServerV4Addr = Just "0.0.0.0" + , cnfServerV6Addr = Just "::" , cnfSSLConfig = Nothing , cnfMaxPipelineDepth = 100 , cnfMaxEntityLength = 16 * 1024 * 1024 -- 16 MiB