From 576dc192609430a89bdabf0c34f943fbf259adf8 Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Mon, 13 Oct 2025 13:57:58 -0700 Subject: [PATCH 1/3] refactor: updated SearxNG connector migration and fixed validation for SearxNG host URL --- ...onnector_enum.py => 27_add_searxng_connector_enum.py} | 9 ++++----- surfsense_backend/app/services/connector_service.py | 4 ++-- surfsense_backend/app/utils/validators.py | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) rename surfsense_backend/alembic/versions/{26_add_searxng_connector_enum.py => 27_add_searxng_connector_enum.py} (91%) diff --git a/surfsense_backend/alembic/versions/26_add_searxng_connector_enum.py b/surfsense_backend/alembic/versions/27_add_searxng_connector_enum.py similarity index 91% rename from surfsense_backend/alembic/versions/26_add_searxng_connector_enum.py rename to surfsense_backend/alembic/versions/27_add_searxng_connector_enum.py index ca6ac2b55..7834a8671 100644 --- a/surfsense_backend/alembic/versions/26_add_searxng_connector_enum.py +++ b/surfsense_backend/alembic/versions/27_add_searxng_connector_enum.py @@ -1,7 +1,7 @@ """Add SearxNG connector enum value -Revision ID: 26 -Revises: 25 +Revision ID: 27 +Revises: 26 Create Date: 2025-01-18 00:00:00.000000 """ @@ -11,8 +11,8 @@ from collections.abc import Sequence from alembic import op # revision identifiers, used by Alembic. -revision: str = "26" -down_revision: str | None = "25" +revision: str = "27" +down_revision: str | None = "26" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None @@ -39,4 +39,3 @@ def upgrade() -> None: def downgrade() -> None: """Downgrade not supported for enum edits.""" pass - diff --git a/surfsense_backend/app/services/connector_service.py b/surfsense_backend/app/services/connector_service.py index 0017fabaf..ca323f510 100644 --- a/surfsense_backend/app/services/connector_service.py +++ b/surfsense_backend/app/services/connector_service.py @@ -432,7 +432,7 @@ class ConnectorService: safesearch_clean = safesearch.strip() if safesearch_clean.isdigit(): safesearch_value = int(safesearch_clean) - elif isinstance(safesearch, (int, float)): + elif isinstance(safesearch, int | float): safesearch_value = int(safesearch) if safesearch_value is not None and not (0 <= safesearch_value <= 2): @@ -444,7 +444,7 @@ class ConnectorService: if isinstance(value, str): value = value.strip() return value or None - if isinstance(value, (list, tuple, set)): + if isinstance(value, list | tuple | set): cleaned = [str(item).strip() for item in value if str(item).strip()] return ",".join(cleaned) if cleaned else None return str(value) diff --git a/surfsense_backend/app/utils/validators.py b/surfsense_backend/app/utils/validators.py index 7e29860ba..1a3b30de6 100644 --- a/surfsense_backend/app/utils/validators.py +++ b/surfsense_backend/app/utils/validators.py @@ -412,7 +412,7 @@ def validate_connector_config( raise ValueError(f"Invalid email format for {connector_name} connector") def validate_url_field(key: str, connector_name: str) -> None: - if not validators.url(config.get(key, "")): + if not validators.url(config.get(key, "").strip(), simple_host=True): raise ValueError(f"Invalid base URL format for {connector_name} connector") def validate_list_field(key: str, field_name: str) -> None: From acd900c41db7daa12008cc776b2034939a1bdc2d Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Mon, 13 Oct 2025 14:01:55 -0700 Subject: [PATCH 2/3] ruff fix --- surfsense_backend/app/utils/validators.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/surfsense_backend/app/utils/validators.py b/surfsense_backend/app/utils/validators.py index 1a3b30de6..0d6bd5341 100644 --- a/surfsense_backend/app/utils/validators.py +++ b/surfsense_backend/app/utils/validators.py @@ -435,9 +435,7 @@ def validate_connector_config( "SEARXNG_VERIFY_SSL", ], "validators": { - "SEARXNG_HOST": lambda: validate_url_field( - "SEARXNG_HOST", "SearxNG" - ) + "SEARXNG_HOST": lambda: validate_url_field("SEARXNG_HOST", "SearxNG") }, }, "LINKUP_API": {"required": ["LINKUP_API_KEY"], "validators": {}}, From cbe7f18a2b5716fed8f9b12b63d65a54204e801b Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Mon, 13 Oct 2025 14:04:38 -0700 Subject: [PATCH 3/3] biome checks --- .../connectors/add/searxng/page.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/surfsense_web/app/dashboard/[search_space_id]/connectors/add/searxng/page.tsx b/surfsense_web/app/dashboard/[search_space_id]/connectors/add/searxng/page.tsx index ca736a8cd..4fd406706 100644 --- a/surfsense_web/app/dashboard/[search_space_id]/connectors/add/searxng/page.tsx +++ b/surfsense_web/app/dashboard/[search_space_id]/connectors/add/searxng/page.tsx @@ -258,7 +258,9 @@ export default function SearxngConnectorPage() { - Comma-separated list to target specific engines. + + Comma-separated list to target specific engines. + )} @@ -273,7 +275,9 @@ export default function SearxngConnectorPage() { - Comma-separated list of SearxNG categories. + + Comma-separated list of SearxNG categories. + )} @@ -308,8 +312,8 @@ export default function SearxngConnectorPage() { - Set 0, 1, or 2 to adjust SafeSearch filtering. Leave blank to use the instance - default. + Set 0, 1, or 2 to adjust SafeSearch filtering. Leave blank to use the + instance default.