From 8ee807276c41850397d563ae84ea80c003d4ff45 Mon Sep 17 00:00:00 2001 From: anoracleofra-code Date: Fri, 13 Mar 2026 16:32:32 -0600 Subject: [PATCH] fix: KiwiSDR layer broken import + remove ugly iframe embed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - kiwisdr_fetcher.py imported non-existent `smart_request` (renamed to `fetch_with_curl`), causing silent ImportError → 0 nodes returned - Replaced KiwiSDR iframe embed with clean "OPEN SDR RECEIVER" button. The full KiwiSDR web UI (waterfall, frequency controls, callsign prompt) is unusable at 288px — better opened in a new tab. Co-Authored-By: Claude Opus 4.6 Former-commit-id: aa0fcd92b2390d6a8943b68f2f7eb9b900c7bbb7 --- backend/services/kiwisdr_fetcher.py | 4 +-- .../src/components/RadioInterceptPanel.tsx | 30 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/backend/services/kiwisdr_fetcher.py b/backend/services/kiwisdr_fetcher.py index 0f1fa9d..2abf9fc 100644 --- a/backend/services/kiwisdr_fetcher.py +++ b/backend/services/kiwisdr_fetcher.py @@ -34,10 +34,10 @@ def _parse_gps(html: str): @cached(kiwisdr_cache) def fetch_kiwisdr_nodes() -> list[dict]: """Fetch and parse the KiwiSDR public receiver list.""" - from services.network_utils import smart_request + from services.network_utils import fetch_with_curl try: - res = smart_request("http://kiwisdr.com/.public/", timeout=20) + res = fetch_with_curl("http://kiwisdr.com/.public/", timeout=20) if not res or res.status_code != 200: logger.error(f"KiwiSDR fetch failed: HTTP {res.status_code if res else 'no response'}") return [] diff --git a/frontend/src/components/RadioInterceptPanel.tsx b/frontend/src/components/RadioInterceptPanel.tsx index bc4805f..15f6fe4 100644 --- a/frontend/src/components/RadioInterceptPanel.tsx +++ b/frontend/src/components/RadioInterceptPanel.tsx @@ -359,21 +359,21 @@ export default function RadioInterceptPanel({ data, isEavesdropping, setIsEavesd {selectedEntity.extra.antenna && {selectedEntity.extra.antenna.slice(0, 80)} · } {selectedEntity.extra.users !== undefined && {selectedEntity.extra.users}/{selectedEntity.extra.users_max} users} -