Software /
code /
prosody
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"); |