Bug fix: truncate /etc/resolv.conf, fixing DNS
- Refers to #326 - Refers to #329
This commit is contained in:
@@ -26,7 +26,7 @@ func (c *configurator) UseDNSInternally(ip net.IP) {
|
|||||||
func (c *configurator) UseDNSSystemWide(ip net.IP, keepNameserver bool) error {
|
func (c *configurator) UseDNSSystemWide(ip net.IP, keepNameserver bool) error {
|
||||||
c.logger.Info("using DNS address %s system wide", ip.String())
|
c.logger.Info("using DNS address %s system wide", ip.String())
|
||||||
const filepath = string(constants.ResolvConf)
|
const filepath = string(constants.ResolvConf)
|
||||||
file, err := c.openFile(filepath, os.O_RDWR, 0644)
|
file, err := c.openFile(filepath, os.O_RDWR|os.O_TRUNC, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@ func (c *configurator) UseDNSSystemWide(ip net.IP, keepNameserver bool) error {
|
|||||||
if !found {
|
if !found {
|
||||||
lines = append(lines, "nameserver "+ip.String())
|
lines = append(lines, "nameserver "+ip.String())
|
||||||
}
|
}
|
||||||
s = strings.Join(lines, "\n")
|
s = strings.Join(lines, "\n") + "\n"
|
||||||
_, err = file.WriteString(s)
|
_, err = file.WriteString(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = file.Close()
|
_ = file.Close()
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ func Test_UseDNSSystemWide(t *testing.T) {
|
|||||||
err error
|
err error
|
||||||
}{
|
}{
|
||||||
"no data": {
|
"no data": {
|
||||||
writtenData: "nameserver 127.0.0.1",
|
writtenData: "nameserver 127.0.0.1\n",
|
||||||
},
|
},
|
||||||
"open error": {
|
"open error": {
|
||||||
openErr: fmt.Errorf("error"),
|
openErr: fmt.Errorf("error"),
|
||||||
@@ -38,17 +38,17 @@ func Test_UseDNSSystemWide(t *testing.T) {
|
|||||||
err: fmt.Errorf("error"),
|
err: fmt.Errorf("error"),
|
||||||
},
|
},
|
||||||
"write error": {
|
"write error": {
|
||||||
writtenData: "nameserver 127.0.0.1",
|
writtenData: "nameserver 127.0.0.1\n",
|
||||||
writeErr: fmt.Errorf("error"),
|
writeErr: fmt.Errorf("error"),
|
||||||
err: fmt.Errorf("error"),
|
err: fmt.Errorf("error"),
|
||||||
},
|
},
|
||||||
"lines without nameserver": {
|
"lines without nameserver": {
|
||||||
data: []byte("abc\ndef\n"),
|
data: []byte("abc\ndef\n"),
|
||||||
writtenData: "abc\ndef\nnameserver 127.0.0.1",
|
writtenData: "abc\ndef\nnameserver 127.0.0.1\n",
|
||||||
},
|
},
|
||||||
"lines with nameserver": {
|
"lines with nameserver": {
|
||||||
data: []byte("abc\nnameserver abc def\ndef\n"),
|
data: []byte("abc\nnameserver abc def\ndef\n"),
|
||||||
writtenData: "abc\nnameserver 127.0.0.1\ndef",
|
writtenData: "abc\nnameserver 127.0.0.1\ndef\n",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for name, tc := range tests {
|
for name, tc := range tests {
|
||||||
@@ -83,7 +83,7 @@ func Test_UseDNSSystemWide(t *testing.T) {
|
|||||||
|
|
||||||
openFile := func(name string, flag int, perm os.FileMode) (os.File, error) {
|
openFile := func(name string, flag int, perm os.FileMode) (os.File, error) {
|
||||||
assert.Equal(t, string(constants.ResolvConf), name)
|
assert.Equal(t, string(constants.ResolvConf), name)
|
||||||
assert.Equal(t, os.O_RDWR, flag)
|
assert.Equal(t, os.O_RDWR|os.O_TRUNC, flag)
|
||||||
assert.Equal(t, os.FileMode(0644), perm)
|
assert.Equal(t, os.FileMode(0644), perm)
|
||||||
return file, tc.openErr
|
return file, tc.openErr
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user