Mercurial > prosody-modules
annotate mod_muc_defaults/mod_muc_defaults.lua @ 5571:ca3c2d11823c
mod_pubsub_feeds: Track latest timestamp seen in feeds instead of last poll
This should ensure that an entry that has a publish timestmap after the
previously oldest post, but before the time of the last poll check, is
published to the node.
Previously if an entry would be skipped if it was published at 13:00
with a timestamp of 12:30, where the last poll was at 12:45.
For feeds that lack a timestamp, it now looks for the first post that is
not published, assuming that the feed is in reverse chronological order,
then iterates back up from there.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 25 Jun 2023 16:27:55 +0200 |
parents | a81516906822 |
children |
rev | line source |
---|---|
3586
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
1 local log = module._log; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
2 local params = module:get_option("default_mucs", {}); |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
3 local jid_bare = require "util.jid".bare; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
4 |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
5 |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
6 local function set_affiliations(room, affiliations) |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
7 for affiliation, jids in pairs(affiliations) do |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
8 for i, jid in pairs(jids) do |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
9 module:log("debug", "Setting affiliation %s for jid %s", affiliation, jid); |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
10 room:set_affiliation(true, jid_bare(jid), affiliation); |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
11 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
12 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
13 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
14 |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
15 |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
16 local function configure_room(room, config) |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
17 local should_save = false; |
3623
da2d58208574
mod_muc_defaults: Allow setting of `name` and `description
JC Brand <jc@opkode.com>
parents:
3586
diff
changeset
|
18 if config.name ~= nil then |
da2d58208574
mod_muc_defaults: Allow setting of `name` and `description
JC Brand <jc@opkode.com>
parents:
3586
diff
changeset
|
19 should_save = room:set_name(config.name) or should_save; |
da2d58208574
mod_muc_defaults: Allow setting of `name` and `description
JC Brand <jc@opkode.com>
parents:
3586
diff
changeset
|
20 end |
da2d58208574
mod_muc_defaults: Allow setting of `name` and `description
JC Brand <jc@opkode.com>
parents:
3586
diff
changeset
|
21 if config.description ~= nil then |
da2d58208574
mod_muc_defaults: Allow setting of `name` and `description
JC Brand <jc@opkode.com>
parents:
3586
diff
changeset
|
22 should_save = room:set_description(config.description) or should_save; |
da2d58208574
mod_muc_defaults: Allow setting of `name` and `description
JC Brand <jc@opkode.com>
parents:
3586
diff
changeset
|
23 end |
3586
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
24 if config.allow_member_invites ~= nil then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
25 should_save = |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
26 room:set_allow_member_invites(config.allow_member_invites) |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
27 or should_save; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
28 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
29 if config.change_subject ~= nil then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
30 should_save = |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
31 room:set_changesubject(config.change_subject) |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
32 or should_save; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
33 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
34 if config.history_length ~= nil then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
35 should_save = |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
36 room:set_historylength(config.history_length) |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
37 or should_save; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
38 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
39 if config.lang ~= nil then |
3623
da2d58208574
mod_muc_defaults: Allow setting of `name` and `description
JC Brand <jc@opkode.com>
parents:
3586
diff
changeset
|
40 should_save = room:set_language(config.lang) or should_save; |
3586
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
41 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
42 if config.members_only ~= nil then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
43 should_save = |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
44 room:set_members_only(config.members_only) |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
45 or should_save; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
46 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
47 if config.moderated ~= nil then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
48 should_save = room:set_moderated(config.moderated) or should_save; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
49 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
50 if config.persistent ~= nil then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
51 should_save = room:set_persistent(config.persistent) or should_save; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
52 end |
3975
d1bc50890343
muc_defaults: Add support for the presence_broadcast setting
JC Brand <jc@opkode.com>
parents:
3623
diff
changeset
|
53 if config.presence_broadcast ~= nil then |
d1bc50890343
muc_defaults: Add support for the presence_broadcast setting
JC Brand <jc@opkode.com>
parents:
3623
diff
changeset
|
54 should_save = room:set_presence_broadcast(config.presence_broadcast) or should_save; |
d1bc50890343
muc_defaults: Add support for the presence_broadcast setting
JC Brand <jc@opkode.com>
parents:
3623
diff
changeset
|
55 end |
3586
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
56 if config.public ~= nil then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
57 should_save = room:set_hidden(not config.public) or should_save; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
58 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
59 if config.public_jids ~= nil then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
60 should_save = |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
61 room:set_whois(config.public_jids and "anyone" or "moderators") |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
62 or should_save; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
63 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
64 if config.logging ~= room._data.logging then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
65 room._data.logging = config.logging; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
66 should_save = true; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
67 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
68 if should_save then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
69 room:save(true); |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
70 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
71 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
72 |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
73 |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
74 local i, room_data; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
75 for i, room_data in pairs(params) do |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
76 local host = module.host; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
77 local room_jid = room_data.jid_node.."@"..host; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
78 local mod_muc = prosody.hosts[host].modules.muc; |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
79 local room = mod_muc.get_room_from_jid(room_jid); |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
80 if not room then |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
81 module:log("debug", "Creating new room %s", room_jid); |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
82 -- We don't pass in the config, so that the default config is set first. |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
83 room = mod_muc.create_room(room_jid); |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
84 else |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
85 module:log("debug", "Configuring already existing room %s", room_jid); |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
86 end |
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
87 configure_room(room, room_data.config); |
4420
a81516906822
mod_muc_defaults: handle case where affiliations are unset
Jonas Schäfer <jonas@wielicki.name>
parents:
3975
diff
changeset
|
88 if room_data.affiliations then |
a81516906822
mod_muc_defaults: handle case where affiliations are unset
Jonas Schäfer <jonas@wielicki.name>
parents:
3975
diff
changeset
|
89 set_affiliations(room, room_data.affiliations); |
a81516906822
mod_muc_defaults: handle case where affiliations are unset
Jonas Schäfer <jonas@wielicki.name>
parents:
3975
diff
changeset
|
90 end |
3586
796b29911747
mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff
changeset
|
91 end |