snap-server-0.9.4.6: A fast, iteratee-based, epoll-enabled web server for the Snap Framework

Safe Haskell | None
Language | Haskell98

Snap.Http.Server.Config

Description

This module exports the `Config` datatype, which you can use to configure the Snap HTTP server.

Synopsis

- data Config m a
- data ConfigLog
  - = ConfigNoLog
  - | ConfigFileLog FilePath
  - | ConfigIoLog (ByteString -> IO ())
- emptyConfig :: Config m a
- defaultConfig :: MonadSnap m => Config m a
- commandLineConfig :: MonadSnap m => Config m a -> IO (Config m a)
- extendedCommandLineConfig :: MonadSnap m => [OptDescr (Maybe (Config m a))] -> (a -> a -> a) -> Config m a -> IO (Config m a)
- completeConfig :: MonadSnap m => Config m a -> IO (Config m a)
- optDescrs :: MonadSnap m => Config m a -> [OptDescr (Maybe (Config m a))]
- fmapOpt :: (a -> b) -> OptDescr a -> OptDescr b
- getAccessLog :: Config m a -> Maybe ConfigLog
- getBind :: Config m a -> Maybe ByteString
- getCompression :: Config m a -> Maybe Bool
- getDefaultTimeout :: Config m a -> Maybe Int
- getErrorHandler :: Config m a -> Maybe (SomeException -> m ())
- getErrorLog :: Config m a -> Maybe ConfigLog
- getHostname :: Config m a -> Maybe ByteString
- getLocale :: Config m a -> Maybe String
- getOther :: Config m a -> Maybe a
- getPort :: Config m a -> Maybe Int
- getProxyType :: Config m a -> Maybe ProxyType
- getSSLBind :: Config m a -> Maybe ByteString
- getSSLCert :: Config m a -> Maybe FilePath
- getSSLKey :: Config m a -> Maybe FilePath
- getSSLChainCert :: Config m a -> Maybe Bool
- getSSLPort :: Config m a -> Maybe Int
- getVerbose :: Config m a -> Maybe Bool
- getStartupHook :: Config m a -> Maybe (StartupInfo m a -> IO ())
- setAccessLog :: ConfigLog -> Config m a -> Config m a
- setBind :: ByteString -> Config m a -> Config m a
- setCompression :: Bool -> Config m a -> Config m a
- setDefaultTimeout :: Int -> Config m a -> Config m a
- setErrorHandler :: (SomeException -> m ()) -> Config m a -> Config m a
- setErrorLog :: ConfigLog -> Config m a -> Config m a
- setHostname :: ByteString -> Config m a -> Config m a
- setLocale :: String -> Config m a -> Config m a
- setOther :: a -> Config m a -> Config m a
- setPort :: Int -> Config m a -> Config m a
- setProxyType :: ProxyType -> Config m a -> Config m a
- setSSLBind :: ByteString -> Config m a -> Config m a
- setSSLCert :: FilePath -> Config m a -> Config m a
- setSSLKey :: FilePath -> Config m a -> Config m a
- setSSLChainCert :: Bool -> Config m a -> Config m a
- setSSLPort :: Int -> Config m a -> Config m a
- setVerbose :: Bool -> Config m a -> Config m a
- setStartupHook :: (StartupInfo m a -> IO ()) -> Config m a -> Config m a
- data StartupInfo m a
- getStartupSockets :: StartupInfo m a -> [Socket]
- getStartupConfig :: StartupInfo m a -> Config m a

# Documentation

data Config m a

A record type which represents partial configurations (for `httpServe`) by wrapping all of its fields in a `Maybe`. Values of this type are usually constructed via its `Monoid` instance by doing something like:

    setPort 1234 mempty

Any fields which are unspecified in the `Config` passed to `httpServe` (and this is the norm) are filled in with default values from `defaultConfig`.

Instances

Show (Config m a) |
Monoid (Config m a) |
Typeable ((* -> *) -> * -> *) Config |

data ConfigLog

Data type representing the configuration of a logging target

Constructors

ConfigNoLog | no logging
ConfigFileLog FilePath | log to text file
ConfigIoLog (ByteString -> IO ()) | log custom IO handler

Instances

Show ConfigLog |

emptyConfig :: Config m a

Returns a completely empty `Config`. Equivalent to `mempty` from `Config'`s `Monoid` instance.

defaultConfig :: MonadSnap m => Config m a

These are the default values for the options

commandLineConfig

Arguments

:: MonadSnap m |
=> Config m a | default configuration. This is combined with `defaultConfig` to obtain default values to use if the given parameter is specified on the command line. Usually it is fine to use `emptyConfig` here.
-> IO (Config m a) |

