mirror of
https://github.com/lfnovo/open-notebook.git
synced 2026-08-26 17:32:14 +00:00
* fix(proxy): keep internal SurrealDB websocket out of HTTP proxy (#1160) websockets 15.0 auto-detects HTTP_PROXY/HTTPS_PROXY and tunnels even ws:// connections through the proxy. The SurrealDB SDK connects over a websocket, so with a proxy set the internal DB connection was routed through the external proxy, which rejected the internal host with HTTP 403 and killed the worker/API on startup. - Add ensure_internal_no_proxy() helper that merges host.docker.internal, surrealdb, localhost, 127.0.0.1 into no_proxy/NO_PROXY (never clobbering a user value) and call it at API, worker and DB-module startup. - Add host.docker.internal and surrealdb to the .env.example and docs NO_PROXY examples. - Add unit tests for the injection helper. * fix(proxy): preserve NO_PROXY wildcard and include custom SurrealDB host (#1160) Address review findings on the no_proxy injection: - NO_PROXY=* (bypass all hosts) is now treated as terminal: leave the user's config untouched instead of narrowing the wildcard to a finite list by appending the internal hosts. - Parse the SurrealDB host from SURREAL_URL (falling back to SURREAL_ADDRESS) and add it to the bypass list, so deployments with a custom DB host/IP no longer route DB traffic through the proxy. Unset or malformed values fall back to the four defaults gracefully. - Drop the inaccurate getproxies() caching remark in the test.
29 lines
925 B
Python
29 lines
925 B
Python
"""Surreal-commands integration for Open Notebook"""
|
|
|
|
# The worker starts via `surreal-commands-worker --import-modules commands`,
|
|
# so this package is imported before the worker connects to SurrealDB. Inject
|
|
# the internal DB hosts into no_proxy first so the DB websocket is never
|
|
# tunnelled through a configured HTTP proxy (issue #1160).
|
|
from open_notebook.utils.proxy import ensure_internal_no_proxy
|
|
|
|
ensure_internal_no_proxy()
|
|
|
|
from .embedding_commands import (
|
|
embed_insight_command,
|
|
embed_note_command,
|
|
embed_source_command,
|
|
rebuild_embeddings_command,
|
|
)
|
|
from .podcast_commands import generate_podcast_command
|
|
from .source_commands import process_source_command
|
|
|
|
__all__ = [
|
|
# Embedding commands
|
|
"embed_note_command",
|
|
"embed_insight_command",
|
|
"embed_source_command",
|
|
"rebuild_embeddings_command",
|
|
# Other commands
|
|
"generate_podcast_command",
|
|
"process_source_command",
|
|
]
|