    -- | Maintainer: Jelmer Vernooĳ <jelmer@jelmer.uk>

    module Propellor.Property.Logcheck (
    	ReportLevel (Workstation, Server, Paranoid),
    	Service,
    	defaultPrefix,
    	ignoreFilePath,
    	ignoreLines,
    	installed,
    ) where

    import Propellor.Base
    import qualified Propellor.Property.Apt as Apt
    import qualified Propellor.Property.File as File

    data ReportLevel = Workstation | Server | Paranoid
    type Service = String

    instance ConfigurableValue ReportLevel where
    	val Workstation = "workstation"
    	val Server = "server"
    	val Paranoid = "paranoid"

    -- The common prefix used by default in syslog lines.
    defaultPrefix :: String
    defaultPrefix = "^\\w{3} [ :[:digit:]]{11} [._[:alnum:]-]+ "

    ignoreFilePath :: ReportLevel -> Service -> FilePath
    ignoreFilePath t n = "/etc/logcheck/ignore.d." ++ (val t) </> n

    ignoreLines :: ReportLevel -> Service -> [String] -> Property UnixLike
    ignoreLines t n ls = (ignoreFilePath t n) `File.containsLines` ls
    	`describe` ("logcheck ignore lines for " ++ n ++ "(" ++ val t ++ ")")

    installed :: Property DebianLike
    installed = Apt.installed ["logcheck"]