Software /
code /
prosody-modules
Diff
mod_privilege/mod_privilege.lua @ 1664:6bdcb1418029
mod_privilege: implemented "managed_entity" presence
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 07 Apr 2015 12:47:47 +0200 |
parent | 1663:ca07a6ada631 |
child | 1665:746d94f37a4c |
line wrap: on
line diff
--- a/mod_privilege/mod_privilege.lua Tue Apr 07 12:46:34 2015 +0200 +++ b/mod_privilege/mod_privilege.lua Tue Apr 07 12:47:47 2015 +0200 @@ -287,3 +287,22 @@ return true end); + + +--> presence permission <-- + +module:hook("presence/bare", function(event) + if presence_man_ent:empty() then return; end + local session, stanza = event.origin, event.stanza; + if stanza.attr.to then return; end + if stanza.attr.type == nil or stanza.attr.type == "unavailable" then + for entity in presence_man_ent:items() do + if stanza.attr.from ~= entity then + presence_fwd = st.clone(stanza) + presence_fwd.attr.to = entity + module:log("debug", "presence forwarded to "..entity..": "..tostring(presence_fwd)) + prosody.core_route_stanza(nil, presence_fwd) + end + end + end +end, 150);