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..0d6bd5341 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: @@ -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": {}}, 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.