]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
add clear-zone which clears all records but keeps the zone around
authorbert hubert <bert.hubert@netherlabs.nl>
Mon, 15 Feb 2016 20:06:12 +0000 (21:06 +0100)
committerbert hubert <bert.hubert@powerdns.com>
Tue, 16 Feb 2016 15:20:54 +0000 (16:20 +0100)
pdns/pdnsutil.cc

index 9e59fd4ec35a1fc1e0e399bf69829e9726ab862a..eadfad741e85d56c5d1fc01da2c82064c46f3f4f 100644 (file)
@@ -865,6 +865,21 @@ int read1char(){
     return c;
 }
 
+int clearZone(DNSSECKeeper& dk, const DNSName &zone) {
+  UeberBackend B;
+  DomainInfo di;
+  
+  if (! B.getDomainInfo(zone, di)) {
+    cerr<<"Domain '"<<zone.toString()<<"' not found!"<<endl;
+    return 1;
+  }
+  if(!di.backend->startTransaction(zone, di.id)) {
+    cerr<<"Unable to start transaction for load of zone '"<<zone.toString()<<"'"<<endl;
+    return 1;
+  }
+  di.backend->commitTransaction();
+  return 0;
+}
 
 int editZone(DNSSECKeeper& dk, const DNSName &zone) {
   UeberBackend B;
@@ -1831,6 +1846,7 @@ try
     cerr<<"check-zone ZONE                    Check a zone for correctness"<<endl;
     cerr<<"check-all-zones [exit-on-error]    Check all zones for correctness. Set exit-on-error to exit immediately"<<endl;
     cerr<<"                                   after finding an error in a zone."<<endl;
+    cerr<<"clear-zone ZONE                    Clear all records of a zone, but keep everything else"<<endl;
     cerr<<"create-bind-db FNAME               Create DNSSEC db for BIND backend (bind-dnssec-db)"<<endl;
     cerr<<"create-zone ZONE [nsname]          Create empty zone ZONE"<<endl;
     cerr<<"deactivate-tsig-key ZONE NAME {master|slave}"<<endl;
@@ -2203,7 +2219,16 @@ seedRandom(::arg()["entropy-source"]);
 
     exit(editZone(dk, DNSName(cmds[1])));
   }
+  else if(cmds[0] == "clear-zone") {
+    if(cmds.size() != 2) {
+      cerr<<"Syntax: pdnsutil edit-zone ZONE"<<endl;
+      return 0;
+    }
+    if(cmds[1]==".")
+      cmds[1].clear();
 
+    exit(clearZone(dk, DNSName(cmds[1])));
+  }
   else if(cmds[0] == "list-keys") {
     if(cmds.size() > 2) {
       cerr<<"Syntax: pdnsutil list-keys [ZONE]"<<endl;