]> granicus.if.org Git - pdns/commitdiff
add create-slave-zone
authorbert hubert <bert.hubert@netherlabs.nl>
Fri, 29 Jan 2016 20:11:32 +0000 (21:11 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Fri, 29 Jan 2016 20:11:32 +0000 (21:11 +0100)
pdns/pdnsutil.cc

index a3c1ec66d4e0e7b0c589823498844f766f45c432..dba97071f5d246810eba0fdb95d5051596e2e9bb 100644 (file)
@@ -1157,6 +1157,25 @@ int createZone(const DNSName &zone, const DNSName& nsname) {
   return 1;
 }
 
+int createSlaveZone(const vector<string>& cmds) {
+  UeberBackend B;
+  DomainInfo di;
+  DNSName zone(cmds[1]);
+  if (B.getDomainInfo(zone, di)) {
+    cerr<<"Domain '"<<zone.toString()<<"' exists already"<<endl;
+    return 1;
+  }
+  cerr<<"Creating empty zone '"<<zone.toString()<<"'"<<endl;
+  B.createDomain(zone);
+  if(!B.getDomainInfo(zone, di)) {
+    cerr<<"Domain '"<<zone.toString()<<"' was not created!"<<endl;
+    return 1;
+  }
+  di.backend->setKind(zone, DomainInfo::Slave);
+  di.backend->setMaster(zone, cmds[2]);
+  return EXIT_SUCCESS;
+}
+
 // add-record ZONE name type [ttl] "content" ["content"]
 int addOrReplaceRecord(bool addOrReplace, const vector<string>& cmds) {
   DNSResourceRecord rr;
@@ -2127,6 +2146,13 @@ seedRandom(::arg()["entropy-source"]);
     }
     exit(createZone(DNSName(cmds[1]), cmds.size() > 2 ? DNSName(cmds[2]): DNSName()));
   }
+  else if(cmds[0] == "create-slave-zone") {
+    if(cmds.size() < 3 ) {
+      cerr<<"Syntax: pdnsutil create-slave-zone ZONE master-ip [master-ip..]"<<endl;
+      return 0;
+    }
+    exit(createSlaveZone(cmds));
+  }
   else if(cmds[0] == "add-record") {
     if(cmds.size() < 5) {
       cerr<<"Syntax: pdnsutil add-record ZONE name type [ttl] \"content\" [\"content\"...]"<<endl;