Mercurial > prosody-modules
comparison mod_firewall/mod_firewall.lua @ 2385:c0c2f8665c3e
mod_firewall: Fix for raw code expressions that contain escape-worthy characters
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Sat, 19 Nov 2016 15:47:41 +0000 |
| parents | d630fa0d4dba |
| children | 2040330586e4 |
comparison
equal
deleted
inserted
replaced
| 2384:feba6439b6fb | 2385:c0c2f8665c3e |
|---|---|
| 47 return name:match("^%a[%w_]*$") | 47 return name:match("^%a[%w_]*$") |
| 48 end | 48 end |
| 49 | 49 |
| 50 -- Run quoted (%q) strings through this to allow them to contain code. e.g.: LOG=Received: $(stanza:top_tag()) | 50 -- Run quoted (%q) strings through this to allow them to contain code. e.g.: LOG=Received: $(stanza:top_tag()) |
| 51 function meta(s, extra) | 51 function meta(s, extra) |
| 52 return (s:gsub("$(%b())", [["..tostring(%1).."]]) | 52 return (s:gsub("$(%b())", function (expr) |
| 53 expr = expr:gsub("\\(.)", "%1"); | |
| 54 return [["..tostring(]]..expr..[[).."]]; | |
| 55 end) | |
| 53 :gsub("$(%b<>)", function (expr) | 56 :gsub("$(%b<>)", function (expr) |
| 54 expr = expr:sub(2,-2); | 57 expr = expr:sub(2,-2); |
| 55 local default = expr:match("||([^|]+)$"); | 58 local default = expr:match("||([^|]+)$"); |
| 56 if default then | 59 if default then |
| 57 expr = expr:sub(1, -(#default+2)); | 60 expr = expr:sub(1, -(#default+2)); |
