packages feed

iptadmin-1.0.0: src/IptAdmin/Types.hs

module IptAdmin.Types where

import Control.Monad.Error
import Control.Monad.State
import Data.IORef
import Data.Map
import Data.Time
import Happstack.Server.SimpleHTTP

-- | Authorization monad
type IptAdminAuth = ServerPartT (ErrorT String IO)

-- | Main request handler monad
type IptAdmin = ServerPartT (ErrorT String (StateT MainState IO))

type SessionId = String

type Sessions = Map SessionId Session

data Session = Session { lastVisit :: UTCTime
                       , backup :: Maybe String
                       }

type MainState = (SessionId, IORef Sessions, IptAdminConfig)

data IptAdminConfig = IptAdminConfig { cSaveCommand :: String
                                     , cPort :: Int
                                     , cPamName :: String
                                     }