]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/backends/gsql/gsqlbackend.hh
make regression-tests more robust against configuration race condition in bindbackend
[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
BH
6
7/** The GSQLBackend is a DNSBackend that can answer DNS related questions. It looks up data
8 in PostgreSQL */
9class GSQLBackend : public DNSBackend
10{
11public:
12 GSQLBackend(const string &mode, const string &suffix); //!< Makes our connection to the database. Throws an exception if it fails.
13 virtual ~GSQLBackend()
14 {
15 if(d_db)
16 delete d_db;
17 }
18
19 void setDB(SSql *db)
20 {
21 d_db=db;
22 }
23
bdaab6b8 24 virtual string sqlEscape(const string &name);
b4ce8b4e 25 void lookup(const QType &, const string &qdomain, DNSPacket *p=0, int zoneId=-1);
88def049 26 bool list(const string &target, int domain_id);
b4ce8b4e
BH
27 bool get(DNSResourceRecord &r);
28 bool isMaster(const string &domain, const string &ip);
77151d0b 29 void alsoNotifies(const string &domain, set<string> *ips);
b4ce8b4e
BH
30 bool startTransaction(const string &domain, int domain_id=-1);
31 bool commitTransaction();
32 bool abortTransaction();
33 bool feedRecord(const DNSResourceRecord &r);
34 bool createSlaveDomain(const string &ip, const string &domain, const string &account);
35 bool superMasterBackend(const string &ip, const string &domain, const vector<DNSResourceRecord>&nsset, string *account, DNSBackend **db);
092f210a 36 void setFresh(uint32_t domain_id);
b4ce8b4e
BH
37 void getUnfreshSlaveInfos(vector<DomainInfo> *domains);
38 void getUpdatedMasters(vector<DomainInfo> *updatedDomains);
39 bool getDomainInfo(const string &domain, DomainInfo &di);
092f210a 40 void setNotified(uint32_t domain_id, uint32_t serial);
c3c89361 41 virtual bool getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string& qname, std::string& unhashed, std::string& before, std::string& after);
81b39e4b 42 bool updateDNSSECOrderAndAuth(uint32_t domain_id, const std::string& zonename, const std::string& qname, bool auth);
5c3bf2db
BH
43 virtual bool updateDNSSECOrderAndAuthAbsolute(uint32_t domain_id, const std::string& qname, const std::string& ordername, bool auth);
44
d07fc616
PD
45 virtual bool calculateSOASerial(const string& domain, const SOAData& sd, time_t& serial);
46
c0273500
BH
47 int addDomainKey(const string& name, const KeyData& key);
48 bool getDomainKeys(const string& name, unsigned int kind, std::vector<KeyData>& keys);
49 bool getDomainMetadata(const string& name, const std::string& kind, std::vector<std::string>& meta);
50 bool setDomainMetadata(const string& name, const std::string& kind, const std::vector<std::string>& meta);
4496f66f
BH
51
52 bool removeDomainKey(const string& name, unsigned int id);
53 bool activateDomainKey(const string& name, unsigned int id);
54 bool deactivateDomainKey(const string& name, unsigned int id);
55
78bcb858 56 bool getTSIGKey(const string& name, string* algorithm, string* content);
b4ce8b4e
BH
57private:
58 string d_qname;
59 QType d_qtype;
60 int d_count;
61 SSql *d_db;
62 SSql::result_t d_result;
63
64 string d_wildCardNoIDQuery;
65 string d_noWildCardNoIDQuery;
66 string d_noWildCardIDQuery;
67 string d_wildCardIDQuery;
68 string d_wildCardANYNoIDQuery;
69 string d_noWildCardANYNoIDQuery;
70 string d_noWildCardANYIDQuery;
71 string d_wildCardANYIDQuery;
72 string d_listQuery;
73 string d_logprefix;
36d772ab
BH
74
75 string d_MasterOfDomainsZoneQuery;
76 string d_InfoOfDomainsZoneQuery;
77 string d_InfoOfAllSlaveDomainsQuery;
78 string d_SuperMasterInfoQuery;
79 string d_InsertSlaveZoneQuery;
80 string d_InsertRecordQuery;
81 string d_UpdateSerialOfZoneQuery;
82 string d_UpdateLastCheckofZoneQuery;
83 string d_InfoOfAllMasterDomainsQuery;
66dba9d7 84 string d_DeleteZoneQuery;
d07fc616 85 string d_ZoneLastChangeQuery;
136efa2f 86
5697411b 87 string d_firstOrderQuery;
136efa2f
BH
88 string d_beforeOrderQuery;
89 string d_afterOrderQuery;
bc74a078 90 string d_lastOrderQuery;
136efa2f
BH
91 string d_setOrderAuthQuery;
92
c0273500
BH
93 string d_AddDomainKeyQuery;
94 string d_ListDomainKeysQuery;
95 string d_GetDomainMetadataQuery;
f7bcc763 96 string d_ClearDomainMetadataQuery;
c0273500 97 string d_SetDomainMetadataQuery;
4496f66f
BH
98
99 string d_RemoveDomainKeyQuery;
100 string d_ActivateDomainKeyQuery;
101 string d_DeactivateDomainKeyQuery;
78bcb858
BH
102
103 string d_getTSIGKeyQuery;
136efa2f
BH
104protected:
105 bool d_dnssecQueries;
b4ce8b4e 106};