Annotate

plugins/mod_private.lua @ 6391:4d334d00c635

plugins/muc/muc.lib: Add instant room support
author daurnimator <quae@daurnimator.com>
date Fri, 05 Sep 2014 11:19:16 -0400
parent 6354:bbb4a82db32e
child 6843:161cccfdf015
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1523
841d61be198f Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents: 896
diff changeset
1 -- Prosody IM
2923
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5500
diff changeset
4 --
758
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 615
diff changeset
6 -- COPYING file in the source package for more information.
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
diff changeset
7 --
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
diff changeset
8
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
diff changeset
9
185
a67c88ce1c6a Added support for XEP-0049: Private XML Storage (mod_private)
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
10 local st = require "util.stanza"
a67c88ce1c6a Added support for XEP-0049: Private XML Storage (mod_private)
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
11
6343
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
12 local private_storage = module:open_store("private", "map");
185
a67c88ce1c6a Added support for XEP-0049: Private XML Storage (mod_private)
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
13
541
3521e0851c9e Change modules to use the new add_feature module API method.
Waqas Hussain <waqas20@gmail.com>
parents: 519
diff changeset
14 module:add_feature("jabber:iq:private");
421
63be85693710 Modules now sending disco replies
Waqas Hussain <waqas20@gmail.com>
parents: 310
diff changeset
15
3522
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
16 module:hook("iq/self/jabber:iq:private:query", function(event)
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
17 local origin, stanza = event.origin, event.stanza;
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
18 local query = stanza.tags[1];
6341
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
19 if #query.tags ~= 1 then
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
20 return origin.send(st.error_reply(stanza, "modify", "bad-format"));
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
21 end
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
22 local tag = query.tags[1];
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
23 local key = tag.name..":"..tag.attr.xmlns;
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
24 if stanza.attr.type == "get" then
6343
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
25 local data, err = private_storage:get(origin.username, key);
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
26 if data then
6341
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
27 return origin.send(st.reply(stanza):query("jabber:iq:private"):add_child(st.deserialize(data)));
6343
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
28 elseif err then
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
29 return origin.send(st.error_reply(stanza, "wait", "internal-server-error", err));
6341
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
30 else
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
31 return origin.send(st.reply(stanza):add_child(query));
3522
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
32 end
6341
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
33 else -- type == set
6343
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
34 local data;
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
35 if #tag ~= 0 then
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
36 data = st.preserialize(tag);
185
a67c88ce1c6a Added support for XEP-0049: Private XML Storage (mod_private)
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
37 end
6341
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
38 -- TODO delete datastore if empty
6343
e6839156bb82 mod_private: Use map store
Kim Alvefur <zash@zash.se>
parents: 6341
diff changeset
39 local ok, err = private_storage:set(origin.username, key, data);
6341
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
40 if not ok then
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
41 return origin.send(st.error_reply(stanza, "wait", "internal-server-error", err));
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
42 end
ab9a1af80632 mod_private: Cleanup and more tailcalls
Kim Alvefur <zash@zash.se>
parents: 5776
diff changeset
43 return origin.send(st.reply(stanza));
3522
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
44 end
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
45 end);