+++ /dev/null
--- | Helpers to perform DNS queries.
-module DNS (
- Domain,
- PTRResult,
- lookup_ptrs )
-where
-
-import Control.Concurrent.ParallelIO.Global ( parallel )
-import Network.DNS (
- Domain,
- DNSError,
- ResolvConf(..),
- defaultResolvConf,
- lookupRDNS,
- makeResolvSeed,
- withResolver )
-
-
--- The return type of lookupRDNS.
-type PTRResult = Either DNSError [Domain]
-
-
--- | Take the default ResolvConf and increase the timeout to 15
--- seconds.
-our_resolv_conf :: ResolvConf
-our_resolv_conf =
- defaultResolvConf { resolvTimeout = 15*1000*1000 } -- 15s
-
-
--- | Takes a list of IP addresses (as ByteStrings) and performs
--- reverse (PTR) lookups on each of them.
-lookup_ptrs :: [Domain] -> IO [PTRResult]
-lookup_ptrs ips = do
- rs <- makeResolvSeed our_resolv_conf
- let lookup' addr = withResolver rs $ \resolver ->
- lookupRDNS resolver addr
-
- parallel $ map lookup' ips