diff --git a/nameserver/http.go b/nameserver/http.go index ce438bee..bbfc02b5 100644 --- a/nameserver/http.go +++ b/nameserver/http.go @@ -24,14 +24,14 @@ func extractFQDN(r *http.Request) (string, string) { return "*", "" } -func ServeHTTP(listener net.Listener, version string, server *DNSServer, domain string, db Zone) { +func ServeHTTP(listener net.Listener, version string, server *DNSServer) { muxRouter := mux.NewRouter() muxRouter.Methods("GET").Path("/status").HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "weave DNS", version) fmt.Fprintln(w, server.Status()) - fmt.Fprintln(w, db.Status()) + fmt.Fprintln(w, server.Zone.Status()) }) muxRouter.Methods("PUT").Path("/name/{id:.+}/{ip:.+}").HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -55,9 +55,10 @@ func ServeHTTP(listener net.Listener, version string, server *DNSServer, domain return } + domain := server.Zone.Domain() if dns.IsSubDomain(domain, name) { Info.Printf("[http] Adding %s -> %s", name, ipStr) - if err := db.AddRecord(idStr, name, ip); err != nil { + if err := server.Zone.AddRecord(idStr, name, ip); err != nil { if _, ok := err.(DuplicateError); !ok { httpErrorAndLog( Error, w, "Internal error", http.StatusInternalServerError, @@ -86,7 +87,7 @@ func ServeHTTP(listener net.Listener, version string, server *DNSServer, domain fqdnStr, fqdn := extractFQDN(r) Info.Printf("[http] Deleting ID %s, IP %s, FQDN %s", idStr, ipStr, fqdnStr) - db.DeleteRecords(idStr, fqdn, ip) + server.Zone.DeleteRecords(idStr, fqdn, ip) }) muxRouter.Methods("DELETE").Path("/name/{id:.+}").HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -96,14 +97,14 @@ func ServeHTTP(listener net.Listener, version string, server *DNSServer, domain fqdnStr, fqdn := extractFQDN(r) Info.Printf("[http] Deleting ID %s, IP *, FQDN %s", idStr, fqdnStr) - db.DeleteRecords(idStr, fqdn, net.IP{}) + server.Zone.DeleteRecords(idStr, fqdn, net.IP{}) }) muxRouter.Methods("DELETE").Path("/name").HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fqdnStr, fqdn := extractFQDN(r) Info.Printf("[http] Deleting ID *, IP *, FQDN %s", fqdnStr) - db.DeleteRecords("", fqdn, net.IP{}) + server.Zone.DeleteRecords("", fqdn, net.IP{}) }) http.Handle("/", muxRouter) diff --git a/nameserver/http_test.go b/nameserver/http_test.go index 44e5bfc0..86bc86db 100644 --- a/nameserver/http_test.go +++ b/nameserver/http_test.go @@ -27,7 +27,7 @@ func TestHttp(t *testing.T) { dockerIP = "9.8.7.6" ) - zone, err := NewZoneDb(ZoneConfig{}) + zone, err := NewZoneDb(ZoneConfig{Domain: testDomain}) wt.AssertNoErr(t, err) err = zone.Start() wt.AssertNoErr(t, err) @@ -38,8 +38,11 @@ func TestHttp(t *testing.T) { t.Fatal("Unable to create http listener: ", err) } + // Create a useless server... it will not even be started + srv, _ := NewDNSServer(DNSServerConfig{Zone: zone}) + port := httpListener.Addr().(*net.TCPAddr).Port - go ServeHTTP(httpListener, "", nil, testDomain, zone) + go ServeHTTP(httpListener, "", srv) // Ask the http server to add our test address into the database addrParts := strings.Split(testAddr1, "/") diff --git a/prog/weavedns/main.go b/prog/weavedns/main.go index 81bc3f7b..75093352 100644 --- a/prog/weavedns/main.go +++ b/prog/weavedns/main.go @@ -145,7 +145,7 @@ func main() { } go SignalHandlerLoop(srv) - go weavedns.ServeHTTP(httpListener, version, srv, domain, zone) + go weavedns.ServeHTTP(httpListener, version, srv) err = srv.Start() if err != nil {