Mercurial > prosody-hg
comparison 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 |
| parents | efe5232793aa |
| children | 10d91860172f |
comparison
equal
deleted
inserted
replaced
| 7848:efe5232793aa | 7849:93a068ef4b2c |
|---|---|
| 30 local default_max_items, max_max_items = 20, module:get_option_number("max_archive_query_results", 50); | 30 local default_max_items, max_max_items = 20, module:get_option_number("max_archive_query_results", 50); |
| 31 local global_default_policy = module:get_option("default_archive_policy", true); | 31 local global_default_policy = module:get_option("default_archive_policy", true); |
| 32 if global_default_policy ~= "roster" then | 32 if global_default_policy ~= "roster" then |
| 33 global_default_policy = module:get_option_boolean("default_archive_policy", global_default_policy); | 33 global_default_policy = module:get_option_boolean("default_archive_policy", global_default_policy); |
| 34 end | 34 end |
| 35 local strip_tags = module:get_option_set("dont_archive_namespaces", { "http://jabber.org/protocol/chatstates" }); | |
| 35 | 36 |
| 36 local archive_store = "archive2"; | 37 local archive_store = "archive2"; |
| 37 local archive = assert(module:open_store(archive_store, "archive")); | 38 local archive = assert(module:open_store(archive_store, "archive")); |
| 38 | 39 |
| 39 if archive.name == "null" or not archive.find then | 40 if archive.name == "null" or not archive.find then |
| 263 log("debug", "Not archiving stanza: %s (hint)", stanza:top_tag()); | 264 log("debug", "Not archiving stanza: %s (hint)", stanza:top_tag()); |
| 264 return; | 265 return; |
| 265 end | 266 end |
| 266 end | 267 end |
| 267 | 268 |
| 269 if not strip_tags:empty() then | |
| 270 stanza = st.clone(stanza); | |
| 271 stanza:maptags(function (tag) | |
| 272 if strip_tags:contains(tag.attr.xmlns) then | |
| 273 return nil; | |
| 274 else | |
| 275 return tag; | |
| 276 end | |
| 277 end); | |
| 278 if #stanza.tags == 0 then | |
| 279 return; | |
| 280 end | |
| 281 end | |
| 282 | |
| 268 -- Check with the users preferences | 283 -- Check with the users preferences |
| 269 if shall_store(store_user, with) then | 284 if shall_store(store_user, with) then |
| 270 log("debug", "Archiving stanza: %s", stanza:top_tag()); | 285 log("debug", "Archiving stanza: %s", stanza:top_tag()); |
| 271 | 286 |
| 272 -- And stash it | 287 -- And stash it |
