comparison plugins/muc/mod_muc.lua @ 10411:db2a06b9ff98

Merge 0.11->trunk
author Kim Alvefur <zash@zash.se>
date Sat, 16 Nov 2019 16:52:31 +0100
parents 5611c939743a
children 2e36a54906e4
comparison
equal deleted inserted replaced
10410:659b577f280c 10411:db2a06b9ff98
84 local register = module:require "muc/register"; 84 local register = module:require "muc/register";
85 room_mt.get_registered_nick = register.get_registered_nick; 85 room_mt.get_registered_nick = register.get_registered_nick;
86 room_mt.get_registered_jid = register.get_registered_jid; 86 room_mt.get_registered_jid = register.get_registered_jid;
87 room_mt.handle_register_iq = register.handle_register_iq; 87 room_mt.handle_register_iq = register.handle_register_iq;
88 88
89 local presence_broadcast = module:require "muc/presence_broadcast";
90 room_mt.get_presence_broadcast = presence_broadcast.get;
91 room_mt.set_presence_broadcast = presence_broadcast.set;
92 room_mt.get_valid_broadcast_roles = presence_broadcast.get_valid_broadcast_roles;
93
94
89 local jid_split = require "util.jid".split; 95 local jid_split = require "util.jid".split;
96 local jid_prep = require "util.jid".prep;
90 local jid_bare = require "util.jid".bare; 97 local jid_bare = require "util.jid".bare;
91 local st = require "util.stanza"; 98 local st = require "util.stanza";
92 local cache = require "util.cache"; 99 local cache = require "util.cache";
93 local um_is_admin = require "core.usermanager".is_admin; 100 local um_is_admin = require "core.usermanager".is_admin;
94 101
261 room:set_whois(module:get_option_boolean("muc_room_default_public_jids", 268 room:set_whois(module:get_option_boolean("muc_room_default_public_jids",
262 room:get_whois() == "anyone") and "anyone" or "moderators"); 269 room:get_whois() == "anyone") and "anyone" or "moderators");
263 room:set_changesubject(module:get_option_boolean("muc_room_default_change_subject", room:get_changesubject())); 270 room:set_changesubject(module:get_option_boolean("muc_room_default_change_subject", room:get_changesubject()));
264 room:set_historylength(module:get_option_number("muc_room_default_history_length", room:get_historylength())); 271 room:set_historylength(module:get_option_number("muc_room_default_history_length", room:get_historylength()));
265 room:set_language(lang or module:get_option_string("muc_room_default_language")); 272 room:set_language(lang or module:get_option_string("muc_room_default_language"));
273 room:set_presence_broadcast(module:get_option("muc_room_default_presence_broadcast", room:get_presence_broadcast()));
266 end 274 end
267 275
268 function create_room(room_jid, config) 276 function create_room(room_jid, config)
277 if jid_bare(room_jid) ~= room_jid or not jid_prep(room_jid, true) then
278 return nil, "invalid-jid";
279 end
269 local exists = get_room_from_jid(room_jid); 280 local exists = get_room_from_jid(room_jid);
270 if exists then 281 if exists then
271 return nil, "room-exists"; 282 return nil, "room-exists";
272 end 283 end
273 local room = muclib.new_room(room_jid, config); 284 local room = muclib.new_room(room_jid, config);
451 end 462 end
452 end 463 end
453 464
454 if room == nil then 465 if room == nil then
455 -- Watch presence to create rooms 466 -- Watch presence to create rooms
456 if stanza.attr.type == nil and stanza.name == "presence" then 467 if not jid_prep(room_jid, true) then
468 origin.send(st.error_reply(stanza, "modify", "jid-malformed"));
469 return true;
470 end
471 if stanza.attr.type == nil and stanza.name == "presence" and stanza:get_child("x", "http://jabber.org/protocol/muc") then
457 room = muclib.new_room(room_jid); 472 room = muclib.new_room(room_jid);
458 return room:handle_first_presence(origin, stanza); 473 return room:handle_first_presence(origin, stanza);
459 elseif stanza.attr.type ~= "error" then 474 elseif stanza.attr.type ~= "error" then
460 origin.send(st.error_reply(stanza, "cancel", "item-not-found")); 475 origin.send(st.error_reply(stanza, "cancel", "item-not-found"));
461 return true; 476 return true;