Bug fix: truncate /etc/resolv.conf, fixing DNS

- Refers to #326
- Refers to #329
This commit is contained in:
Quentin McGaw
2020-12-30 20:48:41 +00:00
parent 1e4243dedb
commit f385c4203a
2 changed files with 7 additions and 7 deletions

View File

@@ -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()

View File

@@ -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
} }