Diff

plugins/mod_mam/mod_mam.lua @ 7849:93a068ef4b2c

mod_mam: Allow a set of namespaces to be stripped from stored stanzas, default to chat states (fixes #763)
author Kim Alvefur <zash@zash.se>
date Mon, 19 Dec 2016 08:44:56 +0100
parent 7848:efe5232793aa
child 7850:10d91860172f
line wrap: on
line diff
--- a/plugins/mod_mam/mod_mam.lua	Tue Nov 22 18:19:55 2016 +0100
+++ b/plugins/mod_mam/mod_mam.lua	Mon Dec 19 08:44:56 2016 +0100
@@ -32,6 +32,7 @@
 if global_default_policy ~= "roster" then
 	global_default_policy = module:get_option_boolean("default_archive_policy", global_default_policy);
 end
+local strip_tags = module:get_option_set("dont_archive_namespaces", { "http://jabber.org/protocol/chatstates" });
 
 local archive_store = "archive2";
 local archive = assert(module:open_store(archive_store, "archive"));
@@ -265,6 +266,20 @@
 		end
 	end
 
+	if not strip_tags:empty() then
+		stanza = st.clone(stanza);
+		stanza:maptags(function (tag)
+			if strip_tags:contains(tag.attr.xmlns) then
+				return nil;
+			else
+				return tag;
+			end
+		end);
+		if #stanza.tags == 0 then
+			return;
+		end
+	end
+
 	-- Check with the users preferences
 	if shall_store(store_user, with) then
 		log("debug", "Archiving stanza: %s", stanza:top_tag());