# HG changeset patch # User Matthew Wild # Date 1487716868 0 # Node ID 3c16f0a8d66cb08f61513e55b48d768b89150f0a # Parent cca9de97526b32656bce68d4696b1cd8e70dabcc mod_firewall: Do patterns properly, instead of cheating diff -r cca9de97526b -r 3c16f0a8d66c mod_firewall/mod_firewall.lua --- a/mod_firewall/mod_firewall.lua Tue Feb 21 22:40:31 2017 +0000 +++ b/mod_firewall/mod_firewall.lua Tue Feb 21 22:41:08 2017 +0000 @@ -209,17 +209,23 @@ return ("local search_%s = tostring(stanza:find(%q) or \"\")"):format(search_name, search_path); end; }; + pattern = { + local_code = function (pattern_name) + local pattern = assert(active_definitions.PATTERN[pattern_name], "Undefined pattern: "..pattern_name); + return ("local pattern_%s = %q"):format(pattern_name, pattern); + end; + }; tokens = { local_code = function (search_and_pattern) local search_name, pattern_name = search_and_pattern:match("^([^%-]+)_(.+)$"); local code = ([[local tokens_%s_%s = {}; if search_%s then - for s in search_%s:gmatch(patterns.%s) do + for s in search_%s:gmatch(pattern_%s) do tokens_%s_%s[s] = true; end end ]]):format(search_name, pattern_name, search_name, search_name, pattern_name, search_name, pattern_name); - return code, { "search:"..search_name }; + return code, { "search:"..search_name, "pattern:"..pattern_name }; end; }; scan_list = {