aboutsummaryrefslogtreecommitdiff
path: root/plugin/pkg/dnsutil
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2018-09-19 08:16:04 +0100
committerGravatar GitHub <noreply@github.com> 2018-09-19 08:16:04 +0100
commitcb932ca23103485d67e447eeddd855007015d30e (patch)
tree4d2c6bc89f4d92fb7a3c75f71a5b31b5fc397b7d /plugin/pkg/dnsutil
parentc349446a23440b336f4ca21900cce4d6a031cdf5 (diff)
downloadcoredns-cb932ca23103485d67e447eeddd855007015d30e.tar.gz
coredns-cb932ca23103485d67e447eeddd855007015d30e.tar.zst
coredns-cb932ca23103485d67e447eeddd855007015d30e.zip
Better naming (#2104)
* Move functions from pkg/transport to pkg/parse Although "parse" is a fairly generic name I believe this is somewhat better named. pkg/transport keeps a few constants that are uses throughout for the rest is is renaming a bunch (and the fallout from there to make things compile again). Signed-off-by: Miek Gieben <miek@miek.nl> * Fix tests Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin/pkg/dnsutil')
-rw-r--r--plugin/pkg/dnsutil/host.go98
-rw-r--r--plugin/pkg/dnsutil/host_test.go85
2 files changed, 0 insertions, 183 deletions
diff --git a/plugin/pkg/dnsutil/host.go b/plugin/pkg/dnsutil/host.go
deleted file mode 100644
index b03b39586..000000000
--- a/plugin/pkg/dnsutil/host.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package dnsutil
-
-import (
- "fmt"
- "net"
- "os"
-
- "github.com/coredns/coredns/plugin/pkg/transport"
-
- "github.com/miekg/dns"
-)
-
-// ParseHostPortOrFile parses the strings in s, each string can either be a
-// address, [scheme://]address:port or a filename. The address part is checked
-// and in case of filename a resolv.conf like file is (assumed) and parsed and
-// the nameservers found are returned.
-func ParseHostPortOrFile(s ...string) ([]string, error) {
- var servers []string
- for _, h := range s {
-
- trans, host := transport.Parse(h)
-
- addr, _, err := net.SplitHostPort(host)
- if err != nil {
- // Parse didn't work, it is not a addr:port combo
- if net.ParseIP(host) == nil {
- // Not an IP address.
- ss, err := tryFile(host)
- if err == nil {
- servers = append(servers, ss...)
- continue
- }
- return servers, fmt.Errorf("not an IP address or file: %q", host)
- }
- var ss string
- switch trans {
- case transport.DNS:
- ss = net.JoinHostPort(host, "53")
- case transport.TLS:
- ss = transport.TLS + "://" + net.JoinHostPort(host, transport.TLSPort)
- case transport.GRPC:
- ss = transport.GRPC + "://" + net.JoinHostPort(host, transport.GRPCPort)
- case transport.HTTPS:
- ss = transport.HTTPS + "://" + net.JoinHostPort(host, transport.HTTPSPort)
- }
- servers = append(servers, ss)
- continue
- }
-
- if net.ParseIP(addr) == nil {
- // Not an IP address.
- ss, err := tryFile(host)
- if err == nil {
- servers = append(servers, ss...)
- continue
- }
- return servers, fmt.Errorf("not an IP address or file: %q", host)
- }
- servers = append(servers, h)
- }
- return servers, nil
-}
-
-// Try to open this is a file first.
-func tryFile(s string) ([]string, error) {
- c, err := dns.ClientConfigFromFile(s)
- if err == os.ErrNotExist {
- return nil, fmt.Errorf("failed to open file %q: %q", s, err)
- } else if err != nil {
- return nil, err
- }
-
- servers := []string{}
- for _, s := range c.Servers {
- servers = append(servers, net.JoinHostPort(s, c.Port))
- }
- return servers, nil
-}
-
-// ParseHostPort will check if the host part is a valid IP address, if the
-// IP address is valid, but no port is found, defaultPort is added.
-func ParseHostPort(s, defaultPort string) (string, error) {
- addr, port, err := net.SplitHostPort(s)
- if port == "" {
- port = defaultPort
- }
- if err != nil {
- if net.ParseIP(s) == nil {
- return "", fmt.Errorf("must specify an IP address: `%s'", s)
- }
- return net.JoinHostPort(s, port), nil
- }
-
- if net.ParseIP(addr) == nil {
- return "", fmt.Errorf("must specify an IP address: `%s'", addr)
- }
- return net.JoinHostPort(addr, port), nil
-}
diff --git a/plugin/pkg/dnsutil/host_test.go b/plugin/pkg/dnsutil/host_test.go
deleted file mode 100644
index cc55f4570..000000000
--- a/plugin/pkg/dnsutil/host_test.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package dnsutil
-
-import (
- "io/ioutil"
- "os"
- "testing"
-)
-
-func TestParseHostPortOrFile(t *testing.T) {
- tests := []struct {
- in string
- expected string
- shouldErr bool
- }{
- {
- "8.8.8.8",
- "8.8.8.8:53",
- false,
- },
- {
- "8.8.8.8:153",
- "8.8.8.8:153",
- false,
- },
- {
- "/etc/resolv.conf:53",
- "",
- true,
- },
- {
- "resolv.conf",
- "127.0.0.1:53",
- false,
- },
- }
-
- err := ioutil.WriteFile("resolv.conf", []byte("nameserver 127.0.0.1\n"), 0600)
- if err != nil {
- t.Fatalf("Failed to write test resolv.conf")
- }
- defer os.Remove("resolv.conf")
-
- for i, tc := range tests {
- got, err := ParseHostPortOrFile(tc.in)
- if err == nil && tc.shouldErr {
- t.Errorf("Test %d, expected error, got nil", i)
- continue
- }
- if err != nil && tc.shouldErr {
- continue
- }
- if got[0] != tc.expected {
- t.Errorf("Test %d, expected %q, got %q", i, tc.expected, got[0])
- }
- }
-}
-
-func TestParseHostPort(t *testing.T) {
- tests := []struct {
- in string
- expected string
- shouldErr bool
- }{
- {"8.8.8.8:53", "8.8.8.8:53", false},
- {"a.a.a.a:153", "", true},
- {"8.8.8.8", "8.8.8.8:53", false},
- {"8.8.8.8:", "8.8.8.8:53", false},
- {"8.8.8.8::53", "", true},
- {"resolv.conf", "", true},
- }
-
- for i, tc := range tests {
- got, err := ParseHostPort(tc.in, "53")
- if err == nil && tc.shouldErr {
- t.Errorf("Test %d, expected error, got nil", i)
- continue
- }
- if err != nil && !tc.shouldErr {
- t.Errorf("Test %d, expected no error, got %q", i, err)
- }
- if got != tc.expected {
- t.Errorf("Test %d, expected %q, got %q", i, tc.expected, got)
- }
- }
-}