Skip to content

Commit

Permalink
Adding support to provide DNS server port (#378)
Browse files Browse the repository at this point in the history
* Adding support to provide DNS server port

* Resolve issues with Wheezy docker builds

* Updating to match that of Travis and docker hub images

* Fix up broken logic for DNS server w/ port

* Updateing/Adding inetgration tests and unit tests for DNS Querying
  • Loading branch information
davidcollom authored and aelsabbahy committed Dec 18, 2019
1 parent c8cd87b commit 584b0f1
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 11 deletions.
4 changes: 2 additions & 2 deletions integration-tests/goss/goss-shared.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,14 @@ dns:
addrs:
- 192.30.252.153
timeout: 2000
server: 8.8.8.8
server: 8.8.8.8:53
MX:dnstest.io:
resolvable: true
addrs:
- 10 b.dnstest.io.
- 5 a.dnstest.io.
timeout: 2000
server: 8.8.8.8
server: 8.8.8.8:53
NS:dnstest.io:
resolvable: true
addrs:
Expand Down
28 changes: 19 additions & 9 deletions system/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ func LookupHost(host string, server string, c *dns.Client, m *dns.Msg) (addrs []
// A record lookup
func LookupA(host string, server string, c *dns.Client, m *dns.Msg) (addrs []string, err error) {
m.SetQuestion(dns.Fqdn(host), dns.TypeA)
r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand All @@ -188,10 +188,20 @@ func LookupA(host string, server string, c *dns.Client, m *dns.Msg) (addrs []str
return
}

// parseServerString - Check if the DNS Server in server config has a port, if not ensure 53 is prefixed.
func parseServerString(server string) string {
srvhost, srvport, err := net.SplitHostPort(server)
if err != nil {
srvport = "53"
srvhost = server
}
return net.JoinHostPort(srvhost, srvport)
}

// AAAA (IPv6) record lookup
func LookupAAAA(host string, server string, c *dns.Client, m *dns.Msg) (addrs []string, err error) {
m.SetQuestion(dns.Fqdn(host), dns.TypeAAAA)
r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand All @@ -208,7 +218,7 @@ func LookupAAAA(host string, server string, c *dns.Client, m *dns.Msg) (addrs []
// CNAME record lookup
func LookupCNAME(host string, server string, c *dns.Client, m *dns.Msg) (addrs []string, err error) {
m.SetQuestion(dns.Fqdn(host), dns.TypeCNAME)
r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand All @@ -225,7 +235,7 @@ func LookupCNAME(host string, server string, c *dns.Client, m *dns.Msg) (addrs [
// MX record lookup
func LookupMX(host string, server string, c *dns.Client, m *dns.Msg) (addrs []string, err error) {
m.SetQuestion(dns.Fqdn(host), dns.TypeMX)
r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand All @@ -243,7 +253,7 @@ func LookupMX(host string, server string, c *dns.Client, m *dns.Msg) (addrs []st
// NS record lookup
func LookupNS(host string, server string, c *dns.Client, m *dns.Msg) (addrs []string, err error) {
m.SetQuestion(dns.Fqdn(host), dns.TypeNS)
r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand All @@ -260,7 +270,7 @@ func LookupNS(host string, server string, c *dns.Client, m *dns.Msg) (addrs []st
// SRV record lookup
func LookupSRV(host string, server string, c *dns.Client, m *dns.Msg) (addrs []string, err error) {
m.SetQuestion(dns.Fqdn(host), dns.TypeSRV)
r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand All @@ -281,7 +291,7 @@ func LookupSRV(host string, server string, c *dns.Client, m *dns.Msg) (addrs []s
// TXT record lookup
func LookupTXT(host string, server string, c *dns.Client, m *dns.Msg) (addrs []string, err error) {
m.SetQuestion(dns.Fqdn(host), dns.TypeTXT)
r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand All @@ -305,7 +315,7 @@ func LookupPTR(addr string, server string, c *dns.Client, m *dns.Msg) (name []st

m.SetQuestion(reverse, dns.TypePTR)

r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand All @@ -320,7 +330,7 @@ func LookupPTR(addr string, server string, c *dns.Client, m *dns.Msg) (name []st
// CAA record lookup
func LookupCAA(host string, server string, c *dns.Client, m *dns.Msg) (addrs []string, err error) {
m.SetQuestion(dns.Fqdn(host), dns.TypeCAA)
r, _, err := c.Exchange(m, net.JoinHostPort(server, "53"))
r, _, err := c.Exchange(m, parseServerString(server))
if err != nil {
return nil, err
}
Expand Down
25 changes: 25 additions & 0 deletions system/dns_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package system

import (
"testing"
)

func TestparseServerString(t *testing.T) {

tables := []struct {
x string
n string
}{
{"127.0.0.1", "127.0.0.1:53"},
{"127.0.0.1:53", "127.0.0.1:53"},
{"127.0.0.1:8600", "127.0.0.1:8600"},
{"1.1.1.1:53", "1.1.1.1:53"},
}

for _, table := range tables {
output := parseServerString(table.x)
if output != table.n {
t.Errorf("parseServerString (%s) was incorrect, got: %s, want: %s.", table.x, output, table.n)
}
}
}

0 comments on commit 584b0f1

Please sign in to comment.