Mercurial > prosody-modules
view mod_default_bookmarks/mod_default_bookmarks.lua @ 2596:ffb6646b4253
Implement XEP-0198 revision 1.5.2 and limit number of hibernated sessions per user
Revision 1.5.2 allows sending h-values on resumes that fail due to hibernation timeout
and to send out a smacks ack directly before the stream close tag.
I also made the used timers stoppable even for prosody 0.10 and below, this makes
the smacks-ack-delayed event more useful.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sun, 05 Mar 2017 20:23:53 +0100 |
parents | 7dbde05b48a9 |
children | 73906187f964 |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain -- Copyright (C) 2011 Kim Alvefur -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- local st = require "util.stanza" local dm_load = require "util.datamanager".load local jid_split = require "util.jid".split 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; 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 end end, 1);