1232
|
1 |
|
|
2 |
local full_sessions = full_sessions; |
|
3 |
local bare_sessions = bare_sessions; |
|
4 |
|
|
5 |
local jid_bare = require "util.jid".bare; |
|
6 |
local user_exists = require "core.usermanager".user_exists; |
|
7 |
|
|
8 |
module:hook("message/full", function(data) |
|
9 |
-- message to full JID recieved |
|
10 |
local origin, stanza = data.origin, data.stanza; |
|
11 |
|
|
12 |
local session = full_sessions[stanza.attr.to]; |
|
13 |
if session then |
|
14 |
-- TODO fire post processing event |
|
15 |
session.send(stanza); |
|
16 |
return true; |
|
17 |
else -- resource not online |
|
18 |
-- TODO fire event to send to bare JID |
|
19 |
end |
|
20 |
end); |
|
21 |
|
|
22 |
module:hook("message/bare", function(data) |
|
23 |
-- message to bare JID recieved |
|
24 |
local origin, stanza = data.origin, data.stanza; |
|
25 |
|
|
26 |
local sessions = bare_sessoins[stanza.attr.to]; |
|
27 |
if sessions then sessions = sessions.sessions; end |
|
28 |
|
|
29 |
if sessions then |
|
30 |
-- some resources are online |
|
31 |
-- TODO find top resources willing to accept this message |
|
32 |
-- TODO then send them each the stanza |
|
33 |
else |
|
34 |
-- no resources are online |
|
35 |
-- TODO check if the user exists |
|
36 |
-- TODO if it doesn't, return an error reply |
|
37 |
-- TODO otherwise, apply the default privacy list |
|
38 |
-- TODO and store into offline storage |
|
39 |
-- TODO or maybe the offline store can apply privacy lists |
|
40 |
end |
|
41 |
end); |