]> granicus.if.org Git - pdns/commitdiff
pdnsutil create-zone: Create SOA, too
authorChristian Hofstaedtler <christian.hofstaedtler@deduktiva.com>
Mon, 4 Jan 2016 19:51:35 +0000 (20:51 +0100)
committerChristian Hofstaedtler <christian.hofstaedtler@deduktiva.com>
Mon, 4 Jan 2016 19:51:35 +0000 (20:51 +0100)
With a SOA, the zone is considered created by all parts.

pdns/pdnsutil.cc

index 1198b673c648ce4c827a3ce28c392b6dd85a2e9a..e6e6229f2307c353721bdf6ebb68fef097e058c1 100644 (file)
@@ -933,6 +933,24 @@ int createZone(const DNSName &zone) {
     cerr<<"Domain '"<<zone.toString()<<"' was not created!"<<endl;
     return 1;
   }
+
+  DNSResourceRecord rr;
+  rr.qname = zone;
+  rr.auth = 1;
+  rr.ttl = ::arg().asNum("default-ttl");
+  rr.qtype = "SOA";
+  string soa = (boost::format("%s %s 1")
+    % ::arg()["default-soa-name"]
+    % (::arg().isEmpty("default-soa-mail") ? (DNSName("hostmaster.") + zone).toString() : ::arg()["default-soa-mail"])
+  ).str();
+  SOAData sd;
+  fillSOAData(soa, sd);  // fills out default values for us
+  rr.content = DNSRecordContent::mastermake(rr.qtype.getCode(), 1, serializeSOAData(sd))->getZoneRepresentation(true);
+  rr.domain_id = di.id;
+  di.backend->startTransaction(zone, di.id);
+  di.backend->feedRecord(rr);
+  di.backend->commitTransaction();
+
   return 1;
 }