Software /
code /
prosody
Comparison
plugins/mod_message.lua @ 1272:28f9041d8c55
mod_message: Added code to handle error groupchat and headline messages to bare JID
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Mon, 01 Jun 2009 17:52:02 +0500 |
parent | 1271:e78c161944ab |
child | 1274:50babb72edac |
comparison
equal
deleted
inserted
replaced
1271:e78c161944ab | 1272:28f9041d8c55 |
---|---|
5 local jid_bare = require "util.jid".bare; | 5 local jid_bare = require "util.jid".bare; |
6 local user_exists = require "core.usermanager".user_exists; | 6 local user_exists = require "core.usermanager".user_exists; |
7 | 7 |
8 local function process_to_bare(bare, origin, stanza) | 8 local function process_to_bare(bare, origin, stanza) |
9 local sessions = bare_sessions[bare]; | 9 local sessions = bare_sessions[bare]; |
10 if sessions then sessions = sessions.sessions; end | |
11 | 10 |
11 local t = stanza.attr.type; | |
12 if t == "error" then return true; end | |
13 if t == "groupchat" then | |
14 origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); | |
15 return true; | |
16 end | |
17 | |
12 if sessions then | 18 if sessions then |
13 -- some resources are online | 19 -- some resources are connected |
20 sessions = sessions.sessions; | |
21 | |
22 if t == "headline" then | |
23 for _, session in pairs(sessions) do | |
24 if session.presence and session.priority >= 0 then | |
25 session.send(stanza); | |
26 end | |
27 end | |
28 return true; | |
29 end | |
14 -- TODO find top resources willing to accept this message | 30 -- TODO find top resources willing to accept this message |
15 -- TODO then send them each the stanza | 31 -- TODO then send them each the stanza |
16 else | 32 return; |
17 -- no resources are online | |
18 -- TODO check if the user exists | |
19 -- TODO if it doesn't, return an error reply | |
20 -- TODO otherwise, apply the default privacy list | |
21 -- TODO and store into offline storage | |
22 -- TODO or maybe the offline store can apply privacy lists | |
23 end | 33 end |
34 -- no resources are online | |
35 if t == "headline" then return true; end -- current policy is to discard headlines | |
36 -- chat or normal message | |
37 -- TODO check if the user exists | |
38 -- TODO if it doesn't, return an error reply | |
39 -- TODO otherwise, apply the default privacy list | |
40 -- TODO and store into offline storage | |
41 -- TODO or maybe the offline store can apply privacy lists | |
24 end | 42 end |
25 | 43 |
26 module:hook("message/full", function(data) | 44 module:hook("message/full", function(data) |
27 -- message to full JID recieved | 45 -- message to full JID recieved |
28 local origin, stanza = data.origin, data.stanza; | 46 local origin, stanza = data.origin, data.stanza; |