]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/lua-auth4.hh
rec: ensure correct service user on debian
[thirdparty/pdns.git] / pdns / lua-auth4.hh
CommitLineData
0ecc1158
AT
1#pragma once
2#include "iputils.hh"
3#include "dnsname.hh"
0ecc1158 4#include "dnspacket.hh"
70c21c40 5#include "dnsparser.hh"
0ecc1158
AT
6#include <unordered_map>
7#ifdef HAVE_CONFIG_H
8#include "config.h"
9#endif
70c21c40 10#include "lua-base4.hh"
0ecc1158 11
70c21c40 12class AuthLua4 : public BaseLua4
0ecc1158 13{
0ecc1158 14public:
9694e14f 15 AuthLua4();
0ecc1158 16 bool updatePolicy(const DNSName &qname, QType qtype, const DNSName &zonename, DNSPacket *packet);
66470601 17 bool axfrfilter(const ComboAddress&, const DNSName&, const DNSResourceRecord&, std::vector<DNSResourceRecord>&);
4754223f 18 LuaContext* getLua();
37ea8270 19
7c99293d 20 DNSPacket *prequery(DNSPacket *p);
0ecc1158
AT
21
22 ~AuthLua4(); // this is so unique_ptr works with an incomplete type
70c21c40 23protected:
9694e14f
AT
24 virtual void postPrepareContext() override;
25 virtual void postLoad() override;
0ecc1158
AT
26private:
27 struct UpdatePolicyQuery {
28 DNSName qname;
29 DNSName zonename;
30 uint16_t qtype;
31 ComboAddress local, remote;
32 Netmask realRemote;
33 DNSName tsigName;
34 std::string peerPrincipal;
35 };
36
37 typedef std::function<bool(const UpdatePolicyQuery&)> luacall_update_policy_t;
66470601 38 typedef std::function<std::tuple<int, std::unordered_map<int, std::unordered_map<std::string,boost::variant<unsigned int,std::string> > > >(const ComboAddress&, const DNSName&, const DNSResourceRecord&)> luacall_axfr_filter_t;
7c99293d 39 typedef std::function<bool(DNSPacket*)> luacall_prequery_t;
0ecc1158
AT
40
41 luacall_update_policy_t d_update_policy;
66470601 42 luacall_axfr_filter_t d_axfr_filter;
7c99293d 43 luacall_prequery_t d_prequery;
0ecc1158 44};
e24b5737 45std::vector<shared_ptr<DNSRecordContent>> luaSynth(const std::string& code, const DNSName& qname,
e29531e6 46 const DNSName& zone, int zoneid, const DNSPacket& dnsp, uint16_t qtype);