]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/backends/gsql/gsqlbackend.hh
introduce DNSBackend::deleteDomain
[thirdparty/pdns.git] / pdns / backends / gsql / gsqlbackend.hh
CommitLineData
b4ce8b4e
BH
1#include <string>
2#include <map>
3#include "ssql.hh"
4
10f4eea8 5#include "../../namespaces.hh"
b4ce8b4e 6
1325e8a2
PD
7/*
8GSQLBackend is a generic backend used by other sql backends
9*/
b4ce8b4e
BH
10class GSQLBackend : public DNSBackend
11{
12public:
13 GSQLBackend(const string &mode, const string &suffix); //!< Makes our connection to the database. Throws an exception if it fails.
14 virtual ~GSQLBackend()
15 {
16 if(d_db)
17 delete d_db;
18 }
19
20 void setDB(SSql *db)
21 {
22 d_db=db;
23 }
24
bdaab6b8 25 virtual string sqlEscape(const string &name);
b4ce8b4e 26 void lookup(const QType &, const string &qdomain, DNSPacket *p=0, int zoneId=-1);
88def049 27 bool list(const string &target, int domain_id);
b4ce8b4e 28 bool get(DNSResourceRecord &r);
1325e8a2 29 void getAllDomains(vector<DomainInfo> *domains);
b4ce8b4e 30 bool isMaster(const string &domain, const string &ip);
77151d0b 31 void alsoNotifies(const string &domain, set<string> *ips);
b4ce8b4e
BH
32 bool startTransaction(const string &domain, int domain_id=-1);
33 bool commitTransaction();
34 bool abortTransaction();
f9cf6d92
KM
35 bool feedRecord(const DNSResourceRecord &r, string *ordername=0);
36 bool feedEnts(int domain_id, set<string>& nonterm);
37 bool feedEnts3(int domain_id, const string &domain, set<string> &nonterm, unsigned int times, const string &salt, bool narrow);
487cf033 38 bool createDomain(const string &domain);
b4ce8b4e
BH
39 bool createSlaveDomain(const string &ip, const string &domain, const string &account);
40 bool superMasterBackend(const string &ip, const string &domain, const vector<DNSResourceRecord>&nsset, string *account, DNSBackend **db);
092f210a 41 void setFresh(uint32_t domain_id);
b4ce8b4e
BH
42 void getUnfreshSlaveInfos(vector<DomainInfo> *domains);
43 void getUpdatedMasters(vector<DomainInfo> *updatedDomains);
44 bool getDomainInfo(const string &domain, DomainInfo &di);
092f210a 45 void setNotified(uint32_t domain_id, uint32_t serial);
c02f13ef
CH
46 bool setMaster(const string &domain, const string &ip);
47 bool setKind(const string &domain, const DomainInfo::DomainKind kind);
48
c3c89361 49 virtual bool getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string& qname, std::string& unhashed, std::string& before, std::string& after);
81b39e4b 50 bool updateDNSSECOrderAndAuth(uint32_t domain_id, const std::string& zonename, const std::string& qname, bool auth);
5c3bf2db 51 virtual bool updateDNSSECOrderAndAuthAbsolute(uint32_t domain_id, const std::string& qname, const std::string& ordername, bool auth);
c2df797e 52 virtual bool nullifyDNSSECOrderNameAndUpdateAuth(uint32_t domain_id, const std::string& qname, bool auth);
27045410 53 virtual bool nullifyDNSSECOrderNameAndAuth(uint32_t domain_id, const std::string& qname, const std::string& type);
c2df797e 54 virtual bool setDNSSECAuthOnDsRecord(uint32_t domain_id, const std::string& qname);
b5baefaf 55 virtual bool updateEmptyNonTerminals(uint32_t domain_id, const std::string& zonename, set<string>& insert ,set<string>& erase, bool remove);
ece45ffb 56 virtual bool doesDNSSEC();
5c3bf2db 57
d07fc616
PD
58 virtual bool calculateSOASerial(const string& domain, const SOAData& sd, time_t& serial);
59
8bbb6f36 60 bool replaceRRSet(uint32_t domain_id, const string& qname, const QType& qt, const vector<DNSResourceRecord>& rrset);
6a323f63 61 bool listSubZone(const string &zone, int domain_id);
c0273500
BH
62 int addDomainKey(const string& name, const KeyData& key);
63 bool getDomainKeys(const string& name, unsigned int kind, std::vector<KeyData>& keys);
64 bool getDomainMetadata(const string& name, const std::string& kind, std::vector<std::string>& meta);
65 bool setDomainMetadata(const string& name, const std::string& kind, const std::vector<std::string>& meta);
4496f66f
BH
66
67 bool removeDomainKey(const string& name, unsigned int id);
68 bool activateDomainKey(const string& name, unsigned int id);
69 bool deactivateDomainKey(const string& name, unsigned int id);
70
78bcb858 71 bool getTSIGKey(const string& name, string* algorithm, string* content);
9a72349d
AT
72 bool setTSIGKey(const string& name, const string& algorithm, const string& content);
73 bool deleteTSIGKey(const string& name);
74 bool getTSIGKeys(std::vector< struct TSIGKey > &keys);
75
b4ce8b4e
BH
76private:
77 string d_qname;
78 QType d_qtype;
79 int d_count;
80 SSql *d_db;
81 SSql::result_t d_result;
82
83 string d_wildCardNoIDQuery;
84 string d_noWildCardNoIDQuery;
85 string d_noWildCardIDQuery;
86 string d_wildCardIDQuery;
87 string d_wildCardANYNoIDQuery;
88 string d_noWildCardANYNoIDQuery;
89 string d_noWildCardANYIDQuery;
90 string d_wildCardANYIDQuery;
91 string d_listQuery;
92 string d_logprefix;
36d772ab
BH
93
94 string d_MasterOfDomainsZoneQuery;
95 string d_InfoOfDomainsZoneQuery;
96 string d_InfoOfAllSlaveDomainsQuery;
97 string d_SuperMasterInfoQuery;
487cf033 98 string d_InsertZoneQuery;
36d772ab
BH
99 string d_InsertSlaveZoneQuery;
100 string d_InsertRecordQuery;
f9cf6d92
KM
101 string d_InsertEntQuery;
102 string d_InsertRecordOrderQuery;
103 string d_InsertEntOrderQuery;
c02f13ef
CH
104 string d_UpdateMasterOfZoneQuery;
105 string d_UpdateKindOfZoneQuery;
36d772ab
BH
106 string d_UpdateSerialOfZoneQuery;
107 string d_UpdateLastCheckofZoneQuery;
108 string d_InfoOfAllMasterDomainsQuery;
66dba9d7 109 string d_DeleteZoneQuery;
87e85d73 110 string d_DeleteRRSet;
d07fc616 111 string d_ZoneLastChangeQuery;
136efa2f 112
5697411b 113 string d_firstOrderQuery;
136efa2f
BH
114 string d_beforeOrderQuery;
115 string d_afterOrderQuery;
bc74a078 116 string d_lastOrderQuery;
136efa2f 117 string d_setOrderAuthQuery;
c2df797e 118 string d_nullifyOrderNameAndUpdateAuthQuery;
27045410 119 string d_nullifyOrderNameAndAuthQuery;
e3dc2b56 120 string d_nullifyOrderNameAndAuthENTQuery;
c2df797e 121 string d_setAuthOnDsRecordQuery;
b5baefaf
PD
122 string d_removeEmptyNonTerminalsFromZoneQuery;
123 string d_insertEmptyNonTerminalQuery;
124 string d_deleteEmptyNonTerminalQuery;
136efa2f 125
c0273500
BH
126 string d_AddDomainKeyQuery;
127 string d_ListDomainKeysQuery;
128 string d_GetDomainMetadataQuery;
f7bcc763 129 string d_ClearDomainMetadataQuery;
c0273500 130 string d_SetDomainMetadataQuery;
4496f66f
BH
131
132 string d_RemoveDomainKeyQuery;
133 string d_ActivateDomainKeyQuery;
134 string d_DeactivateDomainKeyQuery;
78bcb858
BH
135
136 string d_getTSIGKeyQuery;
9a72349d
AT
137 string d_setTSIGKeyQuery;
138 string d_deleteTSIGKeyQuery;
139 string d_getTSIGKeysQuery;
1325e8a2
PD
140
141 string d_getAllDomainsQuery;
142
136efa2f
BH
143protected:
144 bool d_dnssecQueries;
b4ce8b4e 145};