Returns a `Config` obtained from parsing command-line options, using the default Snap `OptDescr` set.

On Unix systems, the locale is read from the `LANG` environment variable.

extendedCommandLineConfig

Arguments

:: MonadSnap m |
=> [OptDescr (Maybe (Config m a))] | User options.
-> (a -> a -> a) | State for multiple invoked user command-line options will be combined using this function.
-> Config m a | default configuration. This is combined with Snap's `defaultConfig` to obtain default values to use if the given parameter is specified on the command line. Usually it is fine to use `emptyConfig` here.
-> IO (Config m a) |

Returns a `Config` obtained from parsing command-line options, using the default Snap `OptDescr` set as well as a list of user OptDescrs. User OptDescrs use the "other" field (accessible using `getOther` and `setOther`) to store additional command-line option state. These are combined using a user-defined combining function.

On Unix systems, the locale is read from the `LANG` environment variable.

completeConfig :: MonadSnap m => Config m a -> IO (Config m a)

optDescrs

Arguments

:: MonadSnap m |
=> Config m a | the configuration defaults.
-> [OptDescr (Maybe (Config m a))] |

Returns a description of the snap command line options suitable for use with System.Console.GetOpt.

fmapOpt :: (a -> b) -> OptDescr a -> OptDescr b

getAccessLog :: Config m a -> Maybe ConfigLog

Path to the access log

getBind :: Config m a -> Maybe ByteString

Returns the address to bind to (for http)

getCompression :: Config m a -> Maybe Bool

If set and set to True, compression is turned on when applicable

getDefaultTimeout :: Config m a -> Maybe Int

getErrorHandler :: Config m a -> Maybe (SomeException -> m ())

A MonadSnap action to handle 500 errors

getErrorLog :: Config m a -> Maybe ConfigLog

Path to the error log

getHostname :: Config m a -> Maybe ByteString

The hostname of the HTTP server. This field has the same format as an HTTP `Host` header; if a `Host` header came in with the request, we use that, otherwise we default to this value specified in the configuration.

getLocale :: Config m a -> Maybe String

Gets the locale to use. Locales are used on Unix only, to set the `LANG`/`LC_ALL`/etc. environment variable. For instance if you set the locale to "`en_US`", we'll set the relevant environment variables to "`en_US.UTF-8`".

getOther :: Config m a -> Maybe a

getPort :: Config m a -> Maybe Int

Returns the port to listen on (for http)

getProxyType :: Config m a -> Maybe ProxyType

getSSLBind :: Config m a -> Maybe ByteString

Returns the address to bind to (for https)

getSSLCert :: Config m a -> Maybe FilePath

Path to the SSL certificate file

getSSLKey :: Config m a -> Maybe FilePath

Path to the SSL key file

getSSLChainCert :: Config m a -> Maybe Bool

Path to the SSL certificate file

getSSLPort :: Config m a -> Maybe Int

Returns the port to listen on (for https)

getVerbose :: Config m a -> Maybe Bool

Whether to write server status updates to stderr

getStartupHook :: Config m a -> Maybe (StartupInfo m a -> IO ())

A startup hook is run after the server initializes but before user request processing begins. The server passes, through a `StartupInfo` object, the startup hook a list of the sockets it is listening on and the final `Config` object completed after command-line processing.

setAccessLog :: ConfigLog -> Config m a -> Config m a

setBind :: ByteString -> Config m a -> Config m a

setCompression :: Bool -> Config m a -> Config m a

setDefaultTimeout :: Int -> Config m a -> Config m a

setErrorHandler :: (SomeException -> m ()) -> Config m a -> Config m a

setErrorLog :: ConfigLog -> Config m a -> Config m a

setHostname :: ByteString -> Config m a -> Config m a

setLocale :: String -> Config m a -> Config m a

setOther :: a -> Config m a -> Config m a

setPort :: Int -> Config m a -> Config m a

setProxyType :: ProxyType -> Config m a -> Config m a

setSSLBind :: ByteString -> Config m a -> Config m a

setSSLCert :: FilePath -> Config m a -> Config m a

setSSLKey :: FilePath -> Config m a -> Config m a

setSSLChainCert :: Bool -> Config m a -> Config m a

setSSLPort :: Int -> Config m a -> Config m a

setVerbose :: Bool -> Config m a -> Config m a

setStartupHook :: (StartupInfo m a -> IO ()) -> Config m a -> Config m a

data StartupInfo m a

Arguments passed to `setStartupHook`.

getStartupSockets :: StartupInfo m a -> [Socket]

The the `Socket`s opened by the server. There will be two `Socket`s for SSL connections, and one otherwise.

getStartupConfig :: StartupInfo m a -> Config m a