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"); |