return true;
});
+ g_lua.registerFunction<std::string(DNSQuestion::*)()>("getServerNameIndication", [](const DNSQuestion& dq) {
+ return dq.sni;
+ });
+
g_lua.registerFunction<void(DNSQuestion::*)(std::string)>("sendTrap", [](const DNSQuestion& dq, boost::optional<std::string> reason) {
#ifdef HAVE_NET_SNMP
if (g_snmpAgent && g_snmpTrapsEnabled) {
}
#endif /* HAVE_NET_SNMP */
});
+
g_lua.registerFunction<void(DNSQuestion::*)(std::string, std::string)>("setTag", [](DNSQuestion& dq, const std::string& strLabel, const std::string& strValue) {
if(dq.qTag == nullptr) {
dq.qTag = std::make_shared<QTag>();
}
return true;
});
+
+ g_lua.registerFunction<void(DNSResponse::*)(std::string, std::string)>("setTag", [](DNSResponse& dr, const std::string& strLabel, const std::string& strValue) {
+ if(dr.qTag == nullptr) {
+ dr.qTag = std::make_shared<QTag>();
+ }
+ dr.qTag->insert({strLabel, strValue});
+ });
+
+ g_lua.registerFunction<void(DNSResponse::*)(vector<pair<string, string>>)>("setTagArray", [](DNSResponse& dr, const vector<pair<string, string>>&tags) {
+ if (!dr.qTag) {
+ dr.qTag = std::make_shared<QTag>();
+ }
+
+ for (const auto& tag : tags) {
+ dr.qTag->insert({tag.first, tag.second});
+ }
+ });
+ g_lua.registerFunction<string(DNSResponse::*)(std::string)>("getTag", [](const DNSResponse& dr, const std::string& strLabel) {
+ if (!dr.qTag) {
+ return string();
+ }
+
+ std::string strValue;
+ const auto it = dr.qTag->find(strLabel);
+ if (it == dr.qTag->cend()) {
+ return string();
+ }
+ return it->second;
+ });
+ g_lua.registerFunction<QTag(DNSResponse::*)(void)>("getTagArray", [](const DNSResponse& dr) {
+ if (!dr.qTag) {
+ QTag empty;
+ return empty;
+ }
+
+ return *dr.qTag;
+ });
+
g_lua.registerFunction<void(DNSResponse::*)(std::string)>("sendTrap", [](const DNSResponse& dr, boost::optional<std::string> reason) {
#ifdef HAVE_NET_SNMP
if (g_snmpAgent && g_snmpTrapsEnabled) {
}
#endif /* HAVE_NET_SNMP */
});
+
+#ifdef HAVE_DNS_OVER_HTTPS
+ g_lua.registerFunction<std::string(DNSQuestion::*)(void)>("getHTTPPath", [](const DNSQuestion& dq) {
+ if (dq.du == nullptr) {
+ return std::string();
+ }
+ return dq.du->getHTTPPath();
+ });
+
+ g_lua.registerFunction<std::string(DNSQuestion::*)(void)>("getHTTPQueryString", [](const DNSQuestion& dq) {
+ if (dq.du == nullptr) {
+ return std::string();
+ }
+ return dq.du->getHTTPQueryString();
+ });
+
+ g_lua.registerFunction<std::string(DNSQuestion::*)(void)>("getHTTPHost", [](const DNSQuestion& dq) {
+ if (dq.du == nullptr) {
+ return std::string();
+ }
+ return dq.du->getHTTPHost();
+ });
+
+ g_lua.registerFunction<std::string(DNSQuestion::*)(void)>("getHTTPScheme", [](const DNSQuestion& dq) {
+ if (dq.du == nullptr) {
+ return std::string();
+ }
+ return dq.du->getHTTPScheme();
+ });
+
+ g_lua.registerFunction<std::unordered_map<std::string, std::string>(DNSQuestion::*)(void)>("getHTTPHeaders", [](const DNSQuestion& dq) {
+ if (dq.du == nullptr) {
+ return std::unordered_map<std::string, std::string>();
+ }
+ return dq.du->getHTTPHeaders();
+ });
+
+ g_lua.registerFunction<void(DNSQuestion::*)(uint16_t statusCode, const std::string& body, const boost::optional<std::string> contentType)>("setHTTPResponse", [](DNSQuestion& dq, uint16_t statusCode, const std::string& body, const boost::optional<std::string> contentType) {
+ if (dq.du == nullptr) {
+ return;
+ }
+ dq.du->setHTTPResponse(statusCode, body, contentType ? *contentType : "");
+ });
+#endif /* HAVE_DNS_OVER_HTTPS */
+
+ g_lua.registerFunction<bool(DNSQuestion::*)(bool nxd, const std::string& zone, uint32_t ttl, const std::string& mname, const std::string& rname, uint32_t serial, uint32_t refresh, uint32_t retry, uint32_t expire, uint32_t minimum)>("setNegativeAndAdditionalSOA", [](DNSQuestion& dq, bool nxd, const std::string& zone, uint32_t ttl, const std::string& mname, const std::string& rname, uint32_t serial, uint32_t refresh, uint32_t retry, uint32_t expire, uint32_t minimum) {
+ return setNegativeAndAdditionalSOA(dq, nxd, DNSName(zone), ttl, DNSName(mname), DNSName(rname), serial, refresh, retry, expire, minimum);
+ });
}