Include DNS server config in status

This commit is contained in:
Adam Harrison committed 2015-03-17 15:41:01 +00:00
1 parent 6f57774d15
commit c36543a247
4 files changed
+18 -9

No files matched your search

+4 -5
View File
@@ -17,14 +17,13 @@ func httpErrorAndLog(level *log.Logger, w http.ResponseWriter, msg string,
level.Printf("[http] "+logmsg, logargs...)
}
func ListenHttp(version string, domain string, db Zone, port int) {
func ListenHttp(version string, server *DNSServer, db Zone, port int) {
router := mux.NewRouter()
router.Methods("GET").Path("/status").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, fmt.Sprintln("weave DNS", version))
io.WriteString(w, fmt.Sprintln("Serving domain", domain))
io.WriteString(w, db.Status())
io.WriteString(w, server.Status())
})
router.Methods("PUT").Path("/name/{identifier:.+}/{ip:.+}").HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
@@ -48,7 +47,7 @@ func ListenHttp(version string, domain string, db Zone, port int) {
return
}
if dns.IsSubDomain(domain, name) {
if dns.IsSubDomain(server.Domain, name) {
Info.Printf("[http] Adding %s -> %s", name, ipStr)
if err := db.AddRecord(ident, name, ip); err != nil {
if _, ok := err.(DuplicateError); !ok {
@@ -59,7 +58,7 @@ func ListenHttp(version string, domain string, db Zone, port int) {
} // oh, I already know this. whatever.
}
} else {
Info.Printf("[http] Ignoring name %s, not in %s", name, domain)
Info.Printf("[http] Ignoring name %s, not in %s", name, server.Domain)
}
})
+12
View File
@@ -6,6 +6,7 @@ import (
. "github.com/zettio/weave/common"
"net"
"sync"
"bytes"
)
const (
@@ -142,6 +143,17 @@ func (s *DNSServer) Start() error {
return nil
}
// Return status string
func (s *DNSServer) Status() string {
var buf bytes.Buffer
buf.WriteString(fmt.Sprintln("Local domain", s.Domain))
buf.WriteString(fmt.Sprintln("Listen address", s.ListenAddr))
buf.WriteString(fmt.Sprintln("mDNS interface", s.iface))
buf.WriteString(fmt.Sprintln("Fallback DNS config", s.upstream))
buf.WriteString(fmt.Sprintf("Zone database:\n%s", s.zone))
return buf.String()
}
// Perform a graceful shutdown
func (s *DNSServer) Stop() error {
if err := s.tcpSrv.Shutdown(); err != nil {
+1 -3
View File
@@ -22,7 +22,6 @@ type Lookup interface {
}
type Zone interface {
Status() string
AddRecord(ident string, name string, ip net.IP) error
DeleteRecord(ident string, ip net.IP) error
DeleteRecordsFor(ident string) error
@@ -64,11 +63,10 @@ func (zone *ZoneDb) indexOf(match func(Record) bool) int {
return -1
}
func (zone *ZoneDb) Status() string {
func (zone *ZoneDb) String() string {
zone.mx.RLock()
defer zone.mx.RUnlock()
var buf bytes.Buffer
buf.WriteString("Records:\n")
for _, r := range zone.recs {
buf.WriteString(fmt.Sprintf("%s %s %v\n", r.Ident, r.IP, r.Name))
}
+1 -1
View File
@@ -83,11 +83,11 @@ func main() {
Debug.Printf("DNS fallback at %s:%s", fallbackHost, fallbackPort)
}
go weavedns.ListenHttp(version, localDomain, zone, httpPort)
srv, err := weavedns.NewDNSServer(srvConfig, zone, iface)
if err != nil {
Error.Fatal("Failed to initialize the WeaveDNS server", err)
}
go weavedns.ListenHttp(version, srv, zone, httpPort)
err = srv.Start()
if err != nil {
Error.Fatal("Failed to start the WeaveDNS server", err)