From 955de53b3b2faa979ca2f23b4137feaeba7902fe Mon Sep 17 00:00:00 2001 From: Peter van Dijk Date: Thu, 4 Apr 2019 16:44:22 +0200 Subject: [PATCH] dnsdist: remove addLuaAction and addLuaResponseAction --- pdns/dnsdist-console.cc | 2 -- pdns/dnsdist-lua-actions.cc | 8 -------- pdns/dnsdistdist/docs/advanced/luaaction.rst | 4 ++-- .../docs/advanced/timedipsetrule.rst | 2 +- pdns/dnsdistdist/docs/reference/constants.rst | 4 ++-- pdns/dnsdistdist/docs/rules-actions.rst | 6 ++++++ pdns/dnsdistdist/docs/upgrade_guide.rst | 5 +++++ regression-tests.dnsdist/test_EDNSOptions.py | 4 ++-- .../test_EDNSSelfGenerated.py | 4 ++-- regression-tests.dnsdist/test_Trailing.py | 20 +++++++++---------- 10 files changed, 30 insertions(+), 29 deletions(-) diff --git a/pdns/dnsdist-console.cc b/pdns/dnsdist-console.cc index 87e6b10ef9..6ed2244b83 100644 --- a/pdns/dnsdist-console.cc +++ b/pdns/dnsdist-console.cc @@ -347,8 +347,6 @@ const std::vector g_consoleKeywords{ { "addDNSCryptBind", true, "\"127.0.0.1:8443\", \"provider name\", \"/path/to/resolver.cert\", \"/path/to/resolver.key\", {reusePort=false, tcpFastOpenSize=0, interface=\"\", cpus={}}", "listen to incoming DNSCrypt queries on 127.0.0.1 port 8443, with a provider name of `provider name`, using a resolver certificate and associated key stored respectively in the `resolver.cert` and `resolver.key` files. The fifth optional parameter is a table of parameters" }, { "addDynBlocks", true, "addresses, message[, seconds[, action]]", "block the set of addresses with message `msg`, for `seconds` seconds (10 by default), applying `action` (default to the one set with `setDynBlocksAction()`)" }, { "addLocal", true, "addr [, {doTCP=true, reusePort=false, tcpFastOpenSize=0, interface=\"\", cpus={}}]", "add `addr` to the list of addresses we listen on" }, - { "addLuaAction", true, "x, func [, {uuid=\"UUID\"}]", "where 'x' is all the combinations from `addAction`, and func is a function with the parameter `dq`, which returns an action to be taken on this packet. Good for rare packets but where you want to do a lot of processing" }, - { "addLuaResponseAction", true, "x, func [, {uuid=\"UUID\"}]", "where 'x' is all the combinations from `addAction`, and func is a function with the parameter `dr`, which returns an action to be taken on this response packet. Good for rare packets but where you want to do a lot of processing" }, { "addCacheHitResponseAction", true, "DNS rule, DNS response action [, {uuid=\"UUID\"}]", "add a cache hit response rule" }, { "addResponseAction", true, "DNS rule, DNS response action [, {uuid=\"UUID\"}]", "add a response rule" }, { "addSelfAnsweredResponseAction", true, "DNS rule, DNS response action [, {uuid=\"UUID\"}]", "add a self-answered response rule" }, diff --git a/pdns/dnsdist-lua-actions.cc b/pdns/dnsdist-lua-actions.cc index 55c7251e0a..faecc8b719 100644 --- a/pdns/dnsdist-lua-actions.cc +++ b/pdns/dnsdist-lua-actions.cc @@ -1053,14 +1053,6 @@ void setupLuaActions() addAction(&g_rulactions, var, boost::get >(era), params); }); - g_lua.writeFunction("addLuaAction", [](luadnsrule_t var, LuaAction::func_t func, boost::optional params) { - addAction(&g_rulactions, var, std::make_shared(func), params); - }); - - g_lua.writeFunction("addLuaResponseAction", [](luadnsrule_t var, LuaResponseAction::func_t func, boost::optional params) { - addAction(&g_resprulactions, var, std::make_shared(func), params); - }); - g_lua.writeFunction("addResponseAction", [](luadnsrule_t var, boost::variant, std::shared_ptr > era, boost::optional params) { if (era.type() != typeid(std::shared_ptr)) { throw std::runtime_error("addResponseAction() can only be called with response-related actions, not query-related ones. Are you looking for addAction()?"); diff --git a/pdns/dnsdistdist/docs/advanced/luaaction.rst b/pdns/dnsdistdist/docs/advanced/luaaction.rst index 89be18efce..0655f513e3 100644 --- a/pdns/dnsdistdist/docs/advanced/luaaction.rst +++ b/pdns/dnsdistdist/docs/advanced/luaaction.rst @@ -4,7 +4,7 @@ Lua actions in rules While we can pass every packet through the :func:`blockFilter` functions, it is also possible to configure :program:`dnsdist` to only hand off some packets for Lua inspection. If you think Lua is too slow for your query load, or if you are doing heavy processing in Lua, this may make sense. -To select specific packets for Lua attention, use :func:`addLuaAction` or :func:`addLuaResponseAction`. +To select specific packets for Lua attention, use :func:`addAction` with :func:`LuaAction`, or :func:`addResponseAction` with :func:`LuaResponseAction`. A sample configuration could look like this:: @@ -17,4 +17,4 @@ A sample configuration could look like this:: end end - addLuaAction(AllRule(), luarule) + addAction(AllRule(), LuaAction(luarule)) diff --git a/pdns/dnsdistdist/docs/advanced/timedipsetrule.rst b/pdns/dnsdistdist/docs/advanced/timedipsetrule.rst index 5b645405d6..ffdbacf666 100644 --- a/pdns/dnsdistdist/docs/advanced/timedipsetrule.rst +++ b/pdns/dnsdistdist/docs/advanced/timedipsetrule.rst @@ -63,4 +63,4 @@ A working example: end end - addLuaAction(AllRule(), pickPool) + addAction(AllRule(), LuaAction(pickPool)) diff --git a/pdns/dnsdistdist/docs/reference/constants.rst b/pdns/dnsdistdist/docs/reference/constants.rst index 407fd1bf91..248f67148e 100644 --- a/pdns/dnsdistdist/docs/reference/constants.rst +++ b/pdns/dnsdistdist/docs/reference/constants.rst @@ -93,7 +93,7 @@ DNS Section DNSAction --------- -These constants represent an Action that can be returned from the functions invoked by :func:`addLuaAction`. +These constants represent an Action that can be returned from :func:`LuaAction` functions. * ``DNSAction.Allow``: let the query pass, skipping other rules * ``DNSAction.Delay``: delay the response for the specified milliseconds (UDP-only), continue to the next rule @@ -115,7 +115,7 @@ These constants represent an Action that can be returned from the functions invo DNSResponseAction ----------------- -These constants represent an Action that can be returned from the functions invoked by :func:`addLuaResponseAction`. +These constants represent an Action that can be returned from :func:`LuaResponseAction` functions. * ``DNSResponseAction.Allow``: let the response pass, skipping other rules * ``DNSResponseAction.Delay``: delay the response for the specified milliseconds (UDP-only), continue to the next rule diff --git a/pdns/dnsdistdist/docs/rules-actions.rst b/pdns/dnsdistdist/docs/rules-actions.rst index 36d8b3a55b..08dd25511a 100644 --- a/pdns/dnsdistdist/docs/rules-actions.rst +++ b/pdns/dnsdistdist/docs/rules-actions.rst @@ -151,6 +151,9 @@ Rule Generators .. versionchanged:: 1.3.0 The second argument returned by the ``function`` can be omitted. For earlier releases, simply return an empty string. + .. deprecated:: 1.4.0 + Removed in 1.4.0, use :func:`LuaAction` with :func:`addAction` instead. + Invoke a Lua function that accepts a :class:`DNSQuestion`. This function works similar to using :func:`LuaAction`. The ``function`` should return both a :ref:`DNSAction` and its argument `rule`. The `rule` is used as an argument @@ -187,6 +190,9 @@ Rule Generators .. versionchanged:: 1.3.0 The second argument returned by the ``function`` can be omitted. For earlier releases, simply return an empty string. + .. deprecated:: 1.4.0 + Removed in 1.4.0, use :func:`LuaResponseAction` with :func:`addResponseAction` instead. + Invoke a Lua function that accepts a :class:`DNSResponse`. This function works similar to using :func:`LuaResponseAction`. The ``function`` should return both a :ref:`DNSResponseAction` and its argument `rule`. The `rule` is used as an argument diff --git a/pdns/dnsdistdist/docs/upgrade_guide.rst b/pdns/dnsdistdist/docs/upgrade_guide.rst index 920df10922..756c08249b 100644 --- a/pdns/dnsdistdist/docs/upgrade_guide.rst +++ b/pdns/dnsdistdist/docs/upgrade_guide.rst @@ -1,6 +1,11 @@ Upgrade Guide ============= +1.3.x to 1.4.0 +-------------- + +:func:`addLuaAction` and :func:`addLuaResponseAction` have been removed. Instead, use :func:`addAction` with a :func:`LuaAction`, or :func:`addResponseAction` with a :func:`LuaResponseAction`. + 1.3.2 to 1.3.3 -------------- diff --git a/regression-tests.dnsdist/test_EDNSOptions.py b/regression-tests.dnsdist/test_EDNSOptions.py index f5838bf40c..dac2058026 100644 --- a/regression-tests.dnsdist/test_EDNSOptions.py +++ b/regression-tests.dnsdist/test_EDNSOptions.py @@ -66,7 +66,7 @@ class TestEDNSOptions(EDNSOptionsBase): _config_template = """ %s - addLuaAction(AllRule(), testEDNSOptions) + addAction(AllRule(), LuaAction(testEDNSOptions)) newServer{address="127.0.0.1:%s"} """ @@ -253,7 +253,7 @@ class TestEDNSOptionsAddingECS(EDNSOptionsBase): _config_template = """ %s - addLuaAction(AllRule(), testEDNSOptions) + addAction(AllRule(), LuaAction(testEDNSOptions)) newServer{address="127.0.0.1:%s", useClientSubnet=true} """ diff --git a/regression-tests.dnsdist/test_EDNSSelfGenerated.py b/regression-tests.dnsdist/test_EDNSSelfGenerated.py index 7704641319..b4455ffa32 100644 --- a/regression-tests.dnsdist/test_EDNSSelfGenerated.py +++ b/regression-tests.dnsdist/test_EDNSSelfGenerated.py @@ -18,7 +18,7 @@ class TestEDNSSelfGenerated(DNSDistTest): return DNSAction.Nxdomain, "" end - addLuaAction("lua.edns-self.tests.powerdns.com.", luarule) + addAction("lua.edns-self.tests.powerdns.com.", LuaAction(luarule)) addAction("spoof.edns-self.tests.powerdns.com.", SpoofAction({'192.0.2.1', '192.0.2.2'})) @@ -309,7 +309,7 @@ class TestEDNSSelfGeneratedDisabled(DNSDistTest): return DNSAction.Nxdomain, "" end - addLuaAction("lua.edns-self-disabled.tests.powerdns.com.", luarule) + addAction("lua.edns-self-disabled.tests.powerdns.com.", LuaAction(luarule)) addAction("spoof.edns-self-disabled.tests.powerdns.com.", SpoofAction({'192.0.2.1', '192.0.2.2'})) diff --git a/regression-tests.dnsdist/test_Trailing.py b/regression-tests.dnsdist/test_Trailing.py index a9c74b5855..aeb49c9c6d 100644 --- a/regression-tests.dnsdist/test_Trailing.py +++ b/regression-tests.dnsdist/test_Trailing.py @@ -20,7 +20,7 @@ class TestTrailingDataToBackend(DNSDistTest): end return DNSAction.None, "" end - addLuaAction("added.trailing.tests.powerdns.com.", replaceTrailingData) + addAction("added.trailing.tests.powerdns.com.", LuaAction(replaceTrailingData)) function fillBuffer(dq) local available = dq.size - dq.len @@ -31,7 +31,7 @@ class TestTrailingDataToBackend(DNSDistTest): end return DNSAction.None, "" end - addLuaAction("max.trailing.tests.powerdns.com.", fillBuffer) + addAction("max.trailing.tests.powerdns.com.", LuaAction(fillBuffer)) function exceedBuffer(dq) local available = dq.size - dq.len @@ -42,7 +42,7 @@ class TestTrailingDataToBackend(DNSDistTest): end return DNSAction.None, "" end - addLuaAction("limited.trailing.tests.powerdns.com.", exceedBuffer) + addAction("limited.trailing.tests.powerdns.com.", LuaAction(exceedBuffer)) """ @classmethod def startResponders(cls): @@ -183,13 +183,13 @@ class TestTrailingDataToDnsdist(DNSDistTest): end return DNSAction.None, "" end - addLuaAction("removed.trailing.tests.powerdns.com.", removeTrailingData) + addAction("removed.trailing.tests.powerdns.com.", LuaAction(removeTrailingData)) function reportTrailingData(dq) local tail = dq:getTrailingData() return DNSAction.Spoof, "-" .. tail .. ".echoed.trailing.tests.powerdns.com." end - addLuaAction("echoed.trailing.tests.powerdns.com.", reportTrailingData) + addAction("echoed.trailing.tests.powerdns.com.", LuaAction(reportTrailingData)) function replaceTrailingData(dq) local success = dq:setTrailingData("ABC") @@ -198,8 +198,8 @@ class TestTrailingDataToDnsdist(DNSDistTest): end return DNSAction.None, "" end - addLuaAction("replaced.trailing.tests.powerdns.com.", replaceTrailingData) - addLuaAction("replaced.trailing.tests.powerdns.com.", reportTrailingData) + addAction("replaced.trailing.tests.powerdns.com.", LuaAction(replaceTrailingData)) + addAction("replaced.trailing.tests.powerdns.com.", LuaAction(reportTrailingData)) function reportTrailingHex(dq) local tail = dq:getTrailingData() @@ -208,7 +208,7 @@ class TestTrailingDataToDnsdist(DNSDistTest): end) return DNSAction.Spoof, "-0x" .. hex .. ".echoed-hex.trailing.tests.powerdns.com." end - addLuaAction("echoed-hex.trailing.tests.powerdns.com.", reportTrailingHex) + addAction("echoed-hex.trailing.tests.powerdns.com.", LuaAction(reportTrailingHex)) function replaceTrailingData_unsafe(dq) local success = dq:setTrailingData("\\xB0\\x00\\xDE\\xADB\\xF0\\x9F\\x91\\xBB\\xC3\\xBE") @@ -217,8 +217,8 @@ class TestTrailingDataToDnsdist(DNSDistTest): end return DNSAction.None, "" end - addLuaAction("replaced-unsafe.trailing.tests.powerdns.com.", replaceTrailingData_unsafe) - addLuaAction("replaced-unsafe.trailing.tests.powerdns.com.", reportTrailingHex) + addAction("replaced-unsafe.trailing.tests.powerdns.com.", LuaAction(replaceTrailingData_unsafe)) + addAction("replaced-unsafe.trailing.tests.powerdns.com.", LuaAction(reportTrailingHex)) """ def testTrailingDropped(self): -- 2.47.2