Skip to content
Snippets Groups Projects
Commit 8e60fd10 authored by Oto Šťáva's avatar Oto Šťáva
Browse files

modules/policy: use a list of domains, instead of a single domain

parent dde426bf
Branches
Tags
1 merge request!1228modules/policy: add 'domain' filter for equality matching
......@@ -28,15 +28,15 @@ A *filter* selects which queries will be affected by specified Actions_. There a
Always applies the action.
.. function:: domain(action, domain)
.. function:: domains(action, domain_table)
Applies the action if query name matches the provided domain name.
Applies the action if query name matches one the domains in the table.
.. note:: For speed this filter requires a domain name in DNS wire format, not textual representation, so each label in the name must be prefixed with its length. Always use convenience function :func:`todname` for automatic conversion from a string! For example:
.. note:: For speed this filter requires domain names in the DNS wire format, not textual representation, so each label in the name must be prefixed with its length. Always use convenience function :func:`policy.todnames` for automatic conversion from a string! For example:
.. code-block:: lua
policy.domain(policy.DENY, todname('example.com'))
policy.add(policy.domain(policy.DENY, policy.todnames({'example.com', 'example.net'})))
.. function:: pattern(action, pattern)
......
......@@ -345,10 +345,13 @@ function policy.all(action)
end
-- Requests whose QNAME is exactly the provided domain
function policy.domain(action, dname)
function policy.domains(action, dname_list)
return function(_, query)
if query:name() == dname then
return action
local qname = query:name()
for i, dname in ipairs(dname_list) do
if ffi.C.knot_dname_is_equal(qname, dname) then
return action
end
end
return nil
end
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment