aboutsummaryrefslogtreecommitdiff
path: root/standalone/android/haskell-patches/dns_0.3.6-0001-use-getprop-to-get-dns-server.patch
blob: 069bdd20a3b7563372f02a5a0a76cfd78db95d47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
From 8459f93270c7a6e8a2ebd415db2110a66bf1ec41 Mon Sep 17 00:00:00 2001
From: Joey Hess <joey@kitenet.net>
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