From 8459f93270c7a6e8a2ebd415db2110a66bf1ec41 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 15 May 2013 20:31:14 -0400 Subject: [PATCH] use getprop to get dns server --- Network/DNS/Resolver.hs | 13 +++++++++++-- dns.cabal | 4 ++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Network/DNS/Resolver.hs b/Network/DNS/Resolver.hs index 70ab9ed..9b27336 100644 --- a/Network/DNS/Resolver.hs +++ b/Network/DNS/Resolver.hs @@ -41,6 +41,8 @@ import Network.Socket.ByteString.Lazy import Prelude hiding (lookup) import System.Random import System.Timeout +import System.Process (readProcess) +import System.Directory #if mingw32_HOST_OS == 1 import Network.Socket (send) @@ -73,7 +75,7 @@ data ResolvConf = ResolvConf { -} defaultResolvConf :: ResolvConf defaultResolvConf = ResolvConf { - resolvInfo = RCFilePath "/etc/resolv.conf" + resolvInfo = RCFilePath "/system/etc/resolv.conf" , resolvTimeout = 3 * 1000 * 1000 , resolvBufsize = 512 } @@ -111,7 +113,14 @@ makeResolvSeed conf = ResolvSeed <$> addr where addr = case resolvInfo conf of RCHostName numhost -> makeAddrInfo numhost - RCFilePath file -> toAddr <$> readFile file >>= makeAddrInfo + RCFilePath file -> do + exists <- doesFileExist file + if exists + then toAddr <$> readFile file >>= makeAddrInfo + else do + s <- readProcess "getprop" ["net.dns1"] "" + makeAddrInfo $ takeWhile (/= '\n') s + toAddr cs = let l:_ = filter ("nameserver" `isPrefixOf`) $ lines cs in extract l extract = reverse . dropWhile isSpace . reverse . dropWhile isSpace . drop 11 diff --git a/dns.cabal b/dns.cabal index 40671f6..2c19734 100644 --- a/dns.cabal +++ b/dns.cabal @@ -34,6 +34,8 @@ library , network >= 2.3 , network-conduit , random + , process + , directory else Build-Depends: base >= 4 && < 5 , attoparsec @@ -49,6 +51,8 @@ library , network-bytestring , network-conduit , random + , process + , directory Source-Repository head Type: git Location: git://github.com/kazu-yamamoto/dns.git -- 1.7.10.4