comparison mod_broadcast/mod_broadcast.lua @ 786:e318a341d332

mod_broadcast: New module to set up a component that forwards received messages to all online users (similar to Openfire's broadcast module) (thanks Yann Verry)
author Matthew Wild <mwild1@gmail.com>
date Tue, 07 Aug 2012 15:51:15 +0100
parents
children 0fc9e1f086c1
comparison
equal deleted inserted replaced
785:e781e63a49f4 786:e318a341d332
1 local allowed_senders = module:get_option_set("broadcast_senders", {});
2
3 local jid_bare = require "util.jid".bare;
4
5 function send_to_online(message)
6 local c = 0;
7 for hostname, host_session in pairs(hosts) do
8 if host_session.sessions then
9 for username in pairs(host_session.sessions) do
10 c = c + 1;
11 message.attr.to = username.."@"..hostname;
12 module:send(message);
13 end
14 end
15 end
16 return c;
17 end
18
19 function send_message(event)
20 local stanza = event.stanza;
21 if allowed_senders:contains(jid_bare(stanza.attr.from)) then
22 local c = send_to_online(stanza);
23 module:log("debug", "Broadcast stanza from %s to %d online users", stanza.attr.from, c);
24 return true;
25 else
26 module:log("warn", "Broadcasting is not allowed for %s", stanza.attr.from);
27 end
28 end
29
30 module:hook("message/bare", send_message);