Annotate

plugins/mod_private.lua @ 5666:c1e1b265ee82

Merge 0.9->trunk
author Kim Alvefur <zash@zash.se>
date Mon, 10 Jun 2013 14:37:02 +0200
parent 5500:eeea0eb2602a
child 5776:bd0ff8ae98a8
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
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 438
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
5500
eeea0eb2602a mod_auth_internal_hashed, mod_auth_internal_plain, mod_privacy, mod_private, mod_register, mod_vcard, mod_muc: Use module:open_store()
Kim Alvefur <zash@zash.se>
parents: 5371
diff changeset
12 local private_storage = module:open_store();
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 type = stanza.attr.type;
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
19 local query = stanza.tags[1];
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
20 if #query.tags == 1 then
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
21 local tag = query.tags[1];
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
22 local key = tag.name..":"..tag.attr.xmlns;
5500
eeea0eb2602a mod_auth_internal_hashed, mod_auth_internal_plain, mod_privacy, mod_private, mod_register, mod_vcard, mod_muc: Use module:open_store()
Kim Alvefur <zash@zash.se>
parents: 5371
diff changeset
23 local data, err = private_storage:get(origin.username);
3522
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
24 if err then
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
25 origin.send(st.error_reply(stanza, "wait", "internal-server-error"));
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
26 return true;
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
27 end
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
28 if stanza.attr.type == "get" then
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
29 if data and data[key] then
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
30 origin.send(st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"}):add_child(st.deserialize(data[key])));
185
a67c88ce1c6a Added support for XEP-0049: Private XML Storage (mod_private)
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
31 else
3522
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
32 origin.send(st.reply(stanza):add_child(stanza.tags[1]));
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
33 end
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
34 else -- set
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
35 if not data then data = {}; end;
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
36 if #tag == 0 then
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
37 data[key] = nil;
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
38 else
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
39 data[key] = st.preserialize(tag);
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
40 end
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
41 -- TODO delete datastore if empty
5500
eeea0eb2602a mod_auth_internal_hashed, mod_auth_internal_plain, mod_privacy, mod_private, mod_register, mod_vcard, mod_muc: Use module:open_store()
Kim Alvefur <zash@zash.se>
parents: 5371
diff changeset
42 if private_storage:set(origin.username, data) then
3522
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
43 origin.send(st.reply(stanza));
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
44 else
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
45 origin.send(st.error_reply(stanza, "wait", "internal-server-error"));
185
a67c88ce1c6a Added support for XEP-0049: Private XML Storage (mod_private)
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
46 end
a67c88ce1c6a Added support for XEP-0049: Private XML Storage (mod_private)
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
47 end
3522
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
48 else
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
49 origin.send(st.error_reply(stanza, "modify", "bad-format"));
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
50 end
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
51 return true;
4646b5b039ca mod_private: Updated to use the new events API. Smaller, more robust.
Waqas Hussain <waqas20@gmail.com>
parents: 3114
diff changeset
52 end);