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.