mirror of https://github.com/docker/docs.git
proper resolv.conf parsing
This commit is contained in:
parent
d627ff9697
commit
62e84785b6
|
@ -772,21 +772,37 @@ func GetResolvConf() ([]byte, error) {
|
|||
// CheckLocalDns looks into the /etc/resolv.conf,
|
||||
// it returns true if there is a local nameserver or if there is no nameserver.
|
||||
func CheckLocalDns(resolvConf []byte) bool {
|
||||
if !bytes.Contains(resolvConf, []byte("nameserver")) {
|
||||
var parsedResolvConf = ParseResolvConf(resolvConf)
|
||||
if !bytes.Contains(parsedResolvConf, []byte("nameserver")) {
|
||||
return true
|
||||
}
|
||||
|
||||
for _, ip := range [][]byte{
|
||||
[]byte("127.0.0.1"),
|
||||
[]byte("127.0.1.1"),
|
||||
} {
|
||||
if bytes.Contains(resolvConf, ip) {
|
||||
if bytes.Contains(parsedResolvConf, ip) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// ParseResolvConf parses the resolv.conf file into lines and strips away comments.
|
||||
func ParseResolvConf(resolvConf []byte) []byte {
|
||||
lines := bytes.Split(resolvConf, []byte("\n"))
|
||||
var noCommentsResolvConf []byte
|
||||
for _, currentLine := range lines {
|
||||
var cleanLine = bytes.TrimLeft(currentLine, " \t")
|
||||
var commentIndex = bytes.Index(cleanLine, []byte("#"))
|
||||
if ( commentIndex == -1 ) {
|
||||
noCommentsResolvConf = append(noCommentsResolvConf, cleanLine...)
|
||||
} else {
|
||||
noCommentsResolvConf = append(noCommentsResolvConf, cleanLine[:commentIndex]...)
|
||||
}
|
||||
}
|
||||
return noCommentsResolvConf
|
||||
}
|
||||
|
||||
func ParseHost(host string, port int, addr string) string {
|
||||
if strings.HasPrefix(addr, "unix://") {
|
||||
return addr
|
||||
|
|
|
@ -323,6 +323,16 @@ func TestCheckLocalDns(t *testing.T) {
|
|||
nameserver 10.0.2.3
|
||||
search dotcloud.net`: false,
|
||||
`# Dynamic
|
||||
#nameserver 127.0.0.1
|
||||
nameserver 10.0.2.3
|
||||
search dotcloud.net`: false,
|
||||
`# Dynamic
|
||||
nameserver 10.0.2.3 #not used 127.0.1.1
|
||||
search dotcloud.net`: false,
|
||||
`# Dynamic
|
||||
#nameserver 10.0.2.3
|
||||
#search dotcloud.net`: true,
|
||||
`# Dynamic
|
||||
nameserver 127.0.0.1
|
||||
search dotcloud.net`: true,
|
||||
`# Dynamic
|
||||
|
|
Loading…
Reference in New Issue