Diff

mod_muc_restrict_avatars/mod_muc_restrict_avatars.lua @ 5672:2c69577b28c2

mod_muc_restrict_avatars: Block MUC participant avatars for non-members
author Stephen Paul Weber <singpolyma@singpolyma.net>
date Wed, 22 Feb 2023 22:47:45 -0500
child 5905:66e7d46b1d4b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_muc_restrict_avatars/mod_muc_restrict_avatars.lua	Wed Feb 22 22:47:45 2023 -0500
@@ -0,0 +1,19 @@
+local bare_jid = require"util.jid".bare;
+local mod_muc = module:depends("muc");
+
+local function filter_avatar_advertisement(tag)
+	if tag.attr.xmlns == "vcard-temp:x:update" then
+		return nil;
+	end
+
+	return tag;
+end
+
+module:hook("presence/full", function(event)
+	local stanza = event.stanza;
+	local room = mod_muc.get_room_from_jid(bare_jid(stanza.attr.to));
+
+	if not room:get_affiliation(stanza.attr.from) then
+		stanza:maptags(filter_avatar_advertisement);
+	end
+end, 1);