packages feed

dns 0.2.0 → 0.2.1

raw patch · 5 files changed

+62/−3 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Network.DNS.Lookup: lookupPTR :: Resolver -> Domain -> IO (Maybe [Domain])
+ Network.DNS.Lookup: lookupSRV :: Resolver -> Domain -> IO (Maybe [(Int, Int, Int, Domain)])
+ Network.DNS.Types: PTR :: TYPE
+ Network.DNS.Types: RD_PTR :: Domain -> RDATA
+ Network.DNS.Types: RD_SRV :: Int -> Int -> Int -> Domain -> RDATA
+ Network.DNS.Types: SRV :: TYPE

Files

Network/DNS/Internal.hs view
@@ -18,7 +18,7 @@ {-|   Types for resource records. -}-data TYPE = A | AAAA | NS | TXT | MX | CNAME | SOA+data TYPE = A | AAAA | NS | TXT | MX | CNAME | SOA | PTR | SRV           | UNKNOWN Int deriving (Eq, Show, Read)  rrDB :: [(TYPE, Int)]@@ -27,9 +27,11 @@   , (NS,     2)   , (CNAME,  5)   , (SOA,    6)+  , (PTR,   12)   , (MX,    15)   , (TXT,   16)   , (AAAA,  28)+  , (SRV,   33)   ]  rookup                  :: (Eq b) => b -> [(a,b)] -> Maybe a@@ -125,9 +127,10 @@ {-|   Raw data format for each type. -}-data RDATA = RD_NS Domain | RD_CNAME Domain | RD_MX Int Domain+data RDATA = RD_NS Domain | RD_CNAME Domain | RD_MX Int Domain | RD_PTR Domain            | RD_SOA Domain Domain Int Int Int Int Int            | RD_A IPv4 | RD_AAAA IPv6 | RD_TXT ByteString+           | RD_SRV Int Int Int Domain            | RD_OTH [Int] deriving (Eq)  instance Show RDATA where@@ -138,6 +141,8 @@   show (RD_AAAA aaaa) = show aaaa   show (RD_TXT txt) = BS.unpack txt   show (RD_SOA mn _ _ _ _ _ mi) = BS.unpack mn ++ " " ++ show mi+  show (RD_PTR dom) = BS.unpack dom+  show (RD_SRV pri wei prt dom) = show pri ++ " " ++ show wei ++ " " ++ show prt ++ BS.unpack dom   show (RD_OTH is) = show is  ----------------------------------------------------------------
Network/DNS/Lookup.hs view
@@ -6,6 +6,8 @@     lookupA, lookupAAAA   , lookupMX, lookupAviaMX, lookupAAAAviaMX   , lookupTXT+  , lookupPTR+  , lookupSRV   ) where  import Control.Applicative@@ -82,3 +84,27 @@     toTXT = maybe Nothing (Just . map unTag)     unTag (RD_TXT x) = x     unTag _ = error "lookupTXT"++----------------------------------------------------------------++{-|+  Resolving 'Domain' and its preference by 'PTR'.+-}+lookupPTR :: Resolver -> Domain -> IO (Maybe [Domain])+lookupPTR rlv dom = toPTR <$> DNS.lookup rlv dom PTR+  where+    toPTR = maybe Nothing (Just . map unTag)+    unTag (RD_PTR dm) = dm+    unTag _ = error "lookupPTR"++----------------------------------------------------------------++{-|+  Resolving 'Domain' and its preference by 'SRV'.+-}+lookupSRV :: Resolver -> Domain -> IO (Maybe [(Int,Int,Int,Domain)])+lookupSRV rlv dom = toSRV <$> DNS.lookup rlv dom SRV+  where+    toSRV = maybe Nothing (Just . map unTag)+    unTag (RD_SRV pri wei prt dm) = (pri,wei,prt,dm)+    unTag _ = error "lookupSRV"
Network/DNS/Response.hs view
@@ -126,6 +126,15 @@     decodeRetry   = getInt32     decodeExpire  = getInt32     decodeMinumun = getInt32+decodeRData PTR _ = RD_PTR <$> decodeDomain+decodeRData SRV _ = RD_SRV <$> decodePriority+                           <*> decodeWeight+                           <*> decodePort+                           <*> decodeDomain+  where+    decodePriority = getInt16+    decodeWeight   = getInt16+    decodePort     = getInt16  decodeRData _  len = RD_OTH <$> getNBytes len 
Test.hs view
@@ -7,6 +7,7 @@ import Test.Framework (defaultMain, testGroup, Test) import Test.Framework.Providers.HUnit import Test.HUnit hiding (Test)+import qualified Data.ByteString.Char8 as BS  tests :: [Test] tests = [@@ -16,6 +17,8 @@        , testCase "lookupTXT" test_lookupTXT        , testCase "lookupAviaMX" test_lookupAviaMX        , testCase "lookupAviaCNAME" test_lookupAviaCNAME+       , testCase "lookupPTR" test_lookupPTR+       , testCase "lookupSRV" test_lookupSRV        ]   ] @@ -59,6 +62,22 @@     rs <- makeResolvSeed defaultResolvConf     withResolver rs $ \resolver ->         DNS.lookupA resolver "ghs.google.com" ??= ["72.14.203.121"]++test_lookupPTR :: IO ()+test_lookupPTR = do+    rs <- makeResolvSeed defaultResolvConf+    withResolver rs $ \resolver ->+        DNS.lookupPTR resolver rev ?= Just ["www-v4.iij.ad.jp."]+  where+    target = "210.130.137.80"+    rev = BS.intercalate "." (reverse (BS.split '.' target))+          `BS.append` ".in-addr.arpa"++test_lookupSRV :: IO ()+test_lookupSRV = do+    rs <- makeResolvSeed defaultResolvConf+    withResolver rs $ \resolver ->+        DNS.lookupSRV resolver "_sip._tcp.cisco.com" ?= Just [(1,0,5060,"vcsgw.cisco.com.")]  main :: IO () main = defaultMain tests
dns.cabal view
@@ -1,5 +1,5 @@ Name:                   dns-Version:                0.2.0+Version:                0.2.1 Author:                 Kazu Yamamoto <kazu@iij.ad.jp> Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp> License:                BSD3