diff options
author | 2018-09-19 08:16:04 +0100 | |
---|---|---|
committer | 2018-09-19 08:16:04 +0100 | |
commit | cb932ca23103485d67e447eeddd855007015d30e (patch) | |
tree | 4d2c6bc89f4d92fb7a3c75f71a5b31b5fc397b7d /plugin/pkg/dnsutil/host.go | |
parent | c349446a23440b336f4ca21900cce4d6a031cdf5 (diff) | |
download | coredns-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/host.go')
-rw-r--r-- | plugin/pkg/dnsutil/host.go | 98 |
1 files changed, 0 insertions, 98 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 -} |