packages feed

hsdns 1.7.1 → 1.8

raw patch · 6 files changed

+27/−25 lines, 6 filesdep ~network

Dependency ranges changed: network

Files

ADNS.hs view
@@ -22,16 +22,15 @@   )   where -import Network           ( HostName, PortID )-import Network.Socket    ( HostAddress )+import Network.Socket    ( HostName, HostAddress, PortNumber ) import ADNS.Base import ADNS.Resolver  queryA :: Resolver -> HostName -> IO (Maybe [HostAddress]) queryA = query resolveA --- | For quering SRV records. Result is the list of tuples (host, port).-querySRV :: Resolver -> HostName -> IO (Maybe [(HostName, PortID)])+-- | For querying SRV records. Result is the list of tuples (host, port).+querySRV :: Resolver -> HostName -> IO (Maybe [(HostName, PortNumber)]) querySRV = query resolveSRV  queryPTR :: Resolver -> HostAddress -> IO (Maybe [HostName])
ADNS/Base.hsc view
@@ -20,8 +20,7 @@ module ADNS.Base where  import Control.Exception        ( assert, bracket )-import Network                  ( HostName )-import Network.Socket           ( HostAddress, hostAddressToTuple )+import Network.Socket           ( HostName, HostAddress, hostAddressToTuple ) import Foreign import Foreign.C @@ -342,7 +341,7 @@   , expires :: CTime       -- ^ Only defined if status is 'sOK', 'sNXDOMAIN', or 'sNODATA'.   , rrs     :: [Response]-      -- ^ The list will be empty if an error occured.+      -- ^ The list will be empty if an error occurred.   }   deriving (Show) @@ -612,7 +611,7 @@  -- * Helper Functions --- |Internel helper function to handle result passing from+-- |Internal helper function to handle result passing from -- ADNS via @Ptr (Ptr a)@, and to generate human-readable IO -- exceptions in case of an error. 
ADNS/Resolver.hs view
@@ -28,8 +28,7 @@ import Data.List          ( sortBy ) import Data.Map           ( Map ) import qualified Data.Map as Map-import Network-import Network.Socket     ( HostAddress, hostAddressToTuple )+import Network.Socket     ( HostName, HostAddress, PortNumber, hostAddressToTuple ) import ADNS.Base  -- |A 'Resolver' is an 'IO' computation which -- given the name@@ -58,7 +57,7 @@  -- |Resolve a hostname's 'SRV' records. -resolveSRV :: Resolver -> HostName -> IO (Either Status [(HostName, PortID)])+resolveSRV :: Resolver -> HostName -> IO (Either Status [(HostName, PortNumber)]) resolveSRV resolver x = do   Answer rc _ _ _ rs  <- resolver x SRV [] >>= takeMVar   if rc /= sOK@@ -67,7 +66,7 @@        let cmp (RRSRV p1 _ _ _) (RRSRV p2 _ _ _) = compare p1 p2            cmp _ _ = error $ showString "unexpected record in SRV lookup: " (show rs)            rs' = sortBy cmp rs-           as = [ (host, PortNumber $ toEnum port) | (RRSRV _ _ port host) <- rs' ]+           as = [ (host, toEnum port) | (RRSRV _ _ port host) <- rs' ]        return (Right as)  -- |Get the 'PTR' records assigned to a host address. Note
example/adns-reverse-lookup.hs view
@@ -13,7 +13,7 @@ import Control.Concurrent       ( forkIO ) import Control.Concurrent.Chan  ( Chan, newChan, writeChan, readChan ) import System.Environment       ( getArgs )-import Network.Socket           ( inet_ntoa )+import Network.Socket           ( getNameInfo, NameInfoFlag(..), SockAddr(..) ) import ADNS  data CheckResult@@ -22,9 +22,9 @@   | DNSError String  printResult :: CheckResult -> IO ()-printResult (OK h a)       = do addr <- inet_ntoa a+printResult (OK h a)       = do addr <- ntoa a                                 putStrLn $ "OK: "   ++ h ++ " <-> " ++ addr-printResult (NotOK h a h') = do addr <- inet_ntoa a+printResult (NotOK h a h') = do addr <- ntoa a                                 putStrLn $ "FAIL: " ++ h ++ " -> "  ++ addr ++ " -> " ++ show h' printResult (DNSError msg) = putStrLn $ "ERR: " ++ msg @@ -47,5 +47,11 @@       case ptr of         Just names | host `elem` names -> writeChan chan (OK host addr)                    | otherwise         -> writeChan chan (NotOK host addr names)-        _                              -> returnError "PTR"+        _                              -> ntoa addr >>= \str -> returnError ("PTR for "++str)     _           -> returnError "A"++ntoa :: HostAddress -> IO String+ntoa ha = do r <- getNameInfo [NI_NUMERICHOST] True False (SockAddrInet 0 ha)+             case r of+               (Just hname, _) -> return hname+               _               -> fail ("getNameInfo: unexpected failure printing address "++show ha)
example/adns-srv-test.hs view
@@ -2,13 +2,17 @@     Resolve a hostnames' SRV records, then show it.      TODO: Add the ability to perform multiple requests.++    TODO: I am confused. This code does not appear to work. Running+          "adns-srv-test _sip._udp.cryp.to" prints no useful data even though a+          SRV record exists.+ -}  module Main ( main ) where  import Control.Monad            ( when ) import System.Environment       ( getArgs )-import Network                  ( PortID(..) ) import ADNS  main :: IO ()@@ -18,10 +22,5 @@   initResolver [Debug] $ \resolver -> do     a <- querySRV resolver (head names)     case a of-        Just addr -> putStrLn $ "RESULT:\n" ++ concatMap (\b -> fst b ++ ":" ++ showPortID (snd b)) addr+        Just addr -> putStrLn $ "RESULT:\n" ++ concatMap (\b -> fst b ++ ":" ++ show (snd b)) addr         _         -> fail $ "Error in SRV " ++ show (head names)--showPortID :: PortID -> String-showPortID (PortNumber p) = show p-showPortID (UnixSocket str) = str-showPortID (Service str) = str
hsdns.cabal view
@@ -1,5 +1,5 @@ Name:                   hsdns-Version:                1.7.1+Version:                1.8 Copyright:              Peter Simons License:                LGPL-3 License-File:           COPYING.LESSER@@ -33,7 +33,7 @@ Cabal-Version:          >= 1.8 Build-Type:             Simple tested-with:            GHC == 7.0.4, GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3-                      , GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1+                      , GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.3  Source-Repository head   Type:                 git