From f0c7bd3f790e299f4bf9dbeae37c300ed1a85e7e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 25 Nov 2025 03:12:21 -0500 Subject: [PATCH] refac --- backend/open_webui/utils/middleware.py | 11 ++++++----- backend/open_webui/utils/misc.py | 6 ++++-- backend/open_webui/utils/tools.py | 10 +++++----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 323f93f450..efa187a382 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1409,9 +1409,12 @@ async def process_chat_payload(request, form_data, user, metadata, model): headers=headers if headers else None, ) - function_name_filter_list = mcp_server_connection.get( - "function_name_filter_list", None + function_name_filter_list = ( + mcp_server_connection.get("config", {}) + .get("function_name_filter_list", "") + .split(",") ) + tool_specs = await mcp_clients[server_id].list_tool_specs() for tool_spec in tool_specs: @@ -1424,9 +1427,7 @@ async def process_chat_payload(request, form_data, user, metadata, model): return tool_function - if function_name_filter_list and isinstance( - function_name_filter_list, list - ): + if function_name_filter_list: if not is_string_allowed( tool_spec["name"], function_name_filter_list ): diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index 466e235598..5591fcdb3f 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -35,10 +35,10 @@ def get_allow_block_lists(filter_list): for d in filter_list: if d.startswith("!"): # Domains starting with "!" → blocked - block_list.append(d[1:]) + block_list.append(d[1:].strip()) else: # Domains starting without "!" → allowed - allow_list.append(d) + allow_list.append(d.strip()) return allow_list, block_list @@ -54,6 +54,8 @@ def is_string_allowed(string: str, filter_list: Optional[list[str]] = None) -> b return True allow_list, block_list = get_allow_block_lists(filter_list) + print(string, allow_list, block_list) + # If allow list is non-empty, require domain to match one of them if allow_list: if not any(string.endswith(allowed) for allowed in allow_list): diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index ecdf7187e4..268624135d 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -150,15 +150,15 @@ async def get_tools( ) specs = tool_server_data.get("specs", []) - function_name_filter_list = tool_server_connection.get( - "function_name_filter_list", None + function_name_filter_list = ( + tool_server_connection.get("config", {}) + .get("function_name_filter_list", "") + .split(",") ) for spec in specs: function_name = spec["name"] - if function_name_filter_list and isinstance( - function_name_filter_list, list - ): + if function_name_filter_list: if not is_string_allowed( function_name, function_name_filter_list ):