comparison mod_firewall/conditions.lib.lua @ 962:93ffa3ffc66f

mod_firewall/conditions: Support Lua patterns in JID matching, and make <*>@example.com NOT match example.com
author Matthew Wild <mwild1@gmail.com>
date Fri, 05 Apr 2013 19:17:33 +0100
parents bec5b6e2eab8
children c7fca2c9e24f
comparison
equal deleted inserted replaced
961:f0108ec2b016 962:93ffa3ffc66f
22 local function compile_jid_match_part(part, match) 22 local function compile_jid_match_part(part, match)
23 if not match then 23 if not match then
24 return part.." == nil" 24 return part.." == nil"
25 end 25 end
26 local pattern = match:match("<(.*)>"); 26 local pattern = match:match("<(.*)>");
27 -- TODO: Support Lua pattern matching (main issue syntax... << >>?)
28 if pattern then 27 if pattern then
29 if pattern ~= "*" then 28 if pattern == "*" then
30 return ("%s:match(%q)"):format(part, pattern:gsub(".", wildcard_equivs)); 29 return part;
31 end 30 end
31 if pattern:match("^<.*>$") then
32 pattern = pattern:match("^<(.*)>$");
33 else
34 pattern = pattern:gsub("%p", "%%%0"):gsub("%%(%p)", wildcard_equivs);
35 end
36 return ("%s:match(%q)"):format(part, "^"..pattern.."$");
32 else 37 else
33 return ("%s == %q"):format(part, match); 38 return ("%s == %q"):format(part, match);
34 end 39 end
35 end 40 end
36 41