From 33d70ccc96c54ac2a6ef044bfc7d3b43be77a427 Mon Sep 17 00:00:00 2001 From: rui chen Date: Thu, 18 Dec 2025 15:48:25 +0800 Subject: [PATCH] get OTA address from websocket address config, if failed find ota_addr, if failed again, use local address. --- main/xiaozhi-server/core/api/ota_handler.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/main/xiaozhi-server/core/api/ota_handler.py b/main/xiaozhi-server/core/api/ota_handler.py index b20ba60b..1fe339c2 100644 --- a/main/xiaozhi-server/core/api/ota_handler.py +++ b/main/xiaozhi-server/core/api/ota_handler.py @@ -9,6 +9,8 @@ import glob from typing import Dict, List, Tuple from aiohttp import web +from urllib.parse import urlparse + from core.auth import AuthManager from core.utils.util import get_local_ip from core.api.base_handler import BaseHandler @@ -172,7 +174,18 @@ class OTAHandler(BaseHandler): websocket_port = int(server_config.get("port", 8000)) http_port = int(server_config.get("http_port", 8003)) local_ip = get_local_ip() - ota_addr = server_config.get("ota_addr", "") + + ota_addr = "" + websocket_addr = self._get_websocket_url(local_ip, websocket_port) + parsedurl = urlparse(websocket_addr) + netloc = parsedurl.netloc + if netloc: + host_part = netloc.split(":")[0] + ota_addr = host_part if host_part else "" + if ota_addr == "": + ota_addr = server_config.get("ota_addr", "") + if ota_addr == "": + ota_addr = local_ip # Determine device model (prefer headers) device_model = ""