Mercurial > prosody-modules
comparison mod_firewall/mod_firewall.lua @ 2078:11539785cb92
mod_firewall: Split compile function into two parts in order to separate their scopes
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 11 Mar 2016 18:48:34 +0100 |
parents | 368b091e723b |
children | a435db77a5e5 |
comparison
equal
deleted
inserted
replaced
2077:368b091e723b | 2078:11539785cb92 |
---|---|
132 local rule = { conditions = {}, actions = {}, deps = {} }; | 132 local rule = { conditions = {}, actions = {}, deps = {} }; |
133 table.insert(ruleset[chain], rule); | 133 table.insert(ruleset[chain], rule); |
134 return rule; | 134 return rule; |
135 end | 135 end |
136 | 136 |
137 local function compile_firewall_rules(filename) | 137 local function parse_firewall_rules(filename) |
138 local line_no = 0; | 138 local line_no = 0; |
139 | 139 |
140 local function errmsg(err) | 140 local function errmsg(err) |
141 return "Error compiling "..filename.." on line "..line_no..": "..err; | 141 return "Error compiling "..filename.." on line "..line_no..": "..err; |
142 end | 142 end |
264 for _, dep in ipairs(condition_deps or {}) do | 264 for _, dep in ipairs(condition_deps or {}) do |
265 table.insert(rule.deps, dep); | 265 table.insert(rule.deps, dep); |
266 end | 266 end |
267 end | 267 end |
268 end | 268 end |
269 | 269 return ruleset; |
270 end | |
271 | |
272 local function process_firewall_rules(ruleset) | |
270 -- Compile ruleset and return complete code | 273 -- Compile ruleset and return complete code |
271 | 274 |
272 local chain_handlers = {}; | 275 local chain_handlers = {}; |
273 | 276 |
274 -- Loop through the chains in the parsed ruleset (e.g. incoming, outgoing) | 277 -- Loop through the chains in the parsed ruleset (e.g. incoming, outgoing) |
338 end | 341 end |
339 | 342 |
340 return chain_handlers; | 343 return chain_handlers; |
341 end | 344 end |
342 | 345 |
346 local function compile_firewall_rules(filename) | |
347 local ruleset, err = parse_firewall_rules(filename); | |
348 if not ruleset then return nil, err; end | |
349 local chain_handlers = process_firewall_rules(ruleset); | |
350 return chain_handlers; | |
351 end | |
352 | |
343 local function compile_handler(code_string, filename) | 353 local function compile_handler(code_string, filename) |
344 -- Prepare event handler function | 354 -- Prepare event handler function |
345 local chunk, err = loadstring(code_string, "="..filename); | 355 local chunk, err = loadstring(code_string, "="..filename); |
346 if not chunk then | 356 if not chunk then |
347 return nil, "Error compiling (probably a compiler bug, please report): "..err; | 357 return nil, "Error compiling (probably a compiler bug, please report): "..err; |