annotate mod_block_outgoing/mod_block_outgoing.lua @ 3656:3e0f4d727825

mod_vcard_muc: Add an alternative method of signaling avatar change When the avatar has been changed, a signal is sent that the room configuration has changed. Clients then do a disco#info query to find the SHA-1 of the new avatar. They can then fetch it as before, or not if they have it cached already. This is meant to be less disruptive than signaling via presence, which caused problems for some clients. If clients transition to the new method, the old one can eventually be removed. The namespace is made up while waiting for standardization. Otherwise it is very close to what's described in https://xmpp.org/extensions/inbox/muc-avatars.html
author Kim Alvefur <zash@zash.se>
date Sun, 25 Aug 2019 20:46:43 +0200
parents dc1299ca0185
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2004
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 -- Module to block all outgoing stanzas from a list of users
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local jid_bare = require "util.jid".bare;
2005
c769ed3e5b2b mod_block_outgoing: Make admins exempt from restrictions
Matthew Wild <mwild1@gmail.com>
parents: 2004
diff changeset
4 local is_admin = require "core.usermanager".is_admin;
2007
dc1299ca0185 mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents: 2006
diff changeset
5 local set = require "util.set";
2004
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 local block_users = module:get_option_set("block_outgoing_users", {});
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 local block_all = block_users:empty();
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9
2007
dc1299ca0185 mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents: 2006
diff changeset
10 local stanza_types = module:get_option_set("block_outgoing_stanzas", { "message" });
dc1299ca0185 mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents: 2006
diff changeset
11 local jid_types = set.new{ "host", "bare", "full" };
2004
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 local function block_stanza(event)
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 local stanza = event.stanza;
2005
c769ed3e5b2b mod_block_outgoing: Make admins exempt from restrictions
Matthew Wild <mwild1@gmail.com>
parents: 2004
diff changeset
15 local from_jid = jid_bare(stanza.attr.from);
2006
cb810a2bca47 mod_block_outgoing: Allow stanzas to user's login host (e.g. disco queries)
Matthew Wild <mwild1@gmail.com>
parents: 2005
diff changeset
16 if stanza.attr.to == nil or stanza.attr.to == module.host or is_admin(from_jid, module.host) then
2004
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 return;
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 end
2005
c769ed3e5b2b mod_block_outgoing: Make admins exempt from restrictions
Matthew Wild <mwild1@gmail.com>
parents: 2004
diff changeset
19 if block_all or block_users:contains(from_jid) then
2004
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 module:log("debug", "Blocked outgoing %s stanza from %s", stanza.name, stanza.attr.from);
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 return true;
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 end
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 end
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 function module.load()
2007
dc1299ca0185 mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents: 2006
diff changeset
26 for stanza_type in stanza_types do
dc1299ca0185 mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents: 2006
diff changeset
27 for jid_type in jid_types do
2004
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 module:hook("pre-"..stanza_type.."/"..jid_type, block_stanza, 10000);
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 end
41fd55eba4a8 mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 end