]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/backends/gsql/gsqlbackend.hh
fix up NSEC3 rendering/generation/parsing
[thirdparty/pdns.git] / pdns / backends / gsql / gsqlbackend.hh
CommitLineData
b4ce8b4e
BH
1#include <string>
2#include <map>
3#include "ssql.hh"
4
5using namespace std;
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);
29
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);
ab5edd12 37 bool checkACL(const string &acl_type, const string &key, const string &value);
b4ce8b4e
BH
38 void getUnfreshSlaveInfos(vector<DomainInfo> *domains);
39 void getUpdatedMasters(vector<DomainInfo> *updatedDomains);
40 bool getDomainInfo(const string &domain, DomainInfo &di);
092f210a 41 void setNotified(uint32_t domain_id, uint32_t serial);
75943e62 42 virtual bool getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string& qname, std::string& before, std::string& after);
81b39e4b
BH
43 bool updateDNSSECOrderAndAuth(uint32_t domain_id, const std::string& zonename, const std::string& qname, bool auth);
44
b4ce8b4e
BH
45private:
46 string d_qname;
47 QType d_qtype;
48 int d_count;
49 SSql *d_db;
50 SSql::result_t d_result;
51
52 string d_wildCardNoIDQuery;
53 string d_noWildCardNoIDQuery;
54 string d_noWildCardIDQuery;
55 string d_wildCardIDQuery;
56 string d_wildCardANYNoIDQuery;
57 string d_noWildCardANYNoIDQuery;
58 string d_noWildCardANYIDQuery;
59 string d_wildCardANYIDQuery;
60 string d_listQuery;
61 string d_logprefix;
36d772ab
BH
62
63 string d_MasterOfDomainsZoneQuery;
64 string d_InfoOfDomainsZoneQuery;
65 string d_InfoOfAllSlaveDomainsQuery;
66 string d_SuperMasterInfoQuery;
67 string d_InsertSlaveZoneQuery;
68 string d_InsertRecordQuery;
69 string d_UpdateSerialOfZoneQuery;
70 string d_UpdateLastCheckofZoneQuery;
71 string d_InfoOfAllMasterDomainsQuery;
66dba9d7 72 string d_DeleteZoneQuery;
ab5edd12 73 string d_CheckACLQuery;
136efa2f
BH
74
75 string d_beforeOrderQuery;
76 string d_afterOrderQuery;
77 string d_setOrderAuthQuery;
78
79protected:
80 bool d_dnssecQueries;
b4ce8b4e 81};