re-enable config

This commit is contained in:
Miek Gieben 2011-03-28 17:19:26 +02:00
parent 52f694ea0d
commit 12196e35ac
2 changed files with 24 additions and 24 deletions

View File

@ -7,6 +7,7 @@ include $(GOROOT)/src/Make.inc
TARG=dns
GOFILES=\
config.go\
defaults.go\
dns.go\
dnssec.go\
@ -20,7 +21,6 @@ GOFILES=\
tsig.go\
types.go\
xfr.go\
# config.go
include $(GOROOT)/src/Make.pkg

View File

@ -3,9 +3,8 @@
// license that can be found in the LICENSE file.
// Read system DNS config from /etc/resolv.conf
// Extend this further, but need to thinks about Conn
// TODO: what to do with this code - we don't have a
// structure to put it in
package dns
import (
@ -17,19 +16,20 @@ import (
)
// See resolv.conf(5) on a Linux machine.
// Set the resolver configuration from a /etc/resolv.conf like file.
func (r *Resolver) FromFile(conf string) os.Error {
// Parse a /etc/resolv.conf like file. For only
// only return the nameservers with :53 added as a slice.
func FromFile(conf string) ([]string, os.Error) {
file, err := os.Open(conf, os.O_RDONLY, 0)
defer file.Close()
if err != nil {
return err
return nil, err
}
b := bufio.NewReader(file)
r.Servers = make([]string, 3)[0:0] // small, but the standard limit
r.Search = make([]string, 0)
r.Ndots = 1
r.Timeout = 5
r.Attempts = 2
servers := make([]string, 3)[0:0] // small, but the standard limit
search := make([]string, 0)
ndots := 1; var _ = ndots
timeout := 5; var _ = timeout
attempts := 2; var _ = attempts
for line, ok := b.ReadString('\n'); ok == nil; line, ok = b.ReadString('\n') {
f := strings.Fields(line)
if len(f) < 1 {
@ -37,7 +37,7 @@ func (r *Resolver) FromFile(conf string) os.Error {
}
switch f[0] {
case "nameserver": // add one name server
a := r.Servers
a := servers
n := len(a)
if len(f) > 1 && n < cap(a) {
// One more check: make sure server name is
@ -50,23 +50,23 @@ func (r *Resolver) FromFile(conf string) os.Error {
fallthrough
case 4:
a = a[0 : n+1]
a[n] = name
r.Servers = a
a[n] = name + ":53"
servers = a
}
}
case "domain": // set search path to just this domain
if len(f) > 1 {
r.Search = make([]string, 1)
r.Search[0] = f[1]
search = make([]string, 1)
search[0] = f[1]
} else {
r.Search = make([]string, 0)
search = make([]string, 0)
}
case "search": // set search path to given servers
r.Search = make([]string, len(f)-1)
for i := 0; i < len(r.Search); i++ {
r.Search[i] = f[i+1]
search = make([]string, len(f)-1)
for i := 0; i < len(search); i++ {
search[i] = f[i+1]
}
case "options": // magic options
@ -78,24 +78,24 @@ func (r *Resolver) FromFile(conf string) os.Error {
if n < 1 {
n = 1
}
r.Ndots = n
ndots = n
case len(s) >= 8 && s[:8] == "timeout:":
n, _ := strconv.Atoi(s[8:])
if n < 1 {
n = 1
}
r.Timeout = n
timeout = n
case len(s) >= 8 && s[:9] == "attempts:":
n, _ := strconv.Atoi(s[9:])
if n < 1 {
n = 1
}
r.Attempts = n
attempts = n
case s == "rotate":
/* not imp */
}
}
}
}
return nil
return servers, nil
}