Software /
code /
prosody-modules
File
mod_default_bookmarks/mod_default_bookmarks.lua @ 1268:854a3933cfcd
mod_muc_log_http: URL-encode room names. This allows special characters in room names to work. Ideally this escaping shouldn’t be done in the user visible content, but the module’s template system doesn’t currently allow that.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Sat, 04 Jan 2014 16:50:57 -0500 |
parent | 479:597c872d691e |
child | 1324:853a382c9bd6 |
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);