]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/backends/gsql/gsqlbackend.hh
move around a lot of stuff to isolate dnssec db connectivity
[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);
c3c89361 42 virtual bool getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string& qname, std::string& unhashed, std::string& before, std::string& after);
81b39e4b 43 bool updateDNSSECOrderAndAuth(uint32_t domain_id, const std::string& zonename, const std::string& qname, bool auth);
5c3bf2db
BH
44 virtual bool updateDNSSECOrderAndAuthAbsolute(uint32_t domain_id, const std::string& qname, const std::string& ordername, bool auth);
45
c0273500
BH
46 int addDomainKey(const string& name, const KeyData& key);
47 bool getDomainKeys(const string& name, unsigned int kind, std::vector<KeyData>& keys);
48 bool getDomainMetadata(const string& name, const std::string& kind, std::vector<std::string>& meta);
49 bool setDomainMetadata(const string& name, const std::string& kind, const std::vector<std::string>& meta);
b4ce8b4e
BH
50private:
51 string d_qname;
52 QType d_qtype;
53 int d_count;
54 SSql *d_db;
55 SSql::result_t d_result;
56
57 string d_wildCardNoIDQuery;
58 string d_noWildCardNoIDQuery;
59 string d_noWildCardIDQuery;
60 string d_wildCardIDQuery;
61 string d_wildCardANYNoIDQuery;
62 string d_noWildCardANYNoIDQuery;
63 string d_noWildCardANYIDQuery;
64 string d_wildCardANYIDQuery;
65 string d_listQuery;
66 string d_logprefix;
36d772ab
BH
67
68 string d_MasterOfDomainsZoneQuery;
69 string d_InfoOfDomainsZoneQuery;
70 string d_InfoOfAllSlaveDomainsQuery;
71 string d_SuperMasterInfoQuery;
72 string d_InsertSlaveZoneQuery;
73 string d_InsertRecordQuery;
74 string d_UpdateSerialOfZoneQuery;
75 string d_UpdateLastCheckofZoneQuery;
76 string d_InfoOfAllMasterDomainsQuery;
66dba9d7 77 string d_DeleteZoneQuery;
ab5edd12 78 string d_CheckACLQuery;
136efa2f
BH
79
80 string d_beforeOrderQuery;
81 string d_afterOrderQuery;
82 string d_setOrderAuthQuery;
83
c0273500
BH
84 string d_AddDomainKeyQuery;
85 string d_ListDomainKeysQuery;
86 string d_GetDomainMetadataQuery;
f7bcc763 87 string d_ClearDomainMetadataQuery;
c0273500 88 string d_SetDomainMetadataQuery;
136efa2f
BH
89protected:
90 bool d_dnssecQueries;
b4ce8b4e 91};