hws-1.1.0.1: src/Config.hs
-- -----------------------------------------------------------------------------
-- Copyright 2002, Simon Marlow.
-- All rights reserved.
--
-- Redistribution and use in source and binary forms, with or without
-- modification, are permitted provided that the following conditions are
-- met:
--
-- * Redistributions of source code must retain the above copyright notice,
-- this list of conditions and the following disclaimer.
--
-- * Redistributions in binary form must reproduce the above copyright
-- notice, this list of conditions and the following disclaimer in the
-- documentation and/or other materials provided with the distribution.
--
-- * Neither the name of the copyright holder(s) nor the names of
-- contributors may be used to endorse or promote products derived from
-- this software without specific prior written permission.
--
-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-- -----------------------------------------------------------------------------
module Config where
import Foreign
import Network.BSD
import Control.Concurrent
-----------------------------------------------------------------------------
-- Config info
data Config = Config {
user :: String,
group :: String,
port :: Int,
listen :: [Int], -- Todo: [(String,Int)],
-- eg. listen www.haskell.org:80
requestTimeout :: Int,
keepAliveTimeout :: Int,
maxClients :: Int,
serverAdmin :: String, -- "" indicates no admin
serverName :: String, -- "" indicates no canon name
serverAlias :: [String],
useCanonicalName :: Bool,
hostnameLookups :: Bool,
documentRoot :: String,
userDir :: String,
directoryIndex :: String,
accessFileName :: String,
indexes :: Bool,
followSymLinks :: Bool,
typesConfig :: String,
defaultType :: String,
addLanguage :: [(String,String)],
languagePriority :: [String],
accessLogFile :: String,
accessLogFormat :: String,
errorLogFile :: String,
logLevel :: Int
}
#ifdef DEBUG
deriving Show
#endif
defaultConfig :: Config
defaultConfig = Config{
user = "nobody",
group = "nobody",
port = 80,
listen = [],
requestTimeout = 300,
keepAliveTimeout = 15,
maxClients = 150,
serverAdmin = "",
serverName = "",
serverAlias = [],
useCanonicalName = False,
hostnameLookups = False,
documentRoot = "/usr/local/www/data",
userDir = "",
directoryIndex = "index.html",
accessFileName = ".htaccess",
indexes = False,
followSymLinks = False,
typesConfig = "/etc/mime.types",
defaultType = "text/plain",
addLanguage = [],
languagePriority = [],
accessLogFile = "http-access.log",
accessLogFormat = "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"",
errorLogFile = "httpd-error.log",
logLevel = 1
}
-- not user-definable...
serverSoftware = "HWS"
serverVersion = "0.1"
-- Local hostname. We'll update this on a SIGHUP, so make it an MVar.
local_hostent :: MVar HostEntry
local_hostent = unsafePerformIO newEmptyMVar