Comparison

mod_broadcast/mod_broadcast.lua @ 1015:0fc9e1f086c1

mod_broadcast: Allow admins to broadcast
author Matthew Wild <mwild1@gmail.com>
date Sun, 19 May 2013 22:09:54 +0100
parent 786:e318a341d332
child 1016:9f7c97e55593
comparison
equal deleted inserted replaced
1014:ed7431fd3b47 1015:0fc9e1f086c1
1 local is_admin = require "core.usermanager".is_admin;
1 local allowed_senders = module:get_option_set("broadcast_senders", {}); 2 local allowed_senders = module:get_option_set("broadcast_senders", {});
2 3
3 local jid_bare = require "util.jid".bare; 4 local jid_bare = require "util.jid".bare;
4 5
5 function send_to_online(message) 6 function send_to_online(message)
16 return c; 17 return c;
17 end 18 end
18 19
19 function send_message(event) 20 function send_message(event)
20 local stanza = event.stanza; 21 local stanza = event.stanza;
21 if allowed_senders:contains(jid_bare(stanza.attr.from)) then 22 local from = stanza.attr.from;
23 if is_admin(from) or allowed_senders:contains(jid_bare(from)) then
22 local c = send_to_online(stanza); 24 local c = send_to_online(stanza);
23 module:log("debug", "Broadcast stanza from %s to %d online users", stanza.attr.from, c); 25 module:log("debug", "Broadcast stanza from %s to %d online users", from, c);
24 return true; 26 return true;
25 else 27 else
26 module:log("warn", "Broadcasting is not allowed for %s", stanza.attr.from); 28 module:log("warn", "Broadcasting is not allowed for %s", from);
27 end 29 end
28 end 30 end
29 31
30 module:hook("message/bare", send_message); 32 module:hook("message/bare", send_message);