mod_default_bookmarks/mod_default_bookmarks.lua
author Kim Alvefur <zash@zash.se>
Sun, 03 Mar 2024 11:23:40 +0100
changeset 5857 97c9b76867ca
parent 4983 8f77452abc59
permissions -rw-r--r--
mod_log_ringbuffer: Detach event handlers on logging reload (thanks Menel) Otherwise the global event handlers accumulate, one added each time logging is reoladed, and each invocation of the signal or event triggers one dump of each created ringbuffer.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
479
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
-- Prosody IM
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
-- Copyright (C) 2008-2010 Matthew Wild
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
-- Copyright (C) 2008-2010 Waqas Hussain
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
-- Copyright (C) 2011 Kim Alvefur
3240
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
     5
-- Copyright (C) 2018 Emmanuel Gil Peyrot
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 1325
diff changeset
     6
--
479
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
-- This project is MIT/X11 licensed. Please see the
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
-- COPYING file in the source package for more information.
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
--
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
local st = require "util.stanza"
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
local dm_load = require "util.datamanager".load
4864
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    13
local jid = require "util.jid"
479
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    14
3240
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    15
-- COMPAT w/trunk
4861
3f6711c1c66a mod_default_bookmarks: Use whichever of mod_bookmarks and mod_bookmarks2 is enabled
Kim Alvefur <zash@zash.se>
parents: 4860
diff changeset
    16
local mod_bookmarks_available = false;
3240
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    17
local mm = require "core.modulemanager";
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    18
if mm.get_modules_for_host then
4861
3f6711c1c66a mod_default_bookmarks: Use whichever of mod_bookmarks and mod_bookmarks2 is enabled
Kim Alvefur <zash@zash.se>
parents: 4860
diff changeset
    19
	local host_modules = mm.get_modules_for_host(module.host);
3f6711c1c66a mod_default_bookmarks: Use whichever of mod_bookmarks and mod_bookmarks2 is enabled
Kim Alvefur <zash@zash.se>
parents: 4860
diff changeset
    20
	if host_modules:contains("bookmarks") then
3f6711c1c66a mod_default_bookmarks: Use whichever of mod_bookmarks and mod_bookmarks2 is enabled
Kim Alvefur <zash@zash.se>
parents: 4860
diff changeset
    21
		mod_bookmarks_available = "bookmarks";
3f6711c1c66a mod_default_bookmarks: Use whichever of mod_bookmarks and mod_bookmarks2 is enabled
Kim Alvefur <zash@zash.se>
parents: 4860
diff changeset
    22
	elseif host_modules:contains("bookmarks2") then
3f6711c1c66a mod_default_bookmarks: Use whichever of mod_bookmarks and mod_bookmarks2 is enabled
Kim Alvefur <zash@zash.se>
parents: 4860
diff changeset
    23
		mod_bookmarks_available = "bookmarks2";
3240
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    24
	end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    25
end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    26
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    27
local function get_default_bookmarks(nickname)
4864
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    28
	local bookmarks = module:get_option_array("default_bookmarks");
3240
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    29
	if not bookmarks or #bookmarks == 0 then
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    30
		return false;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    31
	end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    32
	local reply = st.stanza("storage", { xmlns = "storage:bookmarks" });
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    33
	local nick = nickname and st.stanza("nick"):text(nickname);
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    34
	for _, bookmark in ipairs(bookmarks) do
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    35
		if type(bookmark) ~= "table" then -- assume it's only a jid
4864
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    36
			bookmark = { jid = bookmark, name = jid.split(bookmark) };
3240
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    37
		end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    38
		reply:tag("conference", {
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    39
			jid = bookmark.jid,
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    40
			name = bookmark.name,
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    41
			autojoin = "1",
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    42
		});
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    43
		if nick then
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    44
			reply:add_child(nick):up();
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    45
		end
3241
420ebea00cf3 mod_default_bookmarks: Add support for <password/>.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3240
diff changeset
    46
		if bookmark.password then
