diff options
-rw-r--r-- | plugins/mod_mam/mamprefsxml.lib.lua | 14 | ||||
-rw-r--r-- | spec/scansion/mam_prefs_prep.scs | 36 | ||||
-rw-r--r-- | spec/scansion/prosody.cfg.lua | 3 |
3 files changed, 48 insertions, 5 deletions
diff --git a/plugins/mod_mam/mamprefsxml.lib.lua b/plugins/mod_mam/mamprefsxml.lib.lua index 8eee78d8..c408fbea 100644 --- a/plugins/mod_mam/mamprefsxml.lib.lua +++ b/plugins/mod_mam/mamprefsxml.lib.lua @@ -2,6 +2,7 @@ -- Copyright (C) 2008-2017 Matthew Wild -- Copyright (C) 2008-2017 Waqas Hussain -- Copyright (C) 2011-2017 Kim Alvefur +-- Copyright (C) 2018 Emmanuel Gil Peyrot -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. @@ -10,6 +11,7 @@ -- local st = require"util.stanza"; +local jid_prep = require"util.jid".prep; local xmlns_mam = "urn:xmpp:mam:2"; local default_attrs = { @@ -42,16 +44,20 @@ local function fromstanza(prefstanza) local always = prefstanza:get_child("always"); if always then for rule in always:childtags("jid") do - local jid = rule:get_text(); - prefs[jid] = true; + local jid = jid_prep(rule:get_text()); + if jid then + prefs[jid] = true; + end end end local never = prefstanza:get_child("never"); if never then for rule in never:childtags("jid") do - local jid = rule:get_text(); - prefs[jid] = false; + local jid = jid_prep(rule:get_text()); + if jid then + prefs[jid] = false; + end end end diff --git a/spec/scansion/mam_prefs_prep.scs b/spec/scansion/mam_prefs_prep.scs new file mode 100644 index 00000000..9589ec65 --- /dev/null +++ b/spec/scansion/mam_prefs_prep.scs @@ -0,0 +1,36 @@ +# mod_mam shold apply JIDprep in prefs + +[Client] Romeo + jid: romeo@localhost + password: password + +----- + +Romeo connects + +Romeo sends: + <iq id="lx2" type="set"> + <prefs xmlns="urn:xmpp:mam:2" default="roster"> + <always> + <jid>JULIET@MONTAGUE.LIT</jid> + </always> + <never> + <jid>MONTAGUE@MONTAGUE.LIT</jid> + </never> + </prefs> + </iq> + +Romeo receives: + <iq id="lx2" type="result"> + <prefs xmlns="urn:xmpp:mam:2" default="roster"> + <always> + <jid>juliet@montague.lit</jid> + </always> + <never> + <jid>montague@montague.lit</jid> + </never> + </prefs> + </iq> + +Romeo disconnects + diff --git a/spec/scansion/prosody.cfg.lua b/spec/scansion/prosody.cfg.lua index 8d6e7c0a..fd742db6 100644 --- a/spec/scansion/prosody.cfg.lua +++ b/spec/scansion/prosody.cfg.lua @@ -26,7 +26,7 @@ modules_enabled = { "time"; -- Let others know the time here on this server "ping"; -- Replies to XMPP pings with pongs "register"; -- Allow users to register on this server using a client and change passwords - --"mam"; -- Store messages in an archive and allow users to access it + "mam"; -- Store messages in an archive and allow users to access it --"csi_simple"; -- Simple Mobile optimizations -- Admin interfaces @@ -65,6 +65,7 @@ insecure_open_authentication = "Yes please, I know what I'm doing!" storage = "memory" +mam_smart_enable = true -- For the "sql" backend, you can uncomment *one* of the below to configure: --sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename. |