]>
Commit | Line | Data |
---|---|---|
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 | 12 | class AuthLua4 : public BaseLua4 |
0ecc1158 | 13 | { |
0ecc1158 | 14 | public: |
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 | 23 | protected: |
9694e14f AT |
24 | virtual void postPrepareContext() override; |
25 | virtual void postLoad() override; | |
0ecc1158 AT |
26 | private: |
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 | 45 | std::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); |