Comparison

plugins/mod_announce.lua @ 12802:4a8740e01813

Merge 0.12->trunk
author Kim Alvefur <zash@zash.se>
date Mon, 12 Dec 2022 07:10:54 +0100
parent 12642:9061f9621330
child 12977:74b9e05af71e
comparison
equal deleted inserted replaced
12801:ebd6b4d8bf04 12802:4a8740e01813
7 -- 7 --
8 8
9 local st, jid = require "util.stanza", require "util.jid"; 9 local st, jid = require "util.stanza", require "util.jid";
10 10
11 local hosts = prosody.hosts; 11 local hosts = prosody.hosts;
12 local is_admin = require "core.usermanager".is_admin;
13 12
14 function send_to_online(message, host) 13 function send_to_online(message, host)
15 local sessions; 14 local sessions;
16 if host then 15 if host then
17 sessions = { [host] = hosts[host] }; 16 sessions = { [host] = hosts[host] };
32 end 31 end
33 32
34 return c; 33 return c;
35 end 34 end
36 35
36 module:default_permission("prosody:admin", ":send-announcement");
37 37
38 -- Old <message>-based jabberd-style announcement sending 38 -- Old <message>-based jabberd-style announcement sending
39 function handle_announcement(event) 39 function handle_announcement(event)
40 local stanza = event.stanza; 40 local stanza = event.stanza;
41 -- luacheck: ignore 211/node 41 -- luacheck: ignore 211/node
43 43
44 if resource ~= "announce/online" then 44 if resource ~= "announce/online" then
45 return; -- Not an announcement 45 return; -- Not an announcement
46 end 46 end
47 47
48 if not is_admin(stanza.attr.from, host) then 48 if not module:may(":send-announcement", event) then
49 -- Not an admin? Not allowed! 49 -- Not allowed!
50 module:log("warn", "Non-admin '%s' tried to send server announcement", stanza.attr.from); 50 module:log("warn", "Non-admin '%s' tried to send server announcement", stanza.attr.from);
51 return; 51 return;
52 end 52 end
53 53
54 module:log("info", "Sending server announcement to all online users"); 54 module:log("info", "Sending server announcement to all online users");