diff mod_muc_restrict_media/mod_muc_restrict_media.lua @ 5171:1682166171ff

Strip images from XHTML-IM as well
author Stephen Paul Weber <singpolyma@singpolyma.net>
date Mon, 20 Feb 2023 13:41:46 -0500
parents 5a3031613dbc
children
line wrap: on
line diff
--- a/mod_muc_restrict_media/mod_muc_restrict_media.lua	Sun Feb 19 18:17:37 2023 +0100
+++ b/mod_muc_restrict_media/mod_muc_restrict_media.lua	Mon Feb 20 13:41:46 2023 -0500
@@ -48,6 +48,19 @@
 	formdata["{xmpp:prosody.im}muc#roomconfig_unaffiliated_media"] = allow_unaffiliated_media;
 end);
 
+local function strip_xhtml_img(tag)
+	if tag.attr.xmlns == "http://www.w3.org/1999/xhtml" and tag.name == "img" then
+		tag.name = "i";
+		tag:text(tag.attr.alt or "<image blocked>");
+		tag.attr = { xmlns = tag.attr.xmlns, title = tag.attr.title };
+		tag:maptags(strip_xhtml_img);
+	else
+		tag:maptags(strip_xhtml_img);
+	end
+
+	return tag;
+end
+
 local function filter_media_tags(tag)
 	local xmlns = tag.attr.xmlns;
 	if xmlns == "jabber:x:oob" then
@@ -56,6 +69,8 @@
 		if tag:get_child("media-sharing", "urn:xmpp:sims:1") then
 			return nil;
 		end
+	elseif xmlns == "http://jabber.org/protocol/xhtml-im" then
+		return strip_xhtml_img(tag);
 	end
 	return tag;
 end