postmaster-0.1: Postmaster/FSM/EhloPeer.hs
{- |
Module : Postmaster.FSM.EhloPeer
Copyright : (c) 2004-2008 by Peter Simons
License : GPL2
Maintainer : simons@cryp.to
Stability : provisional
Portability : Haskell 2-pre
-}
module Postmaster.FSM.EhloPeer where
import Postmaster.Base
import Text.ParserCombinators.Parsec.Rfc2821
-- |Local Variable: @EHLOPEER :: 'Bool'@
ehloPeer :: SmtpdVariable
ehloPeer = defineLocal "ehlopeer"
handleEhloPeer :: EventT
handleEhloPeer f e = do
r <- f e
case (e, isSuccess r) of
(SayEhlo _, True) -> ehloPeer (`setVar` True)
(SayHelo _, True) -> ehloPeer (`setVar` False)
(_, _) -> return ()
return r
isEhloPeer :: Smtpd Bool
isEhloPeer = ehloPeer (`getVarDef` False)