ns-controller: do not use cname aliases
diff --git a/core/ns-controller/controllers/store.go b/core/ns-controller/controllers/store.go
index 2e1e955..533e767 100644
--- a/core/ns-controller/controllers/store.go
+++ b/core/ns-controller/controllers/store.go
@@ -29,7 +29,7 @@
 type ZoneConfig struct {
 	Zone        string     `json:"zone,omitempty"`
 	PublicIPs   []string   `json:"publicIPs,omitempty"`
-	PrivateIP   string     `json:"privateIP",omitempty`
+	PrivateIP   string     `json:"privateIP,omitempty"`
 	Nameservers []string   `json:"nameservers,omitempty"`
 	DNSSec      *DNSSecKey `json:"dnsSec,omitempty"`
 }
@@ -210,10 +210,10 @@
 ns{{ add1 $i }}.{{ $zone }}. 10800 IN A {{ $ns }}
 {{ end }}
 {{ range .publicIngressIPs }}
-@ 10800 IN A {{ . }}
+{{ $zone }}. 10800 IN A {{ . }}
+*.{{ $zone }}. 10800 IN A {{ . }}
+*.*.{{ $zone }}. 10800 IN A {{ . }}
 {{ end }}
-*.{{ $zone }}. 10800 IN CNAME {{ $zone }}.
-p.{{ $zone }}. 10800 IN CNAME {{ $zone }}.
 *.p.{{ $zone }}. 10800 IN A {{ .privateIngressIP }}
 `)
 	records, err := fs.Create("zone.db")
@@ -252,7 +252,11 @@
 	if err != nil {
 		return err
 	}
-	z.CreateOrReplaceTxtRecord(fmt.Sprintf("%s.%s.", entry, s.zone.Zone), txt)
+	var fqdn = fmt.Sprintf("%s.%s.", entry, s.zone.Zone)
+	z.CreateOrReplaceTxtRecord(fqdn, txt)
+	for _, ip := range s.zone.PublicIPs {
+		z.CreateARecord(fqdn, ip)
+	}
 	w, err := s.fs.Create("zone.db")
 	if err != nil {
 		return err
@@ -261,9 +265,6 @@
 	if err := z.Write(w); err != nil {
 		return err
 	}
-	// if _, err := r.Write([]byte(fmt.Sprintf("%s 300 IN TXT \"%s\"", entry, txt))); err != nil {
-	// 	return err
-	// }
 	return nil
 }
 
@@ -277,7 +278,9 @@
 	if err != nil {
 		return err
 	}
-	z.DeleteTxtRecord(fmt.Sprintf("%s.%s.", entry, s.zone.Zone), txt)
+	fqdn := fmt.Sprintf("%s.%s.", entry, s.zone.Zone)
+	z.DeleteTxtRecord(fqdn, txt)
+	z.DeleteRecordsFor(fqdn)
 	w, err := s.fs.Create("zone.db")
 	if err != nil {
 		return err