Mercurial > prosody-modules
annotate mod_muc_defaults/mod_muc_defaults.lua @ 4980:da151f9af861
replaced 'session' with 'origin' in push_disable
session is not defined in this function, trying to access it
leads to an error.
The correct reference seems to be 'origin'.
(This may have come about by copying from the similar
code in process_stanza_queue.)
| author | arcseconds |
|---|---|
| date | Sat, 30 Jul 2022 21:07:47 +1200 |
| 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 |
