if(method == "GET") {
// get current zone
+ return getZone(zonename);
+ } else if (method == "POST") {
+ // create
+ UeberBackend B;
+ SOAData sd;
+ DomainInfo di;
+ sd.db = (DNSBackend*)-1;
+ if(B.getSOA(zonename, sd) && sd.db && B.getDomainInfo(zonename, di)) {
+ map<string, string> err;
+ err["error"] = "Domain '"+zonename+"' already exists";
+ return returnJSONObject(err);
+ }
+
+ if (!B.createDomain(zonename, &sd.db)) {
+ map<string, string> err;
+ err["error"] = "Creating domain '"+zonename+"' failed";
+ return returnJSONObject(err);
+ }
+
+ if(!B.getDomainInfo(zonename, di) || !di.backend) {
+ map<string, string> err;
+ err["error"] = "Creating domain '"+zonename+"' failed: lookup of domain_id failed";
+ return returnJSONObject(err);
+ }
+
+ di.backend->setKind(zonename, DomainInfo::stringToKind(varmap["kind"]));
+ di.backend->setMaster(zonename, varmap["master"]);
+
+ DNSResourceRecord soa;
+ soa.qname = zonename;
+ soa.content = "1";
+ soa.qtype = "SOA";
+ soa.domain_id = di.id;
+ soa.auth = 0;
+ soa.ttl = ::arg().asNum( "default-ttl" );;
+ soa.priority = 0;
+
+ sd.db->startTransaction(zonename, di.id);
+ sd.db->feedRecord(soa);
+ sd.db->commitTransaction();
+
return getZone(zonename);
} else {
map<string, string> err;