mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-16 01:40:15 +08:00
Resolved 76 file conflicts across backend, frontend, and tests: - Core backend: agent, platform, provider, star, tools, cron, KB, utils - Dashboard backend: auth, config, plugin routes, server, runtime bootstrap - Frontend components: shared, extension, provider components - Frontend views: console, trace, cron, extension, platform, provider, etc. - Frontend infrastructure: layouts, router, stores, main.ts - Assets: MDI font subset (css, woff, woff2) - Tests: fixtures, plugin manager, anthropic provider, dashboard tests Strategy per file: - Most backend: merged master improvements (metrics, http_client -> default_headers, download_url params, plugin i18n, runtime guards, auth middleware) - Frontend views: adopted master dashboard-shell layout (v-container, is-dark theme) - InstalledPluginsTab: kept dev pinned-plugins feature (drag-sort, pin/unpin) - Binary assets: resolved via git checkout - Tests: merged both branches' assertions and mock updates
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
from astrbot.runtime_bootstrap import initialize_runtime_bootstrap
|
|
|
|
__all__ = ["initialize_runtime_bootstrap"]
|
|
|
|
import logging
|
|
import ssl
|
|
from typing import Any
|
|
|
|
import aiohttp.connector as aiohttp_connector
|
|
|
|
from astrbot.utils.http_ssl_common import build_ssl_context_with_certifi
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def _try_patch_aiohttp_ssl_context(
|
|
ssl_context: ssl.SSLContext,
|
|
log_obj: Any | None = None,
|
|
) -> bool:
|
|
log = log_obj or logger
|
|
attr_name = "_SSL_CONTEXT_VERIFIED"
|
|
|
|
if not hasattr(aiohttp_connector, attr_name):
|
|
log.warning(
|
|
"aiohttp connector does not expose _SSL_CONTEXT_VERIFIED; skipped patch.",
|
|
)
|
|
return False
|
|
|
|
current_value = getattr(aiohttp_connector, attr_name, None)
|
|
if current_value is not None and not isinstance(current_value, ssl.SSLContext):
|
|
log.warning(
|
|
"aiohttp connector exposes _SSL_CONTEXT_VERIFIED with unexpected type; skipped patch.",
|
|
)
|
|
return False
|
|
|
|
setattr(aiohttp_connector, attr_name, ssl_context)
|
|
return True
|
|
|
|
|
|
def configure_runtime_ca_bundle(log_obj: Any | None = None) -> bool:
|
|
log = log_obj or logger
|
|
|
|
try:
|
|
ssl_context = build_ssl_context_with_certifi(log_obj=log)
|
|
return _try_patch_aiohttp_ssl_context(ssl_context, log_obj=log)
|
|
except Exception as exc:
|
|
log.error("Failed to configure runtime CA bundle for aiohttp: %r", exc)
|
|
return False
|
|
|
|
|
|
def initialize_runtime_bootstrap(log_obj: Any | None = None) -> bool:
|
|
return configure_runtime_ca_bundle(log_obj=log_obj)
|