Mercurial > prosody-modules
comparison mod_firewall/actions.lib.lua @ 2558:2b533a7b5236
mod_firewall: Make PASS bubble up through all chains, and add DEFAULT and RETURN
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 24 Feb 2017 09:38:20 +0000 |
| parents | 9392f45b0364 |
| children | fda47e2135e5 |
comparison
equal
deleted
inserted
replaced
| 2557:56db2ab3b853 | 2558:2b533a7b5236 |
|---|---|
| 48 end | 48 end |
| 49 return table.concat(code, ""); | 49 return table.concat(code, ""); |
| 50 end | 50 end |
| 51 | 51 |
| 52 function action_handlers.PASS() | 52 function action_handlers.PASS() |
| 53 return "do return end" | 53 return "do return pass_return end" |
| 54 end | 54 end |
| 55 | 55 |
| 56 function action_handlers.DROP() | 56 function action_handlers.DROP() |
| 57 return "do return true end"; | 57 return "do return true end"; |
| 58 end | |
| 59 | |
| 60 function action_handlers.DEFAULT() | |
| 61 return "do return false end"; | |
| 62 end | |
| 63 | |
| 64 function action_handlers.RETURN() | |
| 65 return "do return end" | |
| 58 end | 66 end |
| 59 | 67 |
| 60 function action_handlers.STRIP(tag_desc) | 68 function action_handlers.STRIP(tag_desc) |
| 61 local code = {}; | 69 local code = {}; |
| 62 local name, xmlns = tag_desc:match("^(%S+) (.+)$"); | 70 local name, xmlns = tag_desc:match("^(%S+) (.+)$"); |
| 183 function action_handlers.JUMP_EVENT(name) | 191 function action_handlers.JUMP_EVENT(name) |
| 184 return ("do return fire_event(%q, event); end"):format(name); | 192 return ("do return fire_event(%q, event); end"):format(name); |
| 185 end | 193 end |
| 186 | 194 |
| 187 function action_handlers.JUMP_CHAIN(name) | 195 function action_handlers.JUMP_CHAIN(name) |
| 188 return ("if fire_event(%q, event) then return true; end"):format("firewall/chains/"..name); | 196 return ([[do |
| 197 local ret = fire_event(%q, event); | |
| 198 log('debug', 'chain \"%%s\" returned %%s', %q, tostring(ret)); | |
| 199 if ret ~= nil then | |
| 200 if ret == false then | |
| 201 return pass_return; | |
| 202 end | |
| 203 return ret; | |
| 204 end | |
| 205 end]]):format("firewall/chains/"..name, name); | |
| 189 end | 206 end |
| 190 | 207 |
| 191 function action_handlers.MARK_ORIGIN(name) | 208 function action_handlers.MARK_ORIGIN(name) |
| 192 return [[session.firewall_marked_]]..idsafe(name)..[[ = current_timestamp;]], { "timestamp" }; | 209 return [[session.firewall_marked_]]..idsafe(name)..[[ = current_timestamp;]], { "timestamp" }; |
| 193 end | 210 end |
