From b3a29058496397a411eaff462644f1a83922e5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B0=D0=BC=D1=8F=D0=BD=20=D0=9C=D0=B8=D0=BD=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Fri, 3 Jul 2020 08:26:44 -0500 Subject: [PATCH] feat: Sends json messages notifying for lobby actions. (#7209) * feat: Sends json messages notifying for lobby actions. * squash: Fixes quotes to be consistent. * fix: Fixes attempt to call global 'formdecode' (a nil value). --- .../prosody-plugins/mod_muc_lobby_rooms.lua | 113 ++++++++++++++---- 1 file changed, 88 insertions(+), 25 deletions(-) diff --git a/resources/prosody-plugins/mod_muc_lobby_rooms.lua b/resources/prosody-plugins/mod_muc_lobby_rooms.lua index 964ec9cf5..024bf7c6b 100644 --- a/resources/prosody-plugins/mod_muc_lobby_rooms.lua +++ b/resources/prosody-plugins/mod_muc_lobby_rooms.lua @@ -16,23 +16,29 @@ -- muc_room_default_public_jids = true -- -- we use async to detect Prosody 0.10 and earlier -local have_async = pcall(require, "util.async"); +local have_async = pcall(require, 'util.async'); if not have_async then - module:log("warn", "Lobby rooms will not work with Prosody version 0.10 or less."); + module:log('warn', 'Lobby rooms will not work with Prosody version 0.10 or less.'); return; end +local formdecode = require "util.http".formdecode; local jid_split = require 'util.jid'.split; local jid_bare = require 'util.jid'.bare; +local json = require 'util.json'; local filters = require 'util.filters'; local st = require 'util.stanza'; local MUC_NS = 'http://jabber.org/protocol/muc'; local DISCO_INFO_NS = 'http://jabber.org/protocol/disco#info'; local DISPLAY_NAME_REQUIRED_FEATURE = 'http://jitsi.org/protocol/lobbyrooms#displayname_required'; local LOBBY_IDENTITY_TYPE = 'lobbyrooms'; +local NOTIFY_JSON_MESSAGE_TYPE = 'lobby-notify'; +local NOTIFY_LOBBY_ENABLED = 'LOBBY-ENABLED'; +local NOTIFY_LOBBY_ACCESS_GRANTED = 'LOBBY-ACCESS-GRANTED'; +local NOTIFY_LOBBY_ACCESS_DENIED = 'LOBBY-ACCESS-DENIED'; -local is_healthcheck_room = module:require "util".is_healthcheck_room; +local is_healthcheck_room = module:require 'util'.is_healthcheck_room; local main_muc_component_config = module:get_option_string('main_muc'); if main_muc_component_config == nil then @@ -48,23 +54,23 @@ end local whitelist; local check_display_name_required; local function load_config() - whitelist = module:get_option_set("muc_lobby_whitelist", {}); + whitelist = module:get_option_set('muc_lobby_whitelist', {}); check_display_name_required - = module:get_option_boolean("muc_lobby_check_display_name_required", true); + = module:get_option_boolean('muc_lobby_check_display_name_required', true); end load_config(); local lobby_muc_service; local main_muc_service; --- Checks whether there is self-status 110 of the