{-# LANGUAGE OverloadedStrings #-}
module Network.DomainAuth.SPF.Types where
import Data.IP
import Network.DNS (Domain)
import Data.ByteString (ByteString)
data Qualifier = Q_Pass | Q_HardFail | Q_Softfail | Q_Neutral
deriving (Qualifier -> Qualifier -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Qualifier -> Qualifier -> Bool
$c/= :: Qualifier -> Qualifier -> Bool
== :: Qualifier -> Qualifier -> Bool
$c== :: Qualifier -> Qualifier -> Bool
Eq,Int -> Qualifier
Qualifier -> Int
Qualifier -> [Qualifier]
Qualifier -> Qualifier
Qualifier -> Qualifier -> [Qualifier]
Qualifier -> Qualifier -> Qualifier -> [Qualifier]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: Qualifier -> Qualifier -> Qualifier -> [Qualifier]
$cenumFromThenTo :: Qualifier -> Qualifier -> Qualifier -> [Qualifier]
enumFromTo :: Qualifier -> Qualifier -> [Qualifier]
$cenumFromTo :: Qualifier -> Qualifier -> [Qualifier]
enumFromThen :: Qualifier -> Qualifier -> [Qualifier]
$cenumFromThen :: Qualifier -> Qualifier -> [Qualifier]
enumFrom :: Qualifier -> [Qualifier]
$cenumFrom :: Qualifier -> [Qualifier]
fromEnum :: Qualifier -> Int
$cfromEnum :: Qualifier -> Int
toEnum :: Int -> Qualifier
$ctoEnum :: Int -> Qualifier
pred :: Qualifier -> Qualifier
$cpred :: Qualifier -> Qualifier
succ :: Qualifier -> Qualifier
$csucc :: Qualifier -> Qualifier
Enum,Qualifier
forall a. a -> a -> Bounded a
maxBound :: Qualifier
$cmaxBound :: Qualifier
minBound :: Qualifier
$cminBound :: Qualifier
Bounded,Int -> Qualifier -> ShowS
[Qualifier] -> ShowS
Qualifier -> [Char]
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
showList :: [Qualifier] -> ShowS
$cshowList :: [Qualifier] -> ShowS
show :: Qualifier -> [Char]
$cshow :: Qualifier -> [Char]
showsPrec :: Int -> Qualifier -> ShowS
$cshowsPrec :: Int -> Qualifier -> ShowS
Show)
qualifierSymbol :: ByteString
qualifierSymbol :: ByteString
qualifierSymbol = ByteString
"+-~?"
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 Int -> SPF -> ShowS
[SPF] -> ShowS
SPF -> [Char]
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
showList :: [SPF] -> ShowS
$cshowList :: [SPF] -> ShowS
show :: SPF -> [Char]
$cshow :: SPF -> [Char]
showsPrec :: Int -> SPF -> ShowS
$cshowsPrec :: Int -> SPF -> ShowS
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]