From: Remi Gacogne Date: Tue, 19 Apr 2016 10:06:36 +0000 (+0200) Subject: dnsdist: Add missing Lua binding for NetmaskGroupRule() X-Git-Tag: dnsdist-1.0.0~5^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F3736%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Add missing Lua binding for NetmaskGroupRule() --- diff --git a/pdns/dnsdist-lua.cc b/pdns/dnsdist-lua.cc index 42aaab4691..b42a5699dc 100644 --- a/pdns/dnsdist-lua.cc +++ b/pdns/dnsdist-lua.cc @@ -718,6 +718,10 @@ vector> setupLua(bool client, const std::string& confi return std::shared_ptr(new SuffixMatchNodeRule(smn)); }); + g_lua.writeFunction("NetmaskGroupRule", [](const NetmaskGroup& nmg) { + return std::shared_ptr(new NetmaskGroupRule(nmg)); + }); + g_lua.writeFunction("benchRule", [](std::shared_ptr rule, boost::optional times_, boost::optional suffix_) { setLuaNoSideEffect(); int times = times_.get_value_or(100000); diff --git a/regression-tests.dnsdist/test_Advanced.py b/regression-tests.dnsdist/test_Advanced.py index a4b31356d2..bd2e7849fe 100644 --- a/regression-tests.dnsdist/test_Advanced.py +++ b/regression-tests.dnsdist/test_Advanced.py @@ -949,3 +949,30 @@ class TestAdvancedQPSNone(DNSDistTest): (_, receivedResponse) = self.sendTCPQuery(query, response=None, useQueue=False) self.assertEquals(receivedResponse, expectedResponse) + +class TestAdvancedNMGRule(DNSDistTest): + + _config_template = """ + allowed = newNMG() + allowed:addMask("192.0.2.1/32") + addAction(NotRule(NetmaskGroupRule(allowed)), RCodeAction(5)) + newServer{address="127.0.0.1:%s"} + """ + + def testAdvancedNMGRule(self): + """ + Advanced: NMGRule should refuse our queries + + Send queries to "nmgrule.advanced.tests.powerdns.com.", + check that we are getting a REFUSED response. + """ + name = 'nmgrule.advanced.tests.powerdns.com.' + query = dns.message.make_query(name, 'A', 'IN') + expectedResponse = dns.message.make_response(query) + expectedResponse.set_rcode(dns.rcode.REFUSED) + + (_, receivedResponse) = self.sendUDPQuery(query, response=None, useQueue=False) + self.assertEquals(receivedResponse, expectedResponse) + + (_, receivedResponse) = self.sendTCPQuery(query, response=None, useQueue=False) + self.assertEquals(receivedResponse, expectedResponse)