declare(suffix,"nullify-ordername-and-auth-query", "DNSSEC nullify ordername and auth query", "update records set ordername=NULL,auth=0 where name='%s' and type='%s' and domain_id='%d'");
declare(suffix,"set-auth-on-ds-record-query", "DNSSEC set auth on a DS record", "update records set auth=1 where domain_id='%d' and name='%s' and type='DS'");
+ declare(suffix,"update-master-query","", "update domains set master='%s' where name='%s'");
+ declare(suffix,"update-kind-query","", "update domains set type='%s' where name='%s'");
declare(suffix,"update-serial-query","", "update domains set notified_serial=%d where id=%d");
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, "insert-zone-query", "", "insert into domains (type,name) values('NATIVE','%s')");
declare( suffix, "insert-slave-query", "", "insert into domains (type,name,master,account) values('SLAVE','%s','%s','%s')");
declare( suffix, "insert-record-query", "", "insert into records (content,ttl,prio,type,domain_id,name) values ('%s',%d,%d,'%s',%d,'%s')");
+ declare( suffix, "update-master-query", "", "update domains set master='%s' where name='%s'");
+ declare( suffix, "update-kind-query", "", "update domains set type='%s' where name='%s'");
declare( suffix, "update-serial-query", "", "update domains set notified_serial=%d where id=%d");
declare( suffix, "update-lastcheck-query", "", "update domains set last_check=%d where id=%d");
declare( suffix, "info-all-master-query", "", "select id,name,master,last_check,notified_serial,type from domains where type='MASTER'");
declare(suffix,"nullify-ordername-and-auth-query", "DNSSEC nullify ordername and auth query", "update records set ordername=NULL,auth=0 where name='%s' and type='%s' and domain_id='%d'");
declare(suffix,"set-auth-on-ds-record-query", "DNSSEC set auth on a DS record", "update records set auth=1 where domain_id='%d' and name='%s' and type='DS'");
+ declare(suffix,"update-master-query","", "update domains set master='%s' where name='%s'");
+ declare(suffix,"update-kind-query","", "update domains set type='%s' where name='%s'");
declare(suffix,"update-serial-query","", "update domains set notified_serial=%d where id=%d");
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,"nullify-ordername-and-update-auth-query", "DNSSEC nullify ordername and update auth query", "update records set ordername=NULL,auth=%d::bool where domain_id='%d' and name='%s'");
declare(suffix,"nullify-ordername-and-auth-query", "DNSSEC nullify ordername and auth query", "update records set ordername=NULL,auth=false where name=E'%s' and type=E'%s' and domain_id='%d'");
+ declare(suffix,"update-master-query","", "update domains set master='%s' where name='%s'");
+ declare(suffix,"update-kind-query","", "update domains set type='%s' where name='%s'");
declare(suffix,"update-serial-query","", "update domains set notified_serial=%d where id=%d");
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, "insert-ent-query-auth", "insert empty non-terminal in zone", "insert into records (type,domain_id,name,auth) values (null,'%d','%s','1')");
declare( suffix, "insert-ent-order-query-auth", "insert empty non-terminal in zone", "insert into records (type,domain_id,name,ordername,auth) values (null,'%d','%s','%s','1')");
+ declare( suffix, "update-master-query", "", "update domains set master='%s' where name='%s'");
+ declare( suffix, "update-kind-query", "", "update domains set type='%s' where name='%s'");
declare( suffix, "update-serial-query", "", "update domains set notified_serial=%d where id=%d");
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");
return 0;
}
+bool GSQLBackend::setMaster(const string &domain, const string &ip)
+{
+ string query = (boost::format(d_UpdateMasterOfZoneQuery) % sqlEscape(ip) % sqlEscape(toLower(domain))).str();
+
+ try {
+ d_db->doCommand(query);
+ }
+ catch (SSqlException &e) {
+ throw PDNSException("GSQLBackend unable to set master of domain \""+domain+"\": "+e.txtReason());
+ }
+ return true;
+}
+
+bool GSQLBackend::setKind(const string &domain, const DomainInfo::DomainKind kind)
+{
+ string kind_str = toUpper(DomainInfo::getKindString(kind));
+ string query = (boost::format(d_UpdateKindOfZoneQuery) % sqlEscape(kind_str) % sqlEscape(toLower(domain))).str();
+
+ try {
+ d_db->doCommand(query);
+ }
+ catch (SSqlException &e) {
+ throw PDNSException("GSQLBackend unable to set kind of domain \""+domain+"\": "+e.txtReason());
+ }
+ return true;
+}
+
bool GSQLBackend::getDomainInfo(const string &domain, DomainInfo &di)
{
/* fill DomainInfo from database info:
d_InsertSlaveZoneQuery=getArg("insert-slave-query");
d_InsertRecordQuery=getArg("insert-record-query"+authswitch);
d_InsertEntQuery=getArg("insert-ent-query"+authswitch);
+ d_UpdateMasterOfZoneQuery=getArg("update-master-query");
+ d_UpdateKindOfZoneQuery=getArg("update-kind-query");
d_UpdateSerialOfZoneQuery=getArg("update-serial-query");
d_UpdateLastCheckofZoneQuery=getArg("update-lastcheck-query");
d_ZoneLastChangeQuery=getArg("zone-lastchange-query");
void getUpdatedMasters(vector<DomainInfo> *updatedDomains);
bool getDomainInfo(const string &domain, DomainInfo &di);
void setNotified(uint32_t domain_id, uint32_t serial);
+ bool setMaster(const string &domain, const string &ip);
+ bool setKind(const string &domain, const DomainInfo::DomainKind kind);
+
virtual bool getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string& qname, std::string& unhashed, std::string& before, std::string& after);
bool updateDNSSECOrderAndAuth(uint32_t domain_id, const std::string& zonename, const std::string& qname, bool auth);
virtual bool updateDNSSECOrderAndAuthAbsolute(uint32_t domain_id, const std::string& qname, const std::string& ordername, bool auth);
string d_InsertEntQuery;
string d_InsertRecordOrderQuery;
string d_InsertEntOrderQuery;
+ string d_UpdateMasterOfZoneQuery;
+ string d_UpdateKindOfZoneQuery;
string d_UpdateSerialOfZoneQuery;
string d_UpdateLastCheckofZoneQuery;
string d_InfoOfAllMasterDomainsQuery;