X-Git-Url: http://www.average.org/gitweb/?p=pdns-pipe-nmc.git;a=blobdiff_plain;f=NmcDom.hs;h=11b77ac4a01905140f19161f0451d9f6501f7ecc;hp=7eb4ee6d1f83e6906a769923d46ae1fcaf97e571;hb=355038bc44ff6a9dbbc5a09739fba3fe4b073b32;hpb=7d674399abdb34b7f27857d8b3dfe7d467fa1434 diff --git a/NmcDom.hs b/NmcDom.hs index 7eb4ee6..11b77ac 100644 --- a/NmcDom.hs +++ b/NmcDom.hs @@ -95,6 +95,44 @@ instance FromJSON NmcRRI2p where instance Mergeable NmcRRI2p where merge _ b = b +data NmcRRTls = NmcRRTls + { tlsMatchType :: Int -- 0:exact 1:sha256 2:sha512 + , tlsMatchValue :: String + , tlsIncSubdoms :: Int -- 1:enforce on subdoms 0:no + } deriving (Show, Eq) + +instance FromJSON NmcRRTls where + parseJSON (Array a) = + if length a == 3 then NmcRRTls + <$> parseJSON (a ! 0) + <*> parseJSON (a ! 1) + <*> parseJSON (a ! 2) + else empty + parseJSON _ = empty + +instance Mergeable NmcRRTls where + merge _ b = b + +data NmcRRDs = NmcRRDs + { dsKeyTag :: Int + , dsAlgo :: Int + , dsHashType :: Int + , dsHashValue :: String + } deriving (Show, Eq) + +instance FromJSON NmcRRDs where + parseJSON (Array a) = + if length a == 4 then NmcRRDs + <$> parseJSON (a ! 0) + <*> parseJSON (a ! 1) + <*> parseJSON (a ! 2) + <*> parseJSON (a ! 3) + else empty + parseJSON _ = empty + +instance Mergeable NmcRRDs where + merge _ b = b + data NmcDom = NmcDom { domService :: Maybe [NmcRRService] , domIp :: Maybe [String] , domIp6 :: Maybe [String] @@ -112,8 +150,8 @@ data NmcDom = NmcDom { domService :: Maybe [NmcRRService] , domMap :: Maybe (Map String NmcDom) , domFingerprint :: Maybe [String] , domTls :: Maybe (Map String - (Map String [[String]])) - , domDs :: Maybe [[String]] + (Map String [NmcRRTls])) + , domDs :: Maybe [NmcRRDs] , domMx :: Maybe [String] -- Synthetic } deriving (Show, Eq)