Mercurial > prosody-modules
annotate mod_broadcast/mod_broadcast.lua @ 5519:83ebfc367169
mod_http_oauth2: Return Authentication Time per OpenID Core Section 2
Mandatory To Implement, either MUST include or OPTIONAL depending on
things we don't look at, so might as well include it all the time.
Since we do not persist authentication state with cookies or such, the
authentication time will always be some point between the user being
sent to the authorization endpoint and the time they are sent back to
the client application.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 05 Jun 2023 22:32:44 +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); |