]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
expose zone DELETE in JSON webserver 1036/head
authorChristian Hofstaedtler <christian@hofstaedtler.name>
Fri, 27 Sep 2013 16:04:06 +0000 (18:04 +0200)
committerChristian Hofstaedtler <christian@hofstaedtler.name>
Fri, 27 Sep 2013 16:05:44 +0000 (18:05 +0200)
pdns/ws.cc

index c576fef895c8ea6d16f106d59ae067c8c7fe3218..8b1daadae5c16b5c5d70f1f01d9e12dad31054dd 100644 (file)
@@ -545,6 +545,24 @@ static string json_dispatch(const string& method, const string& post, varmap_t&
       sd.db->commitTransaction();
 
       return getZone(zonename);
+    } else if (method == "DELETE") {
+      // delete
+      UeberBackend B;
+      SOAData sd;
+      DomainInfo di;
+      sd.db = (DNSBackend*)-1;
+      if(!B.getDomainInfo(zonename, di) || !di.backend) {
+        map<string, string> err;
+        err["error"] = "Deleting domain '"+zonename+"' failed: domain does not exist";
+        return returnJSONObject(err);
+      }
+      if (!di.backend->deleteDomain(zonename)) {
+        map<string, string> err;
+        err["error"] = "Deleting domain '"+zonename+"' failed: backend delete failed/unsupported";
+        return returnJSONObject(err);
+      }
+      map<string, string> success; // empty success object
+      return returnJSONObject(success);
     } else {
       map<string, string> err;
       err["error"] = "Method not allowed";