refac
This commit is contained in:
@@ -195,10 +195,13 @@ ENABLE_FORWARD_USER_INFO_HEADERS = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Header names for user info forwarding (customizable via environment variables)
|
# Header names for user info forwarding (customizable via environment variables)
|
||||||
FORWARD_USER_INFO_HEADER_NAME = os.environ.get("FORWARD_USER_INFO_HEADER_NAME", "X-OpenWebUI-User-Name")
|
FORWARD_USER_INFO_HEADER_USER_NAME = os.environ.get("FORWARD_USER_INFO_HEADER_USER_NAME", "X-OpenWebUI-User-Name")
|
||||||
FORWARD_USER_INFO_HEADER_ID = os.environ.get("FORWARD_USER_INFO_HEADER_ID", "X-OpenWebUI-User-Id")
|
FORWARD_USER_INFO_HEADER_USER_ID = os.environ.get("FORWARD_USER_INFO_HEADER_USER_ID", "X-OpenWebUI-User-Id")
|
||||||
FORWARD_USER_INFO_HEADER_EMAIL = os.environ.get("FORWARD_USER_INFO_HEADER_EMAIL", "X-OpenWebUI-User-Email")
|
FORWARD_USER_INFO_HEADER_USER_EMAIL = os.environ.get("FORWARD_USER_INFO_HEADER_USER_EMAIL", "X-OpenWebUI-User-Email")
|
||||||
FORWARD_USER_INFO_HEADER_ROLE = os.environ.get("FORWARD_USER_INFO_HEADER_ROLE", "X-OpenWebUI-User-Role")
|
FORWARD_USER_INFO_HEADER_USER_ROLE = os.environ.get("FORWARD_USER_INFO_HEADER_USER_ROLE", "X-OpenWebUI-User-Role")
|
||||||
|
|
||||||
|
# Header name for chat ID forwarding (customizable via environment variable)
|
||||||
|
FORWARD_SESSION_INFO_HEADER_CHAT_ID = os.environ.get("FORWARD_SESSION_INFO_HEADER_CHAT_ID", "X-OpenWebUI-Chat-Id")
|
||||||
|
|
||||||
# Experimental feature, may be removed in future
|
# Experimental feature, may be removed in future
|
||||||
ENABLE_STAR_SESSIONS_MIDDLEWARE = (
|
ENABLE_STAR_SESSIONS_MIDDLEWARE = (
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from fastapi import Request
|
|||||||
|
|
||||||
from open_webui.retrieval.web.main import SearchResult, get_filtered_results
|
from open_webui.retrieval.web.main import SearchResult, get_filtered_results
|
||||||
from open_webui.utils.headers import include_user_info_headers
|
from open_webui.utils.headers import include_user_info_headers
|
||||||
|
from open_webui.env import FORWARD_SESSION_INFO_HEADER_CHAT_ID
|
||||||
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@@ -31,7 +32,7 @@ def search_external(
|
|||||||
|
|
||||||
chat_id = getattr(request.state, "chat_id", None)
|
chat_id = getattr(request.state, "chat_id", None)
|
||||||
if chat_id:
|
if chat_id:
|
||||||
headers["X-OpenWebUI-Chat-Id"] = str(chat_id)
|
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = str(chat_id)
|
||||||
|
|
||||||
response = requests.post(
|
response = requests.post(
|
||||||
external_url,
|
external_url,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ from fastapi import Request
|
|||||||
|
|
||||||
from open_webui.retrieval.web.main import SearchResult, get_filtered_results
|
from open_webui.retrieval.web.main import SearchResult, get_filtered_results
|
||||||
from open_webui.utils.headers import include_user_info_headers
|
from open_webui.utils.headers import include_user_info_headers
|
||||||
|
from open_webui.env import FORWARD_SESSION_INFO_HEADER_CHAT_ID
|
||||||
|
|
||||||
from xml.etree import ElementTree as ET
|
from xml.etree import ElementTree as ET
|
||||||
from xml.etree.ElementTree import Element
|
from xml.etree.ElementTree import Element
|
||||||
@@ -50,7 +51,7 @@ def search_yandex(
|
|||||||
|
|
||||||
chat_id = getattr(request.state, "chat_id", None)
|
chat_id = getattr(request.state, "chat_id", None)
|
||||||
if chat_id:
|
if chat_id:
|
||||||
headers["X-OpenWebUI-Chat-Id"] = str(chat_id)
|
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = str(chat_id)
|
||||||
|
|
||||||
payload = {} if yandex_search_config == "" else json.loads(yandex_search_config)
|
payload = {} if yandex_search_config == "" else json.loads(yandex_search_config)
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ from open_webui.models.users import UserModel
|
|||||||
|
|
||||||
from open_webui.env import (
|
from open_webui.env import (
|
||||||
ENABLE_FORWARD_USER_INFO_HEADERS,
|
ENABLE_FORWARD_USER_INFO_HEADERS,
|
||||||
|
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
|
||||||
)
|
)
|
||||||
|
|
||||||
from fastapi import (
|
from fastapi import (
|
||||||
@@ -137,7 +138,7 @@ async def send_post_request(
|
|||||||
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
|
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
|
||||||
headers = include_user_info_headers(headers, user)
|
headers = include_user_info_headers(headers, user)
|
||||||
if metadata and metadata.get("chat_id"):
|
if metadata and metadata.get("chat_id"):
|
||||||
headers["X-OpenWebUI-Chat-Id"] = metadata.get("chat_id")
|
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get("chat_id")
|
||||||
|
|
||||||
r = await session.post(
|
r = await session.post(
|
||||||
url,
|
url,
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ from open_webui.env import (
|
|||||||
AIOHTTP_CLIENT_TIMEOUT,
|
AIOHTTP_CLIENT_TIMEOUT,
|
||||||
AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST,
|
AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST,
|
||||||
ENABLE_FORWARD_USER_INFO_HEADERS,
|
ENABLE_FORWARD_USER_INFO_HEADERS,
|
||||||
|
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
|
||||||
BYPASS_MODEL_ACCESS_CONTROL,
|
BYPASS_MODEL_ACCESS_CONTROL,
|
||||||
)
|
)
|
||||||
from open_webui.models.users import UserModel
|
from open_webui.models.users import UserModel
|
||||||
@@ -142,7 +143,7 @@ async def get_headers_and_cookies(
|
|||||||
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
|
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
|
||||||
headers = include_user_info_headers(headers, user)
|
headers = include_user_info_headers(headers, user)
|
||||||
if metadata and metadata.get("chat_id"):
|
if metadata and metadata.get("chat_id"):
|
||||||
headers["X-OpenWebUI-Chat-Id"] = metadata.get("chat_id")
|
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get("chat_id")
|
||||||
|
|
||||||
token = None
|
token = None
|
||||||
auth_type = config.get("auth_type")
|
auth_type = config.get("auth_type")
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
|
|
||||||
from open_webui.env import (
|
from open_webui.env import (
|
||||||
FORWARD_USER_INFO_HEADER_NAME,
|
FORWARD_USER_INFO_HEADER_USER_NAME,
|
||||||
FORWARD_USER_INFO_HEADER_ID,
|
FORWARD_USER_INFO_HEADER_USER_ID,
|
||||||
FORWARD_USER_INFO_HEADER_EMAIL,
|
FORWARD_USER_INFO_HEADER_USER_EMAIL,
|
||||||
FORWARD_USER_INFO_HEADER_ROLE,
|
FORWARD_USER_INFO_HEADER_USER_ROLE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def include_user_info_headers(headers, user):
|
def include_user_info_headers(headers, user):
|
||||||
return {
|
return {
|
||||||
**headers,
|
**headers,
|
||||||
FORWARD_USER_INFO_HEADER_NAME: quote(user.name, safe=" "),
|
FORWARD_USER_INFO_HEADER_USER_NAME: quote(user.name, safe=" "),
|
||||||
FORWARD_USER_INFO_HEADER_ID: user.id,
|
FORWARD_USER_INFO_HEADER_USER_ID: user.id,
|
||||||
FORWARD_USER_INFO_HEADER_EMAIL: user.email,
|
FORWARD_USER_INFO_HEADER_USER_EMAIL: user.email,
|
||||||
FORWARD_USER_INFO_HEADER_ROLE: user.role,
|
FORWARD_USER_INFO_HEADER_USER_ROLE: user.role,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,7 +127,10 @@ from open_webui.env import (
|
|||||||
ENABLE_REALTIME_CHAT_SAVE,
|
ENABLE_REALTIME_CHAT_SAVE,
|
||||||
ENABLE_QUERIES_CACHE,
|
ENABLE_QUERIES_CACHE,
|
||||||
RAG_SYSTEM_CONTEXT,
|
RAG_SYSTEM_CONTEXT,
|
||||||
|
ENABLE_FORWARD_USER_INFO_HEADERS,
|
||||||
|
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
|
||||||
)
|
)
|
||||||
|
from open_webui.utils.headers import include_user_info_headers
|
||||||
from open_webui.constants import TASKS
|
from open_webui.constants import TASKS
|
||||||
|
|
||||||
|
|
||||||
@@ -2207,6 +2210,12 @@ async def process_chat_payload(request, form_data, user, metadata, model):
|
|||||||
for key, value in connection_headers.items():
|
for key, value in connection_headers.items():
|
||||||
headers[key] = value
|
headers[key] = value
|
||||||
|
|
||||||
|
# Add user info headers if enabled
|
||||||
|
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
|
||||||
|
headers = include_user_info_headers(headers, user)
|
||||||
|
if metadata and metadata.get("chat_id"):
|
||||||
|
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get("chat_id")
|
||||||
|
|
||||||
mcp_clients[server_id] = MCPClient()
|
mcp_clients[server_id] = MCPClient()
|
||||||
await mcp_clients[server_id].connect(
|
await mcp_clients[server_id].connect(
|
||||||
url=mcp_server_connection.get("url", ""),
|
url=mcp_server_connection.get("url", ""),
|
||||||
|
|||||||
@@ -45,7 +45,10 @@ from open_webui.env import (
|
|||||||
AIOHTTP_CLIENT_TIMEOUT,
|
AIOHTTP_CLIENT_TIMEOUT,
|
||||||
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA,
|
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA,
|
||||||
AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL,
|
AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL,
|
||||||
|
ENABLE_FORWARD_USER_INFO_HEADERS,
|
||||||
|
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
|
||||||
)
|
)
|
||||||
|
from open_webui.utils.headers import include_user_info_headers
|
||||||
from open_webui.tools.builtin import (
|
from open_webui.tools.builtin import (
|
||||||
search_web,
|
search_web,
|
||||||
fetch_url,
|
fetch_url,
|
||||||
@@ -335,6 +338,13 @@ async def get_tools(
|
|||||||
for key, value in connection_headers.items():
|
for key, value in connection_headers.items():
|
||||||
headers[key] = value
|
headers[key] = value
|
||||||
|
|
||||||
|
# Add user info headers if enabled
|
||||||
|
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
|
||||||
|
headers = include_user_info_headers(headers, user)
|
||||||
|
metadata = extra_params.get("__metadata__", {})
|
||||||
|
if metadata and metadata.get("chat_id"):
|
||||||
|
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get("chat_id")
|
||||||
|
|
||||||
def make_tool_function(
|
def make_tool_function(
|
||||||
function_name, tool_server_data, headers
|
function_name, tool_server_data, headers
|
||||||
):
|
):
|
||||||
|
|||||||
Reference in New Issue
Block a user