zettio/weave#362 - command line arg for using a specific fallback DNS server

This commit is contained in:
Alvaro Saurin committed 2015-02-23 13:17:54 +01:00
1 parent 419138ec6a
commit c575023681
2 files changed
+19 -9

No files matched your search

+2 -5
View File
@@ -68,8 +68,7 @@ func TestUDPDNSServer(t *testing.T) {
config := &dns.ClientConfig{Servers: []string{"127.0.0.1"}, Port: fallbackPort}
srv := NewDNSServer(config, zone, nil, port)
defer srv.Stop()
err = srv.Start()
wt.AssertNoErr(t, err)
go srv.Start()
time.Sleep(100 * time.Millisecond) // Allow sever goroutine to start
c := new(dns.Client)
@@ -192,8 +191,7 @@ func TestTCPDNSServer(t *testing.T) {
config := &dns.ClientConfig{Servers: []string{"127.0.0.1"}, Port: fallbackPort}
srv := NewDNSServer(config, zone, nil, port)
defer srv.Stop()
err = srv.Start()
wt.AssertNoErr(t, err)
go srv.Start()
time.Sleep(100 * time.Millisecond) // Allow sever goroutine to start
t.Logf("Creating a UDP and a TCP client")
@@ -267,7 +265,6 @@ func RunLocalTCPServer(t *testing.T, laddr string, handler dns.HandlerFunc) (*dn
l.Close()
}()
t.Logf("Fallback TCP server listening at %s", l.Addr().String())
return server, l.Addr().String(), nil
}
+17 -4
View File
@@ -3,13 +3,13 @@ package main
import (
"flag"
"fmt"
"github.com/miekg/dns"
. "github.com/zettio/weave/common"
weavedns "github.com/zettio/weave/nameserver"
weavenet "github.com/zettio/weave/net"
"io"
"net"
"os"
"github.com/miekg/dns"
)
var version = "(unreleased version)"
@@ -19,11 +19,13 @@ func main() {
justVersion bool
ifaceName string
apiPath string
fallback string
dnsPort int
httpPort int
wait int
watch bool
debug bool
err error
)
flag.BoolVar(&justVersion, "version", false, "print version and exit")
@@ -32,6 +34,7 @@ func main() {
flag.IntVar(&wait, "wait", 0, "number of seconds to wait for interface to be created and come up")
flag.IntVar(&dnsPort, "dnsport", 53, "port to listen to DNS requests")
flag.IntVar(&httpPort, "httpport", 6785, "port to listen to HTTP requests")
flag.StringVar(&fallback, "fallback", "", "Fallback server and port (ie, '8.8.8.8:53')")
flag.BoolVar(&watch, "watch", true, "watch the docker socket for container events")
flag.BoolVar(&debug, "debug", false, "output debugging info to stderr")
flag.Parse()
@@ -64,9 +67,19 @@ func main() {
}
}
config, err := dns.ClientConfigFromFile("/etc/resolv.conf")
if err != nil {
Error.Fatal("Failed obtain DNS client configuration", err)
var config *dns.ClientConfig
if len(fallback) > 0 {
fallbackHost, fallbackPort, err := net.SplitHostPort(fallback)
if err != nil {
Error.Fatal("Fould not parse fallback host and port", err)
}
config = &dns.ClientConfig{Servers: []string{fallbackHost}, Port: fallbackPort}
Debug.Printf("DNS fallback at %s:%s", fallbackHost, fallbackPort)
} else {
config, err = dns.ClientConfigFromFile("/etc/resolv.conf")
if err != nil {
Error.Fatal("Failed obtain DNS client configuration", err)
}
}
go weavedns.ListenHttp(weavedns.LOCAL_DOMAIN, zone, httpPort)