packages feed

domain-auth-0.2.4: Network/DomainAuth/SPF/Types.hs

{-# LANGUAGE OverloadedStrings #-}

module Network.DomainAuth.SPF.Types where

import Data.ByteString (ByteString)
import Data.IP
import Network.DNS (Domain)

----------------------------------------------------------------

-- 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]