Software /
code /
prosody
Comparison
plugins/mod_private.lua @ 310:b28b51746fe7
Fixed mod_private to use session.send for sending stanzas
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Sun, 16 Nov 2008 04:39:48 +0500 |
parent | 185:a67c88ce1c6a |
child | 421:63be85693710 |
comparison
equal
deleted
inserted
replaced
309:d9c8825b7332 | 310:b28b51746fe7 |
---|---|
1 | 1 |
2 local st = require "util.stanza" | 2 local st = require "util.stanza" |
3 local send = require "core.sessionmanager".send_to_session | |
4 | 3 |
5 local jid_split = require "util.jid".split; | 4 local jid_split = require "util.jid".split; |
6 local datamanager = require "util.datamanager" | 5 local datamanager = require "util.datamanager" |
7 | 6 |
8 add_iq_handler("c2s", "jabber:iq:private", | 7 add_iq_handler("c2s", "jabber:iq:private", |
17 local tag = query.tags[1]; | 16 local tag = query.tags[1]; |
18 local key = tag.name..":"..tag.attr.xmlns; | 17 local key = tag.name..":"..tag.attr.xmlns; |
19 local data = datamanager.load(node, host, "private"); | 18 local data = datamanager.load(node, host, "private"); |
20 if stanza.attr.type == "get" then | 19 if stanza.attr.type == "get" then |
21 if data and data[key] then | 20 if data and data[key] then |
22 send(session, st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"}):add_child(st.deserialize(data[key]))); | 21 session.send(st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"}):add_child(st.deserialize(data[key]))); |
23 else | 22 else |
24 send(session, st.reply(stanza):add_child(stanza.tags[1])); | 23 session.send(st.reply(stanza):add_child(stanza.tags[1])); |
25 end | 24 end |
26 else -- set | 25 else -- set |
27 if not data then data = {}; end; | 26 if not data then data = {}; end; |
28 if #tag == 0 then | 27 if #tag == 0 then |
29 data[key] = nil; | 28 data[key] = nil; |
30 else | 29 else |
31 data[key] = st.preserialize(tag); | 30 data[key] = st.preserialize(tag); |
32 end | 31 end |
33 -- TODO delete datastore if empty | 32 -- TODO delete datastore if empty |
34 if datamanager.store(node, host, "private", data) then | 33 if datamanager.store(node, host, "private", data) then |
35 send(session, st.reply(stanza)); | 34 session.send(st.reply(stanza)); |
36 else | 35 else |
37 send(session, st.error_reply(stanza, "wait", "internal-server-error")); | 36 session.send(st.error_reply(stanza, "wait", "internal-server-error")); |
38 end | 37 end |
39 end | 38 end |
40 else | 39 else |
41 send(session, st.error_reply(stanza, "modify", "bad-format")); | 40 session.send(st.error_reply(stanza, "modify", "bad-format")); |
42 end | 41 end |
43 else | 42 else |
44 send(session, st.error_reply(stanza, "cancel", "forbidden")); | 43 session.send(st.error_reply(stanza, "cancel", "forbidden")); |
45 end | 44 end |
46 end | 45 end |
47 end); | 46 end); |