Comparison

mod_block_outgoing/mod_block_outgoing.lua @ 2004:41fd55eba4a8

mod_block_outgoing: Module to block outgoing stanzas from users
author Matthew Wild <mwild1@gmail.com>
date Wed, 13 Jan 2016 14:26:44 +0000
child 2005:c769ed3e5b2b
comparison
equal deleted inserted replaced
2003:8ccf347c7753 2004:41fd55eba4a8
1 -- Module to block all outgoing stanzas from a list of users
2
3 local jid_bare = require "util.jid".bare;
4
5 local block_users = module:get_option_set("block_outgoing_users", {});
6 local block_all = block_users:empty();
7
8 local stanza_types = { "iq", "presence", "message" };
9 local jid_types = { "host", "bare", "full" };
10
11 local function block_stanza(event)
12 local stanza = event.stanza;
13 if stanza.attr.to == nil then
14 return;
15 end
16 if block_all or block_users:contains(jid_bare(stanza.attr.from)) then
17 module:log("debug", "Blocked outgoing %s stanza from %s", stanza.name, stanza.attr.from);
18 return true;
19 end
20 end
21
22 function module.load()
23 for _, stanza_type in ipairs(stanza_types) do
24 for _, jid_type in ipairs(jid_types) do
25 module:hook("pre-"..stanza_type.."/"..jid_type, block_stanza, 10000);
26 end
27 end
28 end