Mercurial > prosody-modules
view mod_roster_allinall/mod_roster_allinall.lua @ 1594:620cc035ae1e
mod_admin_message: New IM-based administration console
This module provides a console over XMPP.
All the commands of the mod_admin_telnet module are available to Prosody admins
from an XMPP client.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Sun, 25 Jan 2015 19:52:39 +0100 |
parents | a104a159697d |
children | 3ae8c81a348b |
line wrap: on
line source
local rostermanager = require"core.rostermanager"; local jid_join = require"util.jid".join; local jid_split = require"util.jid".split; local host = module.host; local sessions = hosts[host].sessions; -- Make a *one-way* subscription. User will see when contact is online, -- contact will not see when user is online. local function subscribe(user, contact) local user_jid, contact_jid = jid_join(user, host), jid_join(contact, host); -- Update user's roster to say subscription request is pending... rostermanager.set_contact_pending_out(user, host, contact_jid); -- Update contact's roster to say subscription request is pending... rostermanager.set_contact_pending_in(contact, host, user_jid); -- Update contact's roster to say subscription request approved... rostermanager.subscribed(contact, host, user_jid); -- Update user's roster to say subscription request approved... rostermanager.process_inbound_subscription_approval(user, host, contact_jid); rostermanager.roster_push(user, host, contact_jid); rostermanager.roster_push(contact, host, user_jid); end module:hook("resource-bind", function(event) local session = event.session; local roster = session.roster; local user = session.username; local user_jid = jid_join(user, host); local contact_jid; for contact, contact_session in pairs(sessions) do if contact ~= user then contact_jid = jid_join(contact, host); if not rostermanager.is_contact_subscribed(user, host, contact_jid) then subscribe(contact, user); end if not rostermanager.is_contact_subscribed(contact, host, user_jid) then subscribe(user, contact); end end end end);