Mercurial > prosody-modules
comparison mod_firewall/mod_firewall.lua @ 2368:7e1d8c46d788
mod_firewall: Support for default values in stanza paths
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Tue, 15 Nov 2016 21:02:04 +0000 |
parents | 3ebd3cb4d7d2 |
children | d630fa0d4dba |
comparison
equal
deleted
inserted
replaced
2367:3ebd3cb4d7d2 | 2368:7e1d8c46d788 |
---|---|
45 -- Run quoted (%q) strings through this to allow them to contain code. e.g.: LOG=Received: $(stanza:top_tag()) | 45 -- Run quoted (%q) strings through this to allow them to contain code. e.g.: LOG=Received: $(stanza:top_tag()) |
46 function meta(s, extra) | 46 function meta(s, extra) |
47 return (s:gsub("$(%b())", [["..tostring(%1).."]]) | 47 return (s:gsub("$(%b())", [["..tostring(%1).."]]) |
48 :gsub("$(%b<>)", function (expr) | 48 :gsub("$(%b<>)", function (expr) |
49 expr = expr:sub(2,-2); | 49 expr = expr:sub(2,-2); |
50 local default = expr:match("||([^|]+)$"); | |
51 if default then | |
52 expr = expr:sub(1, -(#default+2)); | |
53 else | |
54 default = "<undefined>"; | |
55 end | |
50 if expr:match("^@") then | 56 if expr:match("^@") then |
51 return "\"..stanza.attr["..("%q"):format(expr:sub(2)).."]..\""; | 57 return "\"..(stanza.attr["..("%q"):format(expr:sub(2)).."] or "..("%q"):format(default)..")..\""; |
52 end | 58 end |
53 return "\"..stanza:find("..("%q"):format(expr:sub(2, -2))..")..\""; | 59 return "\"..(stanza:find("..("%q"):format(expr:sub(2, -2))..") or "..("%q"):format(default)..")..\""; |
54 end) | 60 end) |
55 :gsub("$$(%a+)", extra or {}) | 61 :gsub("$$(%a+)", extra or {}) |
56 :gsub([[^""%.%.]], "") | 62 :gsub([[^""%.%.]], "") |
57 :gsub([[%.%.""$]], "")); | 63 :gsub([[%.%.""$]], "")); |
58 end | 64 end |