Software /
code /
prosody-modules
Diff
mod_default_bookmarks/mod_default_bookmarks.lua @ 1325:b21236b6b8d8
Backed out changeset 853a382c9bd6
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Fri, 28 Feb 2014 15:37:55 +0100 |
parent | 1324:853a382c9bd6 |
child | 1343:7dbde05b48a9 |
line wrap: on
line diff
--- a/mod_default_bookmarks/mod_default_bookmarks.lua Fri Feb 28 15:36:06 2014 +0100 +++ b/mod_default_bookmarks/mod_default_bookmarks.lua Fri Feb 28 15:37:55 2014 +0100 @@ -13,34 +13,37 @@ local dm_load = require "util.datamanager".load local jid_split = require "util.jid".split -local private_bookmarks_ns = "storage:storage:bookmarks"; - -local bookmarks = module:get_option("default_bookmarks"); - -module:hook("iq-get/self/jabber:iq:private:query", function(event) +module:hook("iq/self/jabber:iq:private:query", function(event) local origin, stanza = event.origin, event.stanza; + local typ = stanza.attr.type; local from = stanza.attr.from; - if not stanza.tags[1]:get_child("storage", "storage:bookmarks") then return end - local data, err = dm_load(origin.username, origin.host, "private"); - if data and data[private_bookmarks_ns] then return end - - local reply = st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"}) - :tag("storage", { xmlns = "storage:bookmarks" }); - - local nick = jid_split(from); - - local bookmark; - for i=1,#bookmarks do - bookmark = bookmarks[i]; - if type(bookmark) ~= "table" then -- assume it's only a jid - bookmark = { jid = bookmark, name = jid_split(bookmark) }; + local query = stanza.tags[1]; + if #query.tags == 1 and typ == "get" then + local tag = query.tags[1]; + local key = tag.name..":"..tag.attr.xmlns; + if key == "storage:storage:bookmarks" then + local data, err = dm_load(origin.username, origin.host, "private"); + if not(data and data[key]) then + local bookmarks = module:get_option("default_bookmarks"); + if bookmarks and #bookmarks > 0 then + local reply = st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"}) + :tag("storage", { xmlns = "storage:bookmarks" }); + local nick = jid_split(from); + for i=1,#bookmarks do + local bookmark = bookmarks[i]; + if type(bookmark) ~= "table" then -- assume it's only a jid + bookmark = { jid = bookmark, name = jid_split(bookmark) }; + end + reply:tag("conference", { + jid = bookmark.jid, + name = bookmark.name, + autojoin = "1", + }):tag("nick"):text(nick):up():up(); + end + origin.send(reply); + return true; + end + end end - reply:tag("conference", { - jid = bookmark.jid, - name = bookmark.name, - autojoin = "1", - }):tag("nick"):text(nick):up():up(); end - origin.send(reply); - return true; end, 1);