Mercurial > prosody-modules
comparison mod_firewall/mod_firewall.lua @ 1052:80f0a3231c59
mod_firewall: Add support for being called as a prosodyctl command
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 05 Jun 2013 21:14:59 +0200 |
parents | c66ea26e4224 |
children | 8a3f3f485675 |
comparison
equal
deleted
inserted
replaced
1051:c66ea26e4224 | 1052:80f0a3231c59 |
---|---|
339 chunk = chunk()(active_definitions, fire_event, logger(filename)); -- Returns event handler with 'zones' upvalue. | 339 chunk = chunk()(active_definitions, fire_event, logger(filename)); -- Returns event handler with 'zones' upvalue. |
340 return chunk; | 340 return chunk; |
341 end | 341 end |
342 | 342 |
343 function module.load() | 343 function module.load() |
344 if not prosody.arg then return end -- Don't run in prosodyctl | |
344 active_definitions = {}; | 345 active_definitions = {}; |
345 local firewall_scripts = module:get_option_set("firewall_scripts", {}); | 346 local firewall_scripts = module:get_option_set("firewall_scripts", {}); |
346 for script in firewall_scripts do | 347 for script in firewall_scripts do |
347 script = resolve_relative_path(prosody.paths.config, script); | 348 script = resolve_relative_path(prosody.paths.config, script); |
348 local chain_functions, err = compile_firewall_rules(script) | 349 local chain_functions, err = compile_firewall_rules(script) |
370 end | 371 end |
371 -- Replace contents of definitions table (shared) with active definitions | 372 -- Replace contents of definitions table (shared) with active definitions |
372 for k in it.keys(definitions) do definitions[k] = nil; end | 373 for k in it.keys(definitions) do definitions[k] = nil; end |
373 for k,v in pairs(active_definitions) do definitions[k] = v; end | 374 for k,v in pairs(active_definitions) do definitions[k] = v; end |
374 end | 375 end |
376 | |
377 function module.command(arg) | |
378 if not arg[1] or arg[1] == "--help" then | |
379 require"util.prosodyctl".show_usage([[mod_firewall <firewall.pfw>]], [[Compile files with firewall rules to Lua code]]); | |
380 return 1; | |
381 end | |
382 | |
383 for _, filename in ipairs(arg) do | |
384 print("\n-- File "..filename); | |
385 local chain_functions = assert(compile_firewall_rules(arg[1])); | |
386 for chain, handler_code in pairs(chain_functions) do | |
387 print("\n---- Chain "..chain); | |
388 print(handler_code); | |
389 print("\n---- End of chain "..chain); | |
390 end | |
391 print("\n-- End of file "..filename); | |
392 end | |
393 end |