embed: warn on domain name in listener

This commit is contained in:
Anthony Romano 2016-09-12 19:49:22 -07:00
parent fa2e9c2449
commit c7212b438d

View File

@ -17,6 +17,7 @@ package embed
import ( import (
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"net"
"net/http" "net/http"
"net/url" "net/url"
"strings" "strings"
@ -253,6 +254,13 @@ func (cfg *configYAML) configFromFile(path string) error {
} }
func (cfg *Config) Validate() error { func (cfg *Config) Validate() error {
if err := checkBindURLs(cfg.LPUrls); err != nil {
return err
}
if err := checkBindURLs(cfg.LCUrls); err != nil {
return err
}
// Check if conflicting flags are passed. // Check if conflicting flags are passed.
nSet := 0 nSet := 0
for _, v := range []bool{cfg.Durl != "", cfg.InitialCluster != "", cfg.DNSCluster != ""} { for _, v := range []bool{cfg.Durl != "", cfg.InitialCluster != "", cfg.DNSCluster != ""} {
@ -346,3 +354,27 @@ func (cfg Config) IsDefaultHost() (string, error) {
} }
return "", defaultHostStatus return "", defaultHostStatus
} }
// checkBindURLs returns an error if any URL uses a domain name.
// TODO: return error in 3.2.0
func checkBindURLs(urls []url.URL) error {
for _, url := range urls {
if url.Scheme == "unix" || url.Scheme == "unixs" {
continue
}
host, _, err := net.SplitHostPort(url.Host)
if err != nil {
return err
}
if host == "localhost" {
// special case for local address
// TODO: support /etc/hosts ?
continue
}
if net.ParseIP(host) == nil {
err := fmt.Errorf("expected IP in URL for binding (%s)", url.String())
plog.Warning(err)
}
}
return nil
}