Mercurial > prosody-hg
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; |