420ebea00cf3 mod_default_bookmarks: Add support for <password/>.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3240
diff changeset
    47
			reply:tag("password"):text(bookmark.password):up();
420ebea00cf3 mod_default_bookmarks: Add support for <password/>.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 3240
diff changeset
    48
		end
3240
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    49
		reply:up();
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    50
	end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    51
	return reply;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    52
end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
    53
4861
3f6711c1c66a mod_default_bookmarks: Use whichever of mod_bookmarks and mod_bookmarks2 is enabled
Kim Alvefur <zash@zash.se>
parents: 4860
diff changeset
    54
if mod_bookmarks_available then
3f6711c1c66a mod_default_bookmarks: Use whichever of mod_bookmarks and mod_bookmarks2 is enabled
Kim Alvefur <zash@zash.se>
parents: 4860
diff changeset
    55
	local mod_bookmarks = module:depends(mod_bookmarks_available);
4868
62006f4022e9 mod_default_bookmarks: Silence warning when probing for mod_bookmarks version
Kim Alvefur <zash@zash.se>
parents: 4864
diff changeset
    56
	if rawget(mod_bookmarks, "publish_to_pep") then
4862
727f147aac4d mod_default_bookmarks: Minor refactor to do some checks earlier
Kim Alvefur <zash@zash.se>
parents: 4861
diff changeset
    57
		local function on_bookmarks_empty(event)
727f147aac4d mod_default_bookmarks: Minor refactor to do some checks earlier
Kim Alvefur <zash@zash.se>
parents: 4861
diff changeset
    58
			local session = event.session;
4860
b3f0f82af5a2 mod_default_bookmarks: Fix mod_bookmarks capability check
Kim Alvefur <zash@zash.se>
parents: 4858
diff changeset
    59
			local bookmarks = get_default_bookmarks(session.username);
b3f0f82af5a2 mod_default_bookmarks: Fix mod_bookmarks capability check
Kim Alvefur <zash@zash.se>
parents: 4858
diff changeset
    60
			if bookmarks then
b3f0f82af5a2 mod_default_bookmarks: Fix mod_bookmarks capability check
Kim Alvefur <zash@zash.se>
parents: 4858
diff changeset
    61
				mod_bookmarks.publish_to_pep(session.full_jid, bookmarks);
b3f0f82af5a2 mod_default_bookmarks: Fix mod_bookmarks capability check
Kim Alvefur <zash@zash.se>
parents: 4858
diff changeset
    62
			end
479
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    63
		end
4862
727f147aac4d mod_default_bookmarks: Minor refactor to do some checks earlier
Kim Alvefur <zash@zash.se>
parents: 4861
diff changeset
    64
		module:hook("bookmarks/empty", on_bookmarks_empty);
727f147aac4d mod_default_bookmarks: Minor refactor to do some checks earlier
Kim Alvefur <zash@zash.se>
parents: 4861
diff changeset
    65
	else
4863
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    66
		local mod_pep = module:depends "pep";
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    67
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    68
		local function publish_bookmarks2(event)
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    69
			local session = event.session;
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    70
			local publish_options = {
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    71
				["persist_items"] = true;
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    72
				["max_items"] = "max";
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    73
				["send_last_published_item"] = "never";
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    74
				["access_model"] = "whitelist";
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    75
			}
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    76
			if not pcall(mod_pep.check_node_config, nil, nil, publish_options) then
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    77
				-- 0.11 or earlier not supporting max_items="max" trows an error here
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    78
				module:log("debug", "Setting max_items=pep_max_items because 'max' is not supported in this version");
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    79
				publish_options["max_items"] = module:get_option_number("pep_max_items", 256);
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    80
			end
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    81
			local service = mod_pep.get_pep_service(session.username);
4864
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    82
			local bookmarks = module:get_option_array("default_bookmarks");
4982
4c8b66da4dec mod_default_bookmarks: Bail on empty 'default_bookmarks' to fix traceback
Kim Alvefur <zash@zash.se>
parents: 4868
diff changeset
    83
			if not bookmarks or #bookmarks == 0 then
