{-# LANGUAGE OverloadedStrings #-} module Network.DomainAuth.SPF.Types where import Data.IP import Network.DNS (Domain) import Data.ByteString (ByteString) ---------------------------------------------------------------- -- See DAResult in Network.DomainAuth.Types data Qualifier = Q_Pass | Q_HardFail | Q_Softfail | Q_Neutral deriving (Eq,Enum,Bounded,Show) -- Depends on Qualifier qualifierSymbol :: ByteString qualifierSymbol = "+-~?" data SPF = SPF_IPv4Range Qualifier (AddrRange IPv4) | SPF_IPv6Range Qualifier (AddrRange IPv6) | SPF_Address Qualifier (Maybe Domain) (Int,Int) | SPF_MX Qualifier (Maybe Domain) (Int,Int) | SPF_Include Qualifier Domain | SPF_All Qualifier | SPF_Redirect Domain deriving Show ---------------------------------------------------------------- data SpfSeq = SS_All Qualifier | SS_IPv4Range Qualifier (AddrRange IPv4) | SS_IPv6Range Qualifier (AddrRange IPv6) | SS_IPv4Ranges Qualifier [AddrRange IPv4] | SS_IPv6Ranges Qualifier [AddrRange IPv6] | SS_IF_Pass Qualifier [IO SpfSeq] | SS_SpfSeq [IO SpfSeq]