packages feed

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)