4c8b66da4dec mod_default_bookmarks: Bail on empty 'default_bookmarks' to fix traceback
Kim Alvefur <zash@zash.se>
parents: 4868
diff changeset
    84
				return;
4c8b66da4dec mod_default_bookmarks: Bail on empty 'default_bookmarks' to fix traceback
Kim Alvefur <zash@zash.se>
parents: 4868
diff changeset
    85
			end
4863
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    86
			local ns = event.version or "urn:xmpp:bookmarks:1";
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
    87
			for i, bookmark in ipairs(bookmarks) do
4983
8f77452abc59 mod_default_bookmarks: Fix support for array of string config in bookmarks 2 part (thanks Menel)
Kim Alvefur <zash@zash.se>
parents: 4982
diff changeset
    88
				if type(bookmark) ~= "table" then -- assume it's only a jid
8f77452abc59 mod_default_bookmarks: Fix support for array of string config in bookmarks 2 part (thanks Menel)
Kim Alvefur <zash@zash.se>
parents: 4982
diff changeset
    89
					bookmark = { jid = bookmark, name = jid.split(bookmark) };
8f77452abc59 mod_default_bookmarks: Fix support for array of string config in bookmarks 2 part (thanks Menel)
Kim Alvefur <zash@zash.se>
parents: 4982
diff changeset
    90
				end
4864
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    91
				local bm_jid = jid.prep(bookmark.jid);
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    92
				if not bm_jid then
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    93
					module:log("error", "Invalid JID in default_bookmarks[%d].jid = %q", i, bookmark.jid);
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    94
				else
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    95
					local item = st.stanza("item", { xmlns = "http://jabber.org/protocol/pubsub"; id = bm_jid });
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    96
					item:tag("conference", { xmlns = ns; name = bookmark.name; autojoin = bookmark.autojoin and "true" or nil });
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    97
					if bookmark.nick then item:text_tag("nick", bookmarks.nick); end
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    98
					if bookmark.password then item:text_tag("password", bookmarks.password); end
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
    99
					local ok, err = service:publish("urn:xmpp:bookmarks:1", session.full_jid, bm_jid, item, publish_options);
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
   100
					if not ok then
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
   101
						module:log("error", "Could not add default bookmark %s to %s: %s", bm_jid, session.username, err);
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
   102
					end
4a34ed2bb9a2 mod_default_bookmarks: Improve validation
Kim Alvefur <zash@zash.se>
parents: 4863
diff changeset
   103
				end
4863
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
   104
			end
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
   105
		end
33208c3ae586 mod_default_bookmarks: Add support for XEP-0402 via mod_bookmarks(2)
Kim Alvefur <zash@zash.se>
parents: 4862
diff changeset
   106
		module:hook("bookmarks/empty", publish_bookmarks2);
479
597c872d691e mod_default_bookmarks: Serve a list of default bookmarks if the user has nil.
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   107
	end
3240
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   108
else
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   109
	local function on_private_xml_get(event)
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   110
		local origin, stanza = event.origin, event.stanza;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   111
		local tag = stanza.tags[1].tags[1];
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   112
		local key = tag.name..":"..tag.attr.xmlns;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   113
		if key ~= "storage:storage:bookmarks" then
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   114
			return;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   115
		end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   116
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   117
		local data, err = dm_load(origin.username, origin.host, "private");
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   118
		if data and data[key] then
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   119
			return;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   120
		end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   121
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   122
		local bookmarks = get_default_bookmarks(origin.username);
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   123
		if not bookmarks then
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   124
			return;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   125
		end;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   126
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   127
		local reply = st.reply(stanza):tag("query", { xmlns = "jabber:iq:private" })
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   128
			:add_child(bookmarks);
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   129
		origin.send(reply);
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   130
		return true;
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   131
	end
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   132
	module:hook("iq-get/self/jabber:iq:private:query", on_private_xml_get, 1);
73906187f964 mod_default_bookmarks: Add support for trunk’s mod_pep.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1343
diff changeset
   133
end