Include DNS server config in status
This commit is contained in:
1 parent
6f57774d15
commit
c36543a247
4 files changed
+18
-9
No files matched your search
+4
-5
@@ -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)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user