diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-06-05 18:36:45 -0600 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2020-06-05 22:06:59 -0600 |
commit | 8311f2c761abc0b75f9657a70cb434d6df6844db (patch) | |
tree | 654ad0cda295262f4de2b75b93dff1c9575d812c | |
parent | conf: fix typo in error message (diff) | |
download | wireguard-windows-8311f2c761abc0b75f9657a70cb434d6df6844db.tar.xz wireguard-windows-8311f2c761abc0b75f9657a70cb434d6df6844db.zip |
conf: add support for search domains inside dns line
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | conf/config.go | 1 | ||||
-rw-r--r-- | conf/parser.go | 6 | ||||
-rw-r--r-- | conf/writer.go | 9 |
3 files changed, 10 insertions, 6 deletions
diff --git a/conf/config.go b/conf/config.go index 9f5dbcc1..e1951d47 100644 --- a/conf/config.go +++ b/conf/config.go @@ -48,6 +48,7 @@ type Interface struct { ListenPort uint16 MTU uint16 DNS []net.IP + DNSSearch []string } type Peer struct { diff --git a/conf/parser.go b/conf/parser.go index 5cbf31a7..da21e796 100644 --- a/conf/parser.go +++ b/conf/parser.go @@ -277,9 +277,10 @@ func FromWgQuick(s string, name string) (*Config, error) { for _, address := range addresses { a := net.ParseIP(address) if a == nil { - return nil, &ParseError{l18n.Sprintf("Invalid IP address"), address} + conf.Interface.DNSSearch = append(conf.Interface.DNSSearch, address) + } else { + conf.Interface.DNS = append(conf.Interface.DNS, a) } - conf.Interface.DNS = append(conf.Interface.DNS, a) } default: return nil, &ParseError{l18n.Sprintf("Invalid key for [Interface] section"), key} @@ -366,6 +367,7 @@ func FromUAPI(s string, existingConfig *Config) (*Config, error) { Interface: Interface{ Addresses: existingConfig.Interface.Addresses, DNS: existingConfig.Interface.DNS, + DNSSearch: existingConfig.Interface.DNSSearch, MTU: existingConfig.Interface.MTU, }, } diff --git a/conf/writer.go b/conf/writer.go index 748c1d61..ab2810c0 100644 --- a/conf/writer.go +++ b/conf/writer.go @@ -28,11 +28,12 @@ func (conf *Config) ToWgQuick() string { output.WriteString(fmt.Sprintf("Address = %s\n", strings.Join(addrStrings[:], ", "))) } - if len(conf.Interface.DNS) > 0 { - addrStrings := make([]string, len(conf.Interface.DNS)) - for i, address := range conf.Interface.DNS { - addrStrings[i] = address.String() + if len(conf.Interface.DNS) + len(conf.Interface.DNSSearch) > 0 { + addrStrings := make([]string, 0, len(conf.Interface.DNS) + len(conf.Interface.DNSSearch)) + for _, address := range conf.Interface.DNS { + addrStrings = append(addrStrings, address.String()) } + addrStrings = append(addrStrings, conf.Interface.DNSSearch...) output.WriteString(fmt.Sprintf("DNS = %s\n", strings.Join(addrStrings[:], ", "))) } |