# HG changeset patch # User Matthew Wild # Date 1452695204 0 # Node ID 41fd55eba4a80b5032a05c244230179ac45c956b # Parent 8ccf347c77532bcdc34f86793654b860f8813256 mod_block_outgoing: Module to block outgoing stanzas from users diff -r 8ccf347c7753 -r 41fd55eba4a8 mod_block_outgoing/mod_block_outgoing.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_block_outgoing/mod_block_outgoing.lua Wed Jan 13 14:26:44 2016 +0000 @@ -0,0 +1,28 @@ +-- Module to block all outgoing stanzas from a list of users + +local jid_bare = require "util.jid".bare; + +local block_users = module:get_option_set("block_outgoing_users", {}); +local block_all = block_users:empty(); + +local stanza_types = { "iq", "presence", "message" }; +local jid_types = { "host", "bare", "full" }; + +local function block_stanza(event) + local stanza = event.stanza; + if stanza.attr.to == nil then + return; + end + if block_all or block_users:contains(jid_bare(stanza.attr.from)) then + module:log("debug", "Blocked outgoing %s stanza from %s", stanza.name, stanza.attr.from); + return true; + end +end + +function module.load() + for _, stanza_type in ipairs(stanza_types) do + for _, jid_type in ipairs(jid_types) do + module:hook("pre-"..stanza_type.."/"..jid_type, block_stanza, 10000); + end + end +end