Always applies the action.
+.. function:: domain(action, domain)
+
+ Applies the action if query name matches the provided domain name.
+
+.. 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:
+
+ .. code-block:: lua
+
+ policy.domain(policy.DENY, todname('example.com'))
+
.. function:: pattern(action, pattern)
Applies the action if query name matches a `Lua regular expression <http://lua-users.org/wiki/PatternsTutorial>`_.
return function(_, _) return action end
end
--- Requests which QNAME matches given zone list (i.e. suffix match)
+-- Requests whose QNAME is exactly the provided domain
+function policy.domain(action, dname)
+ return function(_, query)
+ if query:name() == dname then
+ return action
+ end
+ return nil
+ end
+end
+
+-- Requests whose QNAME matches given zone list (i.e. suffix match)
function policy.suffix(action, zone_list)
local AC = require('ahocorasick')
local tree = AC.create(zone_list)