diff options
author | Kim Alvefur <zash@zash.se> | 2016-12-19 08:44:56 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2016-12-19 08:44:56 +0100 |
commit | 687687507ca6e0acbf744f56a28ba05d96653c1c (patch) | |
tree | b41ebbbc8d3050e0f6c2a07b6c9bdcc61d8942b8 | |
parent | 3e669af789f29807304f4494ea3090f3165647c4 (diff) | |
download | prosody-687687507ca6e0acbf744f56a28ba05d96653c1c.tar.gz prosody-687687507ca6e0acbf744f56a28ba05d96653c1c.zip |
mod_mam: Allow a set of namespaces to be stripped from stored stanzas, default to chat states (fixes #763)
-rw-r--r-- | plugins/mod_mam/mod_mam.lua | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/plugins/mod_mam/mod_mam.lua b/plugins/mod_mam/mod_mam.lua index 9d7aabde..898b81c8 100644 --- a/plugins/mod_mam/mod_mam.lua +++ b/plugins/mod_mam/mod_mam.lua @@ -32,6 +32,7 @@ local global_default_policy = module:get_option("default_archive_policy", true); 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 @@ local function message_handler(event, c2s) 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()); |