+dataRR RRTypeSRV = justl domSrv
+dataRR RRTypeMX = justl domMx
+dataRR RRTypeA = justl domIp
+dataRR RRTypeAAAA = justl domIp6
+dataRR RRTypeCNAME = justv domAlias
+dataRR RRTypeDNAME = justv domTranslate
+dataRR RRTypeSOA = soa
+ where
+ soa name dom = -- FIXME generate only for top domain
+ -- FIXME make realistic version field
+ -- FIXME make realistic nameserver field
+ -- Follows a relatively ugly hack to figure if we are at the top
+ -- level domain ("something.bit"). Only in such case we provide
+ -- the synthetic SOA RR. Otherwise yield empty.
+ case splitOn (pack ".") (pack name) of
+ [_,_] ->
+ if dom == emptyNmcDom then []
+ else ["ns " ++ email ++ " 99999 10800 3600 604800 86400"]
+ where
+ email = case domEmail dom of
+ Nothing -> "hostmaster." ++ name
+ Just addr -> dotmail addr
+ _ -> []
+dataRR RRTypeRP = rp
+ where
+ rp _ dom = case domEmail dom of
+ Nothing -> []
+ Just addr -> [(dotmail addr) ++ " ."]
+dataRR RRTypeLOC = justv domLoc
+dataRR RRTypeNS = justl domNs
+dataRR RRTypeDS = ds
+ where
+ ds _ dom = case domDs dom of
+ Nothing -> []
+ Just dss -> map dsStr dss
+ where
+ dsStr x = (show (dsKeyTag x)) ++ " "
+ ++ (show (dsAlgo x)) ++ " "
+ ++ (show (dsHashType x)) ++ " "
+ ++ (dsHashValue x)