});
});
+ g_lua.writeFunction("LuaAction", [](LuaAction::func_t func) {
+ setLuaSideEffect();
+ return std::shared_ptr<DNSAction>(new LuaAction(func));
+ });
+
g_lua.writeFunction("addLuaResponseAction", [](luadnsrule_t var, LuaResponseAction::func_t func) {
setLuaSideEffect();
auto rule=makeRule(var);
});
});
+ g_lua.writeFunction("LuaResponseAction", [](LuaResponseAction::func_t func) {
+ setLuaSideEffect();
+ return std::shared_ptr<DNSResponseAction>(new LuaResponseAction(func));
+ });
+
g_lua.writeFunction("NoRecurseAction", []() {
return std::shared_ptr<DNSAction>(new NoRecurseAction);
});
:param bool append: Append to the log. Default false
:param bool buffered: Use buffered I/O. default true
+.. function:: LuaAction(function)
+
+ Invoke a Lua function that accepts a :class:`DNSQuestion`.
+
+ The ``function`` should return a :ref:`DNSAction`.
+
+ :param string function: the name of a Lua function
+
+.. function:: LuaResponseAction(function)
+
+ Invoke a Lua function that accepts a :class:`DNSResponse`.
+
+ The ``function`` should return a :ref:`DNSResponseAction`.
+
+ :param string function: the name of a Lua function
+
.. function:: MacAddrAction(option)
Add the source MAC address to the query as EDNS0 option ``option``.
end
return DNSAction.None, ""
end
- addLuaAction(AllRule(), nxDOLua)
+ addAction(AllRule(), LuaAction(nxDOLua))
newServer{address="127.0.0.1:%s"}
"""
function refuse(dq)
return DNSAction.Refused, ""
end
- addLuaAction(AllRule(), refuse)
+ addAction(AllRule(), LuaAction(refuse))
newServer{address="127.0.0.1:%s"}
"""
end
return DNSAction.None, ""
end
- addLuaAction(AllRule(), trunc)
+ addAction(AllRule(), LuaAction(trunc))
newServer{address="127.0.0.1:%s"}
"""
local port = dq.localaddr:getPort()
return DNSAction.Spoof, "port-was-"..port..".local-port.advanced.tests.powerdns.com."
end
- addLuaAction("local-port.advanced.tests.powerdns.com.", answerBasedOnLocalPort)
+ addAction("local-port.advanced.tests.powerdns.com.", LuaAction(answerBasedOnLocalPort))
newServer{address="127.0.0.1:%s"}
"""
local port = dq.localaddr:getPort()
return DNSAction.Spoof, "port-was-"..port..".local-port-any.advanced.tests.powerdns.com."
end
- addLuaAction("local-port-any.advanced.tests.powerdns.com.", answerBasedOnLocalPort)
+ addAction("local-port-any.advanced.tests.powerdns.com.", LuaAction(answerBasedOnLocalPort))
newServer{address="127.0.0.1:%s"}
"""
_dnsDistListeningAddr = "0.0.0.0"
dq.skipCache = true
return DNSAction.None, ""
end
- addLuaAction("nocachevialua.cache.tests.powerdns.com.", skipViaLua)
+ addAction("nocachevialua.cache.tests.powerdns.com.", LuaAction(skipViaLua))
newServer{address="127.0.0.1:%s"}
"""
dq.useECS = false
return DNSAction.None, ""
end
- addLuaAction("disabledvialua.ecsrules.tests.powerdns.com.", disableECSViaLua)
+ addAction("disabledvialua.ecsrules.tests.powerdns.com.", LuaAction(disableECSViaLua))
"""
def testWithECSNotDisabled(self):
dq.ecsOverride = true
return DNSAction.None, ""
end
- addLuaAction("overriddenvialua.ecsrules.tests.powerdns.com.", overrideECSViaLua)
+ addAction("overriddenvialua.ecsrules.tests.powerdns.com.", LuaAction(overrideECSViaLua))
"""
def testWithECSOverrideNotSet(self):
dq.ecsPrefixLength = 32
return DNSAction.None, ""
end
- addLuaAction("overriddenprefixlengthvialua.ecsrules.tests.powerdns.com.", overrideECSPrefixLengthViaLua)
+ addAction("overriddenprefixlengthvialua.ecsrules.tests.powerdns.com.", LuaAction(overrideECSPrefixLengthViaLua))
"""
def testWithECSPrefixLengthNotOverridden(self):
newServer{address="127.0.0.1:%s", useClientSubnet=true}
rl = newRemoteLogger('127.0.0.1:%s')
- addLuaAction(AllRule(), alterLuaFirst) -- Add tags to DNSQuery first
+ addAction(AllRule(), LuaAction(alterLuaFirst)) -- Add tags to DNSQuery first
addAction(AllRule(), RemoteLogAction(rl, alterProtobufQuery)) -- Send protobuf message before lookup
return DNSAction.None, ""
end
- addLuaResponseAction(AllRule(), editTTLFunc)
+ addResponseAction(AllRule(), LuaResponseAction(editTTLFunc))
"""
def testTTLEdited(self):
function spoof2rule(dq)
return DNSAction.Spoof, "spoofedcname.spoofing.tests.powerdns.com."
end
- addLuaAction("luaspoof1.spoofing.tests.powerdns.com.", spoof1rule)
- addLuaAction("luaspoof2.spoofing.tests.powerdns.com.", spoof2rule)
+ addAction("luaspoof1.spoofing.tests.powerdns.com.", LuaAction(spoof1rule))
+ addAction("luaspoof2.spoofing.tests.powerdns.com.", LuaAction(spoof2rule))
newServer{address="127.0.0.1:%s"}
"""
return DNSAction.Spoof, "192.0.2.0"
end
end
- addLuaAction("luaspoofwithstats.spoofing.tests.powerdns.com.", spoof1rule)
+ addAction("luaspoofwithstats.spoofing.tests.powerdns.com.", LuaAction(spoof1rule))
newServer{address="127.0.0.1:%s"}
"""