Annotate

mod_muc_defaults/mod_muc_defaults.lua @ 3587:c24d43ababc6

mod_storage_xmlarchive: Try harder to limit range of time to check Fixes read of entire index in case where the time range is outside the range present in the archive.
author Kim Alvefur <zash@zash.se>
date Tue, 07 May 2019 17:10:07 +0200
parent 3586:796b29911747
child 3623:da2d58208574
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
18 if config.allow_member_invites ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
19 should_save =
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
20 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
21 or should_save;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
22 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
23 if config.change_subject ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
24 should_save =
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
25 room:set_changesubject(config.change_subject)
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
26 or should_save;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
27 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
28 if config.history_length ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
29 should_save =
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
30 room:set_historylength(config.history_length)
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
31 or should_save;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
32 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
33 if config.lang ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
34 should_save = room:set_language(config.language) or should_save;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
35 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
36 if config.members_only ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
37 should_save =
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
38 room:set_members_only(config.members_only)
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
39 or should_save;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
40 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
41 if config.moderated ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
42 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
43 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
44 if config.persistent ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
45 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
46 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
47 if config.public ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
48 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
49 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
50 if config.public_jids ~= nil then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
51 should_save =
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
52 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
53 or should_save;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
54 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
55 if config.logging ~= room._data.logging then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
56 room._data.logging = config.logging;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
57 should_save = true;
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 should_save then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
60 room:save(true);
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
61 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
62 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
63
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
64
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
65 local i, room_data;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
66 for i, room_data in pairs(params) do
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
67 local host = module.host;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
68 local room_jid = room_data.jid_node.."@"..host;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
69 local mod_muc = prosody.hosts[host].modules.muc;
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
70 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
71 if not room then
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
72 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
73 -- 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
74 room = mod_muc.create_room(room_jid);
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
75 else
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
76 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
77 end
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
78 configure_room(room, room_data.config);
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
79 set_affiliations(room, room_data.affiliations);
796b29911747 mod_muc_defaults: Create MUCs from config
JC Brand <jc@opkode.com>
parents:
diff changeset
80 end