Software /
code /
prosody-modules
Comparison
mod_firewall/mod_firewall.lua @ 2118:643b254e75de
mod_firewall: Disable more realistic output by default, activated by adding a -v flag
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 17 Mar 2016 14:33:14 +0100 |
parent | 2117:5aa3b93cd37a |
child | 2124:89363766202c |
comparison
equal
deleted
inserted
replaced
2117:5aa3b93cd37a | 2118:643b254e75de |
---|---|
411 function module.command(arg) | 411 function module.command(arg) |
412 if not arg[1] or arg[1] == "--help" then | 412 if not arg[1] or arg[1] == "--help" then |
413 require"util.prosodyctl".show_usage([[mod_firewall <firewall.pfw>]], [[Compile files with firewall rules to Lua code]]); | 413 require"util.prosodyctl".show_usage([[mod_firewall <firewall.pfw>]], [[Compile files with firewall rules to Lua code]]); |
414 return 1; | 414 return 1; |
415 end | 415 end |
416 local verbose = arg[1] == "-v"; | |
417 if verbose then table.remove(arg, 1); end | |
416 | 418 |
417 local serialize = require "util.serialization".serialize; | 419 local serialize = require "util.serialization".serialize; |
418 print("local logger = require \"util.logger\".init;"); | 420 if verbose then |
419 print(); | 421 print("local logger = require \"util.logger\".init;"); |
420 print("local function fire_event(name, data)\n\tmodule:fire_event(name, data)\nend"); | 422 print(); |
421 print(); | 423 print("local function fire_event(name, data)\n\tmodule:fire_event(name, data)\nend"); |
424 print(); | |
425 end | |
422 | 426 |
423 for _, filename in ipairs(arg) do | 427 for _, filename in ipairs(arg) do |
424 print("do -- File "..filename); | 428 print("do -- File "..filename); |
425 local chain_functions = assert(compile_firewall_rules(arg[1])); | 429 local chain_functions = assert(compile_firewall_rules(arg[1])); |
426 print(); | 430 if verbose then |
427 print("local active_definitions = "..serialize(active_definitions)..";"); | 431 print(); |
428 print(); | 432 print("local active_definitions = "..serialize(active_definitions)..";"); |
433 print(); | |
434 end | |
429 for chain, handler_code in pairs(chain_functions) do | 435 for chain, handler_code in pairs(chain_functions) do |
430 print("---- Chain "..chain:gsub("_", " ")); | 436 print("---- Chain "..chain:gsub("_", " ")); |
431 | 437 if not verbose then |
432 print(("local %s = (%s)(active_definitions, fire_event, logger(%q));"):format(chain, handler_code:sub(8), filename)); | 438 print(("%s = %s;"):format(chain, handler_code:sub(8))); |
433 print(); | 439 else |
434 | 440 |
435 local chain_definition = chains[chain]; | 441 print(("local %s = (%s)(active_definitions, fire_event, logger(%q));"):format(chain, handler_code:sub(8), filename)); |
436 if chain_definition and chain_definition.type == "event" then | 442 print(); |
437 for _, event_name in ipairs(chain_definition) do | 443 |
438 print(("module:hook(%q, %s, %d);"):format(event_name, chain, chain_definition.priority or 0)); | 444 local chain_definition = chains[chain]; |
445 if chain_definition and chain_definition.type == "event" then | |
446 for _, event_name in ipairs(chain_definition) do | |
447 print(("module:hook(%q, %s, %d);"):format(event_name, chain, chain_definition.priority or 0)); | |
448 end | |
439 end | 449 end |
440 end | 450 print(("module:hook(%q, %s, %d);"):format("firewall/chains/"..chain, chain, chain_definition.priority or 0)); |
441 print(("module:hook(%q, %s, %d);"):format("firewall/chains/"..chain, chain, chain_definition.priority or 0)); | 451 end |
442 | 452 |
443 print("---- End of chain "..chain); | 453 print("---- End of chain "..chain); |
444 print(); | 454 print(); |
445 end | 455 end |
446 print("end -- End of file "..filename); | 456 print("end -- End of file "..filename); |