From fa801b4c92fd215e0eb28bc6a34ab4eac400d0d0 Mon Sep 17 00:00:00 2001 From: damencho Date: Fri, 21 Feb 2025 14:51:52 -0600 Subject: [PATCH] feat(prosody): Moves is_admin to util. --- resources/prosody-plugins/mod_filter_iq_rayo.lua | 6 +----- resources/prosody-plugins/mod_fmuc.lua | 6 +----- resources/prosody-plugins/mod_muc_allowners.lua | 6 +----- resources/prosody-plugins/mod_muc_flip.lua | 6 +----- resources/prosody-plugins/mod_muc_meeting_id.lua | 6 +----- resources/prosody-plugins/mod_muc_wait_for_host.lua | 6 +----- resources/prosody-plugins/mod_speakerstats_component.lua | 6 +----- resources/prosody-plugins/mod_token_verification.lua | 8 +++----- resources/prosody-plugins/mod_visitors.lua | 6 +----- resources/prosody-plugins/mod_visitors_component.lua | 6 +----- resources/prosody-plugins/util.lib.lua | 6 ++++++ 11 files changed, 18 insertions(+), 50 deletions(-) diff --git a/resources/prosody-plugins/mod_filter_iq_rayo.lua b/resources/prosody-plugins/mod_filter_iq_rayo.lua index add3de112642..ea6d523f8bd2 100644 --- a/resources/prosody-plugins/mod_filter_iq_rayo.lua +++ b/resources/prosody-plugins/mod_filter_iq_rayo.lua @@ -5,6 +5,7 @@ local jid = require "util.jid"; local token_util = module:require "token/util".new(module); local util = module:require 'util'; +local is_admin = util.is_admin; local room_jid_match_rewrite = util.room_jid_match_rewrite; local is_feature_allowed = util.is_feature_allowed; local is_sip_jigasi = util.is_sip_jigasi; @@ -38,11 +39,6 @@ local is_visitor_prosody = main_domain ~= nil; -- this is the main virtual host of this vnode local local_domain = module:get_option_string('muc_mapper_domain_base'); -local um_is_admin = require 'core.usermanager'.is_admin; -local function is_admin(jid) - return um_is_admin(jid, module.host); -end - -- The maximum number of simultaneous calls, -- and also the maximum number of new calls per minute that a session is allowed to create. local limit_outgoing_calls; diff --git a/resources/prosody-plugins/mod_fmuc.lua b/resources/prosody-plugins/mod_fmuc.lua index 384586aeb018..5efe0bf0fc2f 100644 --- a/resources/prosody-plugins/mod_fmuc.lua +++ b/resources/prosody-plugins/mod_fmuc.lua @@ -18,6 +18,7 @@ local array = require 'util.array'; local set = require 'util.set'; local util = module:require 'util'; +local is_admin = util.is_admin; local ends_with = util.ends_with; local is_vpaas = util.is_vpaas; local room_jid_match_rewrite = util.room_jid_match_rewrite; @@ -63,11 +64,6 @@ local sent_iq_cache = require 'util.cache'.new(200); local sessions = prosody.full_sessions; -local um_is_admin = require 'core.usermanager'.is_admin; -local function is_admin(jid) - return um_is_admin(jid, module.host); -end - local function send_transcriptions_update(room) -- let's notify main prosody local lang_array = array(); diff --git a/resources/prosody-plugins/mod_muc_allowners.lua b/resources/prosody-plugins/mod_muc_allowners.lua index b8df9ff832d4..6e4ab743b91a 100644 --- a/resources/prosody-plugins/mod_muc_allowners.lua +++ b/resources/prosody-plugins/mod_muc_allowners.lua @@ -3,8 +3,8 @@ local jid = require "util.jid"; local jid_bare = require "util.jid".bare; local jid_host = require "util.jid".host; local st = require "util.stanza"; -local um_is_admin = require "core.usermanager".is_admin; local util = module:require "util"; +local is_admin = util.is_admin; local is_healthcheck_room = util.is_healthcheck_room; local is_moderated = util.is_moderated; local get_room_from_jid = util.get_room_from_jid; @@ -18,10 +18,6 @@ local function load_config() end load_config(); -local function is_admin(_jid) - return um_is_admin(_jid, module.host); -end - -- List of the bare_jids of all occupants that are currently joining (went through pre-join) and will be promoted -- as moderators. As pre-join (where added) and joined event (where removed) happen one after another this list should -- have length of 1 diff --git a/resources/prosody-plugins/mod_muc_flip.lua b/resources/prosody-plugins/mod_muc_flip.lua index e59cfaae6882..d35716d16447 100644 --- a/resources/prosody-plugins/mod_muc_flip.lua +++ b/resources/prosody-plugins/mod_muc_flip.lua @@ -4,9 +4,9 @@ -- Copyright (C) 2023-present 8x8, Inc. local oss_util = module:require "util"; +local is_admin =oss_ util.is_admin; local is_healthcheck_room = oss_util.is_healthcheck_room; local process_host_module = oss_util.process_host_module; -local um_is_admin = require "core.usermanager".is_admin; local inspect = require('inspect'); local jid_bare = require "util.jid".bare; local jid = require "util.jid"; @@ -21,10 +21,6 @@ if lobby_muc_component_config == nil then return ; end -local function is_admin(occupant_jid) - return um_is_admin(occupant_jid, module.host); -end - local function remove_flip_tag(stanza) stanza:maptags(function(tag) if tag and tag.name == "flip_device" then diff --git a/resources/prosody-plugins/mod_muc_meeting_id.lua b/resources/prosody-plugins/mod_muc_meeting_id.lua index 736d283163be..32fa2e41e4f6 100644 --- a/resources/prosody-plugins/mod_muc_meeting_id.lua +++ b/resources/prosody-plugins/mod_muc_meeting_id.lua @@ -3,17 +3,13 @@ local json = require 'cjson.safe'; local queue = require "util.queue"; local uuid_gen = require "util.uuid".generate; local main_util = module:require "util"; +local is_admin = main_util.is_admin; local ends_with = main_util.ends_with; local get_room_from_jid = main_util.get_room_from_jid; local is_healthcheck_room = main_util.is_healthcheck_room; local internal_room_jid_match_rewrite = main_util.internal_room_jid_match_rewrite; local presence_check_status = main_util.presence_check_status; -local um_is_admin = require 'core.usermanager'.is_admin; -local function is_admin(jid) - return um_is_admin(jid, module.host); -end - local QUEUE_MAX_SIZE = 500; -- Common module for all logic that can be loaded under the conference muc component. diff --git a/resources/prosody-plugins/mod_muc_wait_for_host.lua b/resources/prosody-plugins/mod_muc_wait_for_host.lua index 042bf9e4aaad..b36810975d2e 100644 --- a/resources/prosody-plugins/mod_muc_wait_for_host.lua +++ b/resources/prosody-plugins/mod_muc_wait_for_host.lua @@ -6,9 +6,9 @@ -- the guest domain which is anonymous. -- The module has the option to set participants to moderators when connected via token/when they are authenticated -- This module depends on mod_persistent_lobby. -local um_is_admin = require 'core.usermanager'.is_admin; local jid = require 'util.jid'; local util = module:require "util"; +local is_admin = util.is_admin; local is_healthcheck_room = util.is_healthcheck_room; local is_moderated = util.is_moderated; local process_host_module = util.process_host_module; @@ -43,10 +43,6 @@ if not disable_auto_owners then end, 2); end -local function is_admin(jid) - return um_is_admin(jid, module.host); -end - -- if not authenticated user is trying to join the room we enable lobby in it -- and wait for the moderator to join module:hook('muc-occupant-pre-join', function (event) diff --git a/resources/prosody-plugins/mod_speakerstats_component.lua b/resources/prosody-plugins/mod_speakerstats_component.lua index 4dc91faab6ed..2e5e1c110a6c 100644 --- a/resources/prosody-plugins/mod_speakerstats_component.lua +++ b/resources/prosody-plugins/mod_speakerstats_component.lua @@ -1,4 +1,5 @@ local util = module:require "util"; +local is_admin = util.is_admin; local get_room_from_jid = util.get_room_from_jid; local room_jid_match_rewrite = util.room_jid_match_rewrite; local is_jibri = util.is_jibri; @@ -9,7 +10,6 @@ local jid_resource = require "util.jid".resource; local st = require "util.stanza"; local socket = require "socket"; local json = require 'cjson.safe'; -local um_is_admin = require "core.usermanager".is_admin; local jid_split = require 'util.jid'.split; -- we use async to detect Prosody 0.10 and earlier @@ -32,10 +32,6 @@ module:log("info", "Starting speakerstats for %s", muc_component_host); local main_muc_service; -local function is_admin(jid) - return um_is_admin(jid, module.host); -end - -- Searches all rooms in the main muc component that holds a breakout room -- caches it if found so we don't search it again -- we should not cache objects in _data as this is being serialized when calling room:save() diff --git a/resources/prosody-plugins/mod_token_verification.lua b/resources/prosody-plugins/mod_token_verification.lua index a888dc054b97..a4b979be0411 100644 --- a/resources/prosody-plugins/mod_token_verification.lua +++ b/resources/prosody-plugins/mod_token_verification.lua @@ -4,19 +4,17 @@ local log = module._log; local host = module.host; local st = require "util.stanza"; -local um_is_admin = require "core.usermanager".is_admin; local jid_split = require 'util.jid'.split; local jid_bare = require 'util.jid'.bare; +local util = module:require 'util'; +local is_admin = util.is_admin; + local DEBUG = false; local measure_success = module:measure('success', 'counter'); local measure_fail = module:measure('fail', 'counter'); -local function is_admin(jid) - return um_is_admin(jid, host); -end - local parentHostName = string.gmatch(tostring(host), "%w+.(%w.+)")(); if parentHostName == nil then module:log("error", "Failed to start - unable to get parent hostname"); diff --git a/resources/prosody-plugins/mod_visitors.lua b/resources/prosody-plugins/mod_visitors.lua index bcbd54f35a80..11241b1497f4 100644 --- a/resources/prosody-plugins/mod_visitors.lua +++ b/resources/prosody-plugins/mod_visitors.lua @@ -12,15 +12,11 @@ local st = require 'util.stanza'; local jid = require 'util.jid'; local new_id = require 'util.id'.medium; local util = module:require 'util'; +local is_admin = util.is_admin; local presence_check_status = util.presence_check_status; local process_host_module = util.process_host_module; local is_transcriber_jigasi = util.is_transcriber_jigasi; -local um_is_admin = require 'core.usermanager'.is_admin; -local function is_admin(jid) - return um_is_admin(jid, module.host); -end - local MUC_NS = 'http://jabber.org/protocol/muc'; -- required parameter for custom muc component prefix, defaults to 'conference' diff --git a/resources/prosody-plugins/mod_visitors_component.lua b/resources/prosody-plugins/mod_visitors_component.lua index 96a9dc02cbc2..2afe5e13def7 100644 --- a/resources/prosody-plugins/mod_visitors_component.lua +++ b/resources/prosody-plugins/mod_visitors_component.lua @@ -5,6 +5,7 @@ local http = require 'net.http'; local jid = require 'util.jid'; local st = require 'util.stanza'; local util = module:require 'util'; +local is_admin = util.is_admin; local is_healthcheck_room = util.is_healthcheck_room; local is_sip_jigasi = util.is_sip_jigasi; local room_jid_match_rewrite = util.room_jid_match_rewrite; @@ -18,7 +19,6 @@ local process_host_module = util.process_host_module; local respond_iq_result = util.respond_iq_result; local split_string = util.split_string; local new_id = require 'util.id'.medium; -local um_is_admin = require 'core.usermanager'.is_admin; local json = require 'cjson.safe'; local inspect = require 'inspect'; @@ -50,10 +50,6 @@ local http_headers = { ["Accept"] = "application/json" }; -local function is_admin(jid) - return um_is_admin(jid, module.host); -end - -- This is a map to keep data for room and the jids that were allowed to join after visitor mode is enabled -- automatically allowed or allowed by a moderator local visitors_promotion_map = {}; diff --git a/resources/prosody-plugins/util.lib.lua b/resources/prosody-plugins/util.lib.lua index e37bc2459e7b..2345aa138264 100644 --- a/resources/prosody-plugins/util.lib.lua +++ b/resources/prosody-plugins/util.lib.lua @@ -6,6 +6,7 @@ local http = require "net.http"; local cache = require "util.cache"; local array = require "util.array"; local is_set = require 'util.set'.is_set; +local usermanager = require 'core.usermanager'; local http_timeout = 30; local have_async, async = pcall(require, "util.async"); @@ -626,6 +627,11 @@ function get_ip(session) return request and request.ip or session.ip; end +-- Checks whether the provided jid is in the list of admins +local function is_admin(jid) + return usermanager.is_admin(jid, module.host); +end + return { OUTBOUND_SIP_JIBRI_PREFIXES = OUTBOUND_SIP_JIBRI_PREFIXES; INBOUND_SIP_JIBRI_PREFIXES = INBOUND_SIP_JIBRI_PREFIXES;