declare(suffix,"update-lastcheck-query","", "update domains set last_check=%d where id=%d");
declare(suffix,"zone-lastchange-query", "", "select max(change_date) from records where domain_id=%d");
declare(suffix,"info-all-master-query","", "select id,name,master,last_check,notified_serial,type from domains where type='MASTER'");
+ declare(suffix,"delete-domain-query","", "delete from domains where name='%s'");
declare(suffix,"delete-zone-query","", "delete from records where domain_id=%d");
declare(suffix,"delete-rrset-query","","delete from records where domain_id=%d and name='%s' and type='%s'");
declare(suffix,"add-domain-key-query","", "insert into cryptokeys (domain_id, flags, active, content) select id, %d, %d, '%s' from domains where name='%s'");
declare(suffix,"list-domain-keys-query","", "select cryptokeys.id, flags, active, content from domains, cryptokeys where cryptokeys.domain_id=domains.id and name='%s'");
declare(suffix,"get-domain-metadata-query","", "select content from domains, domainmetadata where domainmetadata.domain_id=domains.id and name='%s' and domainmetadata.kind='%s'");
declare(suffix,"clear-domain-metadata-query","", "delete from domainmetadata where domain_id=(select id from domains where name='%s') and domainmetadata.kind='%s'");
+ declare(suffix,"clear-domain-all-metadata-query","", "delete from domainmetadata where domain_id=(select id from domains where name='%s')");
declare(suffix,"set-domain-metadata-query","", "insert into domainmetadata (domain_id, kind, content) select id, '%s', '%s' from domains where name='%s'");
declare(suffix,"activate-domain-key-query","", "update cryptokeys set active=1 where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
declare(suffix,"deactivate-domain-key-query","", "update cryptokeys set active=0 where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
declare(suffix,"remove-domain-key-query","", "delete from cryptokeys where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
+ declare(suffix,"clear-domain-all-keys-query","", "delete from cryptokeys where domain_id=(select id from domains where name='%s')");
declare(suffix,"get-tsig-key-query","", "select algorithm, secret from tsigkeys where name='%s'");
declare(suffix,"set-tsig-key-query","", "replace into tsigkeys (name,algorithm,secret) values('%s','%s','%s')");
declare(suffix,"delete-tsig-key-query","", "delete from tsigkeys where name='%s'");
declare(suffix,"update-lastcheck-query","", "update domains set last_check=%d where id=%d");
declare(suffix,"zone-lastchange-query", "", "select max(change_date) from records where domain_id=%d");
declare(suffix,"info-all-master-query","", "select id,name,master,last_check,notified_serial,type from domains where type='MASTER'");
+ declare(suffix,"delete-domain-query","", "delete from domains where name='%s'");
declare(suffix,"delete-zone-query","", "delete from records where domain_id=%d");
declare(suffix,"delete-rrset-query","","delete from records where domain_id=%d and name='%s' and type='%s'");
declare(suffix,"add-domain-key-query","", "insert into cryptokeys (id, domain_id, flags, active, content) select cryptokeys_id_sequence.nextval, id, %d, %d, '%s' from domains where name='%s'");
declare(suffix,"list-domain-keys-query","", "select cryptokeys.id, flags, active, content from domains, cryptokeys where cryptokeys.domain_id=domains.id and name='%s'");
declare(suffix,"get-domain-metadata-query","", "select content from domains, domainmetadata where domainmetadata.domain_id=domains.id and name='%s' and domainmetadata.kind='%s'");
declare(suffix,"clear-domain-metadata-query","", "delete from domainmetadata where domain_id=(select id from domains where name='%s') and domainmetadata.kind='%s'");
+ declare(suffix,"clear-domain-all-metadata-query","", "delete from domainmetadata where domain_id=(select id from domains where name='%s')");
declare(suffix,"set-domain-metadata-query","", "insert into domainmetadata (id, domain_id, kind, content) select domainmetadata_sequence_id.nextval, id, '%s', '%s' from domains where name='%s'");
declare(suffix,"activate-domain-key-query","", "update cryptokeys set active=1 where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
declare(suffix,"deactivate-domain-key-query","", "update cryptokeys set active=0 where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
declare(suffix,"remove-domain-key-query","", "delete from cryptokeys where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
+ declare(suffix,"clear-domain-all-keys-query","", "delete from cryptokeys where domain_id=(select id from domains where name='%s')");
declare(suffix,"get-tsig-key-query","", "select algorithm, secret from tsigkeys where name='%s'");
declare(suffix,"set-tsig-key-query","", "insert into tsigkeys (name,algorithm,secret) VALUES('%s','%s','%s')");
declare(suffix,"delete-tsig-key-query","", "delete from tsigkeys where name='%s'");
declare(suffix,"update-lastcheck-query","", "update domains set last_check=%d where id=%d");
declare(suffix,"zone-lastchange-query", "", "select max(change_date) from records where domain_id=%d");
declare(suffix,"info-all-master-query","", "select id,name,master,last_check,notified_serial,type from domains where type='MASTER'");
+ declare(suffix,"delete-domain-query","", "delete from domains where name=E'%s'");
declare(suffix,"delete-zone-query","", "delete from records where domain_id=%d");
declare(suffix,"delete-rrset-query","","delete from records where domain_id=%d and name=E'%s' and type=E'%s'");
declare(suffix,"list-domain-keys-query","", "select cryptokeys.id, flags, case when active then 1 else 0 end as active, content from domains, cryptokeys where cryptokeys.domain_id=domains.id and name=E'%s'");
declare(suffix,"get-domain-metadata-query","", "select content from domains, domainmetadata where domainmetadata.domain_id=domains.id and name=E'%s' and domainmetadata.kind=E'%s'");
declare(suffix,"clear-domain-metadata-query","", "delete from domainmetadata where domain_id=(select id from domains where name=E'%s') and domainmetadata.kind=E'%s'");
+ declare(suffix,"clear-domain-all-metadata-query","", "delete from domainmetadata where domain_id=(select id from domains where name=E'%s')");
declare(suffix,"set-domain-metadata-query","", "insert into domainmetadata (domain_id, kind, content) select id, '%s', '%s' from domains where name=E'%s'");
declare(suffix,"activate-domain-key-query","", "update cryptokeys set active=true where domain_id=(select id from domains where name=E'%s') and cryptokeys.id=%d");
declare(suffix,"deactivate-domain-key-query","", "update cryptokeys set active=false where domain_id=(select id from domains where name=E'%s') and cryptokeys.id=%d");
declare(suffix,"remove-domain-key-query","", "delete from cryptokeys where domain_id=(select id from domains where name=E'%s') and cryptokeys.id=%d");
+ declare(suffix,"clear-domain-all-keys-query","", "delete from cryptokeys where domain_id=(select id from domains where name=E'%s')");
declare(suffix,"get-tsig-key-query","", "select algorithm, secret from tsigkeys where name=E'%s'");
declare(suffix,"set-tsig-key-query","", "insert into tsigkeys (name,algorithm,secret) values('%s','%s','%s')");
declare(suffix,"delete-tsig-key-query","", "delete from tsigkeys where name='%s'");
declare( suffix, "update-lastcheck-query", "", "update domains set last_check=%d where id=%d");
declare (suffix, "zone-lastchange-query", "", "select max(change_date) from records where domain_id=%d");
declare( suffix, "info-all-master-query", "", "select id,name,master,last_check,notified_serial,type from domains where type='MASTER'");
+ declare(suffix,"delete-domain-query","", "delete from domains where name='%s'");
declare( suffix, "delete-zone-query", "", "delete from records where domain_id=%d");
declare( suffix, "delete-rrset-query", "", "delete from records where domain_id = %d and name='%s' and type='%s'");
declare(suffix, "dnssec", "Assume DNSSEC Schema is in place","no");
declare(suffix,"list-domain-keys-query","", "select cryptokeys.id, flags, active, content from domains, cryptokeys where cryptokeys.domain_id=domains.id and name='%s'");
declare(suffix,"get-domain-metadata-query","", "select content from domains, domainmetadata where domainmetadata.domain_id=domains.id and name='%s' and domainmetadata.kind='%s'");
declare(suffix,"clear-domain-metadata-query","", "delete from domainmetadata where domain_id=(select id from domains where name='%s') and domainmetadata.kind='%s'");
+ declare(suffix,"clear-domain-all-metadata-query","", "delete from domainmetadata where domain_id=(select id from domains where name='%s')");
declare(suffix,"set-domain-metadata-query","", "insert into domainmetadata (domain_id, kind, content) select id, '%s', '%s' from domains where name='%s'");
declare(suffix,"activate-domain-key-query","", "update cryptokeys set active=1 where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
declare(suffix,"deactivate-domain-key-query","", "update cryptokeys set active=0 where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
declare(suffix,"remove-domain-key-query","", "delete from cryptokeys where domain_id=(select id from domains where name='%s') and cryptokeys.id=%d");
+ declare(suffix,"clear-domain-all-keys-query","", "delete from cryptokeys where domain_id=(select id from domains where name='%s')");
declare(suffix,"get-tsig-key-query","", "select algorithm, secret from tsigkeys where name='%s'");
declare(suffix,"set-tsig-key-query","", "replace into tsigkeys (name,algorithm,secret) values('%s','%s','%s')");
declare(suffix,"delete-tsig-key-query","", "delete from tsigkeys where name='%s'");
d_UpdateLastCheckofZoneQuery=getArg("update-lastcheck-query");
d_ZoneLastChangeQuery=getArg("zone-lastchange-query");
d_InfoOfAllMasterDomainsQuery=getArg("info-all-master-query");
+ d_DeleteDomainQuery=getArg("delete-domain-query");
d_DeleteZoneQuery=getArg("delete-zone-query");
d_DeleteRRSet=getArg("delete-rrset-query");
d_getAllDomainsQuery=getArg("get-all-domains-query");
d_AddDomainKeyQuery = getArg("add-domain-key-query");
d_ListDomainKeysQuery = getArg("list-domain-keys-query");
+ d_ClearDomainAllKeysQuery = getArg("clear-domain-all-keys-query");
d_GetDomainMetadataQuery = getArg("get-domain-metadata-query");
d_ClearDomainMetadataQuery = getArg("clear-domain-metadata-query");
+ d_ClearDomainAllMetadataQuery = getArg("clear-domain-all-metadata-query");
d_SetDomainMetadataQuery = getArg("set-domain-metadata-query");
d_ActivateDomainKeyQuery = getArg("activate-domain-key-query");
d_DeactivateDomainKeyQuery = getArg("deactivate-domain-key-query");
d_RemoveDomainKeyQuery = getArg("remove-domain-key-query");
+ d_ClearDomainAllKeysQuery = getArg("clear-domain-all-keys-query");
d_getTSIGKeyQuery = getArg("get-tsig-key-query");
d_setTSIGKeyQuery = getArg("set-tsig-key-query");
return true;
}
-
void GSQLBackend::lookup(const QType &qtype,const string &qname, DNSPacket *pkt_p, int domain_id)
{
string format;
return true;
}
+bool GSQLBackend::deleteDomain(const string &domain)
+{
+ string sqlDomain = sqlEscape(toLower(domain));
+
+ DomainInfo di;
+ if (!getDomainInfo(domain, di)) {
+ return false;
+ }
+
+ string recordsQuery = (boost::format(d_DeleteZoneQuery) % di.id).str();
+ string metadataQuery;
+ string keysQuery;
+ string domainQuery = (boost::format(d_DeleteDomainQuery) % sqlDomain).str();
+
+ if (d_dnssecQueries) {
+ metadataQuery = (boost::format(d_ClearDomainAllMetadataQuery) % sqlDomain).str();
+ keysQuery = (boost::format(d_ClearDomainAllKeysQuery) % sqlDomain).str();
+ }
+
+ try {
+ d_db->doCommand(recordsQuery);
+ if (d_dnssecQueries) {
+ d_db->doCommand(metadataQuery);
+ d_db->doCommand(keysQuery);
+ }
+ d_db->doCommand(domainQuery);
+ }
+ catch(SSqlException &e) {
+ throw PDNSException("Database error trying to delete domain '"+domain+"': "+ e.txtReason());
+ }
+ return true;
+}
+
void GSQLBackend::getAllDomains(vector<DomainInfo> *domains)
{
DLOG(L<<"GSQLBackend retrieving all domains."<<endl);
bool feedEnts3(int domain_id, const string &domain, set<string> &nonterm, unsigned int times, const string &salt, bool narrow);
bool createDomain(const string &domain);
bool createSlaveDomain(const string &ip, const string &domain, const string &account);
+ bool deleteDomain(const string &domain);
bool superMasterBackend(const string &ip, const string &domain, const vector<DNSResourceRecord>&nsset, string *account, DNSBackend **db);
void setFresh(uint32_t domain_id);
void getUnfreshSlaveInfos(vector<DomainInfo> *domains);
bool getDomainKeys(const string& name, unsigned int kind, std::vector<KeyData>& keys);
bool getDomainMetadata(const string& name, const std::string& kind, std::vector<std::string>& meta);
bool setDomainMetadata(const string& name, const std::string& kind, const std::vector<std::string>& meta);
+ bool clearDomainAllMetadata(const string& domain);
bool removeDomainKey(const string& name, unsigned int id);
bool activateDomainKey(const string& name, unsigned int id);
string d_UpdateSerialOfZoneQuery;
string d_UpdateLastCheckofZoneQuery;
string d_InfoOfAllMasterDomainsQuery;
- string d_DeleteZoneQuery;
+ string d_DeleteDomainQuery;
+ string d_DeleteZoneQuery;
string d_DeleteRRSet;
string d_ZoneLastChangeQuery;
string d_ListDomainKeysQuery;
string d_GetDomainMetadataQuery;
string d_ClearDomainMetadataQuery;
+ string d_ClearDomainAllMetadataQuery;
string d_SetDomainMetadataQuery;
string d_RemoveDomainKeyQuery;
string d_ActivateDomainKeyQuery;
string d_DeactivateDomainKeyQuery;
+ string d_ClearDomainAllKeysQuery;
string d_getTSIGKeyQuery;
string d_setTSIGKeyQuery;