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; |