Mercurial > prosody-modules
annotate mod_broadcast/mod_broadcast.lua @ 5416:2393dbae51ed
mod_http_oauth2: Add option for specifying TTL of registered clients
Meant to simplify configuration, since TTL vs ignoring expiration is
expected to be the main thing one would want to configure.
Unsure what the implications of having unlimited lifetime of clients
are, given no way to revoke them currently, short of rotating the
signing secret.
On one hand, it would be annoying to have the client expire.
On the other hand, it is trivial to re-register it.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 04 May 2023 18:41:33 +0200 |
parents | 9f7c97e55593 |
children |
rev | line source |
---|---|
1015
0fc9e1f086c1
mod_broadcast: Allow admins to broadcast
Matthew Wild <mwild1@gmail.com>
parents:
786
diff
changeset
|
1 local is_admin = require "core.usermanager".is_admin; |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 local allowed_senders = module:get_option_set("broadcast_senders", {}); |
1016
9f7c97e55593
mod_broadcast: Allow overriding from address on the broadcast stanza
Matthew Wild <mwild1@gmail.com>
parents:
1015
diff
changeset
|
3 local from_address = module:get_option_string("broadcast_from"); |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 local jid_bare = require "util.jid".bare; |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 function send_to_online(message) |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 local c = 0; |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 for hostname, host_session in pairs(hosts) do |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 if host_session.sessions then |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 for username in pairs(host_session.sessions) do |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 c = c + 1; |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 message.attr.to = username.."@"..hostname; |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 module:send(message); |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 end |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 end |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 end |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 return c; |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 end |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 function send_message(event) |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 local stanza = event.stanza; |
1015
0fc9e1f086c1
mod_broadcast: Allow admins to broadcast
Matthew Wild <mwild1@gmail.com>
parents:
786
diff
changeset
|
23 local from = stanza.attr.from; |
0fc9e1f086c1
mod_broadcast: Allow admins to broadcast
Matthew Wild <mwild1@gmail.com>
parents:
786
diff
changeset
|
24 if is_admin(from) or allowed_senders:contains(jid_bare(from)) then |
1016
9f7c97e55593
mod_broadcast: Allow overriding from address on the broadcast stanza
Matthew Wild <mwild1@gmail.com>
parents:
1015
diff
changeset
|
25 if from_address then |
9f7c97e55593
mod_broadcast: Allow overriding from address on the broadcast stanza
Matthew Wild <mwild1@gmail.com>
parents:
1015
diff
changeset
|
26 stanza = st.clone(stanza); |
9f7c97e55593
mod_broadcast: Allow overriding from address on the broadcast stanza
Matthew Wild <mwild1@gmail.com>
parents:
1015
diff
changeset
|
27 stanza.attr.from = from_address; |
9f7c97e55593
mod_broadcast: Allow overriding from address on the broadcast stanza
Matthew Wild <mwild1@gmail.com>
parents:
1015
diff
changeset
|
28 end |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 local c = send_to_online(stanza); |
1015
0fc9e1f086c1
mod_broadcast: Allow admins to broadcast
Matthew Wild <mwild1@gmail.com>
parents:
786
diff
changeset
|
30 module:log("debug", "Broadcast stanza from %s to %d online users", from, c); |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 return true; |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 else |
1015
0fc9e1f086c1
mod_broadcast: Allow admins to broadcast
Matthew Wild <mwild1@gmail.com>
parents:
786
diff
changeset
|
33 module:log("warn", "Broadcasting is not allowed for %s", from); |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 end |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 end |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 |
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)
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 module:hook("message/bare", send_message); |