Semicolon separate multiple domain list files and update examples
This commit is contained in:
parent
dc60b4c9a2
commit
ea21c87183
|
@ -27,13 +27,12 @@ Similar to [dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html), but support
|
||||||
|
|
||||||
3. Running
|
3. Running
|
||||||
|
|
||||||
$ sudo ./godns -c godns.conf
|
$ sudo ./godns -c ./etc/godns.conf
|
||||||
|
|
||||||
4. Test
|
4. Test
|
||||||
|
|
||||||
$ dig www.github.com @127.0.0.1
|
$ dig www.github.com @127.0.0.1
|
||||||
|
|
||||||
More details about how to install and running godns can reference my [blog (Chinese)](http://blog.kenshinx.me/blog/compile-godns/)
|
|
||||||
|
|
||||||
|
|
||||||
## Use godns
|
## Use godns
|
||||||
|
@ -58,6 +57,12 @@ resolv-file = "/etc/resolv.conf"
|
||||||
If multiple `namerservers` are set in resolv.conf, the upsteam server will try in a top to bottom order
|
If multiple `namerservers` are set in resolv.conf, the upsteam server will try in a top to bottom order
|
||||||
|
|
||||||
|
|
||||||
|
#### server-list-file
|
||||||
|
Domain-specific nameservers configuration, formatting keep compatible with Dnsmasq.
|
||||||
|
>server=/google.com/8.8.8.8
|
||||||
|
|
||||||
|
More cases please refererence [dnsmasq-china-list](https://github.com/felixonmars/dnsmasq-china-list)
|
||||||
|
|
||||||
|
|
||||||
#### cache
|
#### cache
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
server=/adcdownload.apple.com/114.114.114.114
|
||||||
|
server=/appldnld.apple.com/114.114.114.114
|
||||||
|
server=/cdn-cn1.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cdn-cn2.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cdn-cn3.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cdn-cn4.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cdn.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cdn1.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cdn2.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cdn3.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cdn4.apple-mapkit.com/114.114.114.114
|
||||||
|
server=/cds.apple.com/114.114.114.114
|
||||||
|
server=/cl1.apple.com/114.114.114.114
|
||||||
|
server=/cl2.apple.com.edgekey.net.globalredir.akadns.net/114.114.114.114
|
||||||
|
server=/cl2.apple.com.edgekey.net/114.114.114.114
|
||||||
|
server=/cl2.apple.com/114.114.114.114
|
||||||
|
server=/cl3.apple.com/114.114.114.114
|
||||||
|
server=/cl4.apple.com/114.114.114.114
|
||||||
|
server=/cl5.apple.com/114.114.114.114
|
||||||
|
server=/gsp11-cn.ls.apple.com/114.114.114.114
|
||||||
|
server=/gsp12-cn.ls.apple.com/114.114.114.114
|
||||||
|
server=/gsp13-cn.ls.apple.com/114.114.114.114
|
||||||
|
server=/gsp4-cn.ls.apple.com.edgekey.net.globalredir.akadns.net/114.114.114.114
|
||||||
|
server=/gsp4-cn.ls.apple.com.edgekey.net/114.114.114.114
|
||||||
|
server=/gsp4-cn.ls.apple.com/114.114.114.114
|
||||||
|
server=/gsp5-cn.ls.apple.com/114.114.114.114
|
||||||
|
server=/gspe19-cn.ls-apple.com.akadns.net/114.114.114.114
|
||||||
|
server=/gspe19-cn.ls.apple.com/114.114.114.114
|
||||||
|
server=/gspe21.ls.apple.com/114.114.114.114
|
||||||
|
server=/gspe21-ssl.ls.apple.com/114.114.114.114
|
||||||
|
server=/gspe35-ssl.ls.apple.com/114.114.114.114
|
||||||
|
server=/icloud.cdn-apple.com/114.114.114.114
|
||||||
|
server=/images.apple.com/114.114.114.114
|
||||||
|
server=/itunes-apple.com.akadns.net/114.114.114.114
|
||||||
|
server=/itunes.apple.com/114.114.114.114
|
||||||
|
server=/itunesconnect.apple.com/114.114.114.114
|
||||||
|
server=/mesu.apple.com/114.114.114.114
|
||||||
|
server=/mesu-china.apple.com.akadns.net/114.114.114.114
|
||||||
|
server=/phobos-apple.com.akadns.net/114.114.114.114
|
||||||
|
server=/phobos.apple.com/114.114.114.114
|
||||||
|
server=/store.apple.com/114.114.114.114
|
||||||
|
server=/store.storeimages.cdn-apple.com/114.114.114.114
|
||||||
|
server=/support.apple.com/114.114.114.114
|
||||||
|
server=/swcdn.apple.com/114.114.114.114
|
||||||
|
server=/swdist.apple.com/114.114.114.114
|
||||||
|
server=/www.apple.com/114.114.114.114
|
|
@ -1,5 +0,0 @@
|
||||||
server=8.8.8.8#53
|
|
||||||
server=127.0.0.1#5553
|
|
||||||
|
|
||||||
server=/baidu.com/114.114.114.114
|
|
||||||
# refer https://github.com/felixonmars/dnsmasq-china-list
|
|
|
@ -12,8 +12,9 @@ host = "127.0.0.1"
|
||||||
port = 53
|
port = 53
|
||||||
|
|
||||||
[resolv]
|
[resolv]
|
||||||
#Domain-specific nameservers configuration, formatting keep compatible with Dnsmasq
|
# Domain-specific nameservers configuration, formatting keep compatible with Dnsmasq
|
||||||
server-list-file = "./etc/china.conf"
|
# Semicolon separate multiple files.
|
||||||
|
server-list-file = "./etc/apple.china.conf;./etc/google.china.conf"
|
||||||
resolv-file = "/etc/resolv.conf"
|
resolv-file = "/etc/resolv.conf"
|
||||||
timeout = 5 # 5 seconds
|
timeout = 5 # 5 seconds
|
||||||
# The concurrency interval request upstream recursive server
|
# The concurrency interval request upstream recursive server
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
server=/265.com/114.114.114.114
|
||||||
|
server=/2mdn.net/114.114.114.114
|
||||||
|
server=/app-measurement.com/114.114.114.114
|
||||||
|
server=/beacons.gcp.gvt2.com/114.114.114.114
|
||||||
|
server=/beacons.gvt2.com/114.114.114.114
|
||||||
|
server=/beacons3.gvt2.com/114.114.114.114
|
||||||
|
server=/c.admob.com/114.114.114.114
|
||||||
|
server=/c.android.clients.google.com/114.114.114.114
|
||||||
|
server=/cache.pack.google.com/114.114.114.114
|
||||||
|
server=/clientservices.googleapis.com/114.114.114.114
|
||||||
|
server=/connectivitycheck.gstatic.com/114.114.114.114
|
||||||
|
server=/csi.gstatic.com/114.114.114.114
|
||||||
|
server=/dl.google.com/114.114.114.114
|
||||||
|
server=/doubleclick.net/114.114.114.114
|
||||||
|
server=/e.admob.com/114.114.114.114
|
||||||
|
server=/fonts.googleapis.com/114.114.114.114
|
||||||
|
server=/fonts.gstatic.com/114.114.114.114
|
||||||
|
server=/google-analytics.com/114.114.114.114
|
||||||
|
server=/googleadservices.com/114.114.114.114
|
||||||
|
server=/googleanalytics.com/114.114.114.114
|
||||||
|
server=/googlesyndication.com/114.114.114.114
|
||||||
|
server=/googletagmanager.com/114.114.114.114
|
||||||
|
server=/googletagservices.com/114.114.114.114
|
||||||
|
server=/imasdk.googleapis.com/114.114.114.114
|
||||||
|
server=/kh.google.com/114.114.114.114
|
||||||
|
server=/khm.google.com/114.114.114.114
|
||||||
|
server=/khm.googleapis.com/114.114.114.114
|
||||||
|
server=/khm0.google.com/114.114.114.114
|
||||||
|
server=/khm0.googleapis.com/114.114.114.114
|
||||||
|
server=/khm1.google.com/114.114.114.114
|
||||||
|
server=/khm1.googleapis.com/114.114.114.114
|
||||||
|
server=/khm2.google.com/114.114.114.114
|
||||||
|
server=/khm2.googleapis.com/114.114.114.114
|
||||||
|
server=/khm3.google.com/114.114.114.114
|
||||||
|
server=/khm3.googleapis.com/114.114.114.114
|
||||||
|
server=/khmdb.google.com/114.114.114.114
|
||||||
|
server=/khmdb.googleapis.com/114.114.114.114
|
||||||
|
server=/media.admob.com/114.114.114.114
|
||||||
|
server=/mediavisor.doubleclick.com/114.114.114.114
|
||||||
|
server=/redirector.gvt1.com/114.114.114.114
|
||||||
|
server=/toolbarqueries.google.com/114.114.114.114
|
||||||
|
server=/update.googleapis.com/114.114.114.114
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Default upstream servers which have higher priority than the nameserver
|
||||||
|
# that configuration in `/etc/resolv.conf`
|
||||||
|
server=8.8.8.8#53
|
||||||
|
|
||||||
|
server=/google.com/8.8.8.8
|
||||||
|
server=/baidu.com/114.114.114.114
|
||||||
|
# refer https://github.com/felixonmars/dnsmasq-china-list
|
19
resolver.go
19
resolver.go
|
@ -62,11 +62,7 @@ func NewResolver(c ResolvSettings) *Resolver {
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Resolver) ReadServerListFile(file string) {
|
func (r *Resolver) parseServerListFile(buf *os.File) {
|
||||||
buf, err := os.Open(file)
|
|
||||||
if err != nil {
|
|
||||||
panic("Can't open " + file)
|
|
||||||
}
|
|
||||||
scanner := bufio.NewScanner(buf)
|
scanner := bufio.NewScanner(buf)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
line := scanner.Text()
|
line := scanner.Text()
|
||||||
|
@ -88,6 +84,7 @@ func (r *Resolver) ReadServerListFile(file string) {
|
||||||
case 3:
|
case 3:
|
||||||
domain := tokens[1]
|
domain := tokens[1]
|
||||||
ip := tokens[2]
|
ip := tokens[2]
|
||||||
|
|
||||||
if !isDomain(domain) || !isIP(ip) {
|
if !isDomain(domain) || !isIP(ip) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -116,6 +113,18 @@ func (r *Resolver) ReadServerListFile(file string) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Resolver) ReadServerListFile(path string) {
|
||||||
|
files := strings.Split(path, ";")
|
||||||
|
for _, file := range files {
|
||||||
|
buf, err := os.Open(file)
|
||||||
|
if err != nil {
|
||||||
|
panic("Can't open " + file)
|
||||||
|
}
|
||||||
|
defer buf.Close()
|
||||||
|
r.parseServerListFile(buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Lookup will ask each nameserver in top-to-bottom fashion, starting a new request
|
// Lookup will ask each nameserver in top-to-bottom fashion, starting a new request
|
||||||
// in every second, and return as early as possbile (have an answer).
|
// in every second, and return as early as possbile (have an answer).
|
||||||
// It returns an error if no request has succeeded.
|
// It returns an error if no request has succeeded.
|
||||||
|
|
Loading…
Reference in New Issue