Software /
code /
prosody-modules
Diff
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 |
line wrap: on
line diff
--- a/mod_firewall/mod_firewall.lua Thu Mar 17 14:20:06 2016 +0100 +++ b/mod_firewall/mod_firewall.lua Thu Mar 17 14:33:14 2016 +0100 @@ -413,32 +413,42 @@ require"util.prosodyctl".show_usage([[mod_firewall <firewall.pfw>]], [[Compile files with firewall rules to Lua code]]); return 1; end + local verbose = arg[1] == "-v"; + if verbose then table.remove(arg, 1); end local serialize = require "util.serialization".serialize; - print("local logger = require \"util.logger\".init;"); - print(); - print("local function fire_event(name, data)\n\tmodule:fire_event(name, data)\nend"); - print(); + if verbose then + print("local logger = require \"util.logger\".init;"); + print(); + print("local function fire_event(name, data)\n\tmodule:fire_event(name, data)\nend"); + print(); + end for _, filename in ipairs(arg) do print("do -- File "..filename); local chain_functions = assert(compile_firewall_rules(arg[1])); - print(); - print("local active_definitions = "..serialize(active_definitions)..";"); - print(); + if verbose then + print(); + print("local active_definitions = "..serialize(active_definitions)..";"); + print(); + end for chain, handler_code in pairs(chain_functions) do print("---- Chain "..chain:gsub("_", " ")); + if not verbose then + print(("%s = %s;"):format(chain, handler_code:sub(8))); + else - print(("local %s = (%s)(active_definitions, fire_event, logger(%q));"):format(chain, handler_code:sub(8), filename)); - print(); + print(("local %s = (%s)(active_definitions, fire_event, logger(%q));"):format(chain, handler_code:sub(8), filename)); + print(); - local chain_definition = chains[chain]; - if chain_definition and chain_definition.type == "event" then - for _, event_name in ipairs(chain_definition) do - print(("module:hook(%q, %s, %d);"):format(event_name, chain, chain_definition.priority or 0)); + local chain_definition = chains[chain]; + if chain_definition and chain_definition.type == "event" then + for _, event_name in ipairs(chain_definition) do + print(("module:hook(%q, %s, %d);"):format(event_name, chain, chain_definition.priority or 0)); + end end + print(("module:hook(%q, %s, %d);"):format("firewall/chains/"..chain, chain, chain_definition.priority or 0)); end - print(("module:hook(%q, %s, %d);"):format("firewall/chains/"..chain, chain, chain_definition.priority or 0)); print("---- End of chain "..chain); print();