summaryrefslogtreecommitdiffhomepage
path: root/Network
diff options
context:
space:
mode:
authorGravatar Kazu Yamamoto <kazu@iij.ad.jp>2010-03-23 20:36:49 +0900
committerGravatar Kazu Yamamoto <kazu@iij.ad.jp>2010-03-23 20:36:49 +0900
commitc2bd3b127be27a40cb279fb82d16cff147aaa10e (patch)
treee4c0bbbbaee8bf9b81066d52b0bf46156612de9f /Network
parent52a6eaad9c6d67874ecd7b6a7b3c8d2d4d213f1d (diff)
add Lookup.
Diffstat (limited to 'Network')
-rw-r--r--Network/DNS/Lookup.hs33
1 files changed, 33 insertions, 0 deletions
diff --git a/Network/DNS/Lookup.hs b/Network/DNS/Lookup.hs
new file mode 100644
index 0000000..c458149
--- /dev/null
+++ b/Network/DNS/Lookup.hs
@@ -0,0 +1,33 @@
+module Network.DNS.Lookup where
+
+import Control.Applicative
+import Data.IP
+import Network.DNS.Types
+import Network.DNS.Resolver as DNS
+
+lookupA :: Resolver -> Domain -> IO (Maybe [IPv4])
+lookupA rlv dom = toV4 <$> DNS.lookup rlv dom A
+ where
+ toV4 = maybe Nothing (Just . map unTag)
+ unTag (RD_A x) = x
+ unTag _ = error "lookupA"
+
+lookupAAAA :: Resolver -> Domain -> IO (Maybe [IPv6])
+lookupAAAA rlv dom = toV6 <$> DNS.lookup rlv dom AAAA
+ where
+ toV6 = maybe Nothing (Just . map unTag)
+ unTag (RD_AAAA x) = x
+ unTag _ = error "lookupAAAA"
+
+lookupAviaMX :: Resolver -> Domain -> IO (Maybe [IPv4])
+lookupAviaMX = undefined
+
+lookupAAAAviaMX :: Resolver -> Domain -> IO (Maybe [IPv6])
+lookupAAAAviaMX = undefined
+
+lookupTXT :: Resolver -> Domain -> IO (Maybe [String])
+lookupTXT rlv dom = toTXT <$> DNS.lookup rlv dom TXT
+ where
+ toTXT = maybe Nothing (Just . map unTag)
+ unTag (RD_TXT x) = x
+ unTag _ = error "lookupTXT"