diff --git a/SRV/api/v1/subnet.py b/SRV/api/v1/subnet.py index 43e4d1c..f08b0b4 100644 --- a/SRV/api/v1/subnet.py +++ b/SRV/api/v1/subnet.py @@ -1,6 +1,5 @@ -from fastapi import APIRouter, HTTPException -from typing import List, Dict -from models.subnet import SubnetScanResult +from fastapi import APIRouter, HTTPException, Body +from models.subnet import SubnetScanResult, SubnetScanRequest from models.wifi import WifiScanResult from models.request import NoteRequest, WifiConnectRequest, WifiDisconnectRequest from services.subnet_service import SubnetService @@ -9,8 +8,8 @@ from services.connect_service import WifiConnectionService router = APIRouter() -@router.get("/devices", response_model=SubnetScanResult) -def scan_subnet(subnet: str = "192.168.1.0/24", ports: List[int] = None): +@router.post("/devices", response_model=SubnetScanResult) +def scan_subnet(request: SubnetScanRequest = Body(...)): """Сканирует локальную подсеть и возвращает данные об устройствах. Выполняет сканирование указанной подсети для обнаружения активных устройств @@ -29,7 +28,8 @@ def scan_subnet(subnet: str = "192.168.1.0/24", ports: List[int] = None): """ try: subnet_service = SubnetService() - result = subnet_service.scan_subnet(subnet, ports) + subnet = request.subnet or "192.168.1.0/24" + result = subnet_service.scan_subnet(subnet) return result except Exception as e: raise HTTPException(status_code=500, detail=f"Ошибка сканирования: {str(e)}") diff --git a/SRV/models/subnet.py b/SRV/models/subnet.py index d281cfe..f46c9b3 100644 --- a/SRV/models/subnet.py +++ b/SRV/models/subnet.py @@ -37,11 +37,11 @@ class SubnetScanResult(BaseModel): devices: List[Device] = [] -#class SubnetScanRequest(BaseModel): -# """ -# Параметры для сканирования подсети -# -# Атрибуты: -# subnet (str): Подсеть для сканирования (например 192.168.1.0/24) -# """ -# subnet: Optional[str] = "192.168.1.0/24" +class SubnetScanRequest(BaseModel): + """ + Параметры для сканирования подсети + + Атрибуты: + subnet (str): Подсеть для сканирования (например 192.168.1.0/24) + """ + subnet: Optional[str] = "192.168.1.0/24" diff --git a/SRV/services/settings_service.py b/SRV/services/settings_service.py index 4b6d9cc..5399b96 100644 --- a/SRV/services/settings_service.py +++ b/SRV/services/settings_service.py @@ -25,6 +25,9 @@ class SettingsService: json.dump([], f) logger.info("Данные узлов подсети успешно очищены") return True + except FileNotFoundError: + logger.info("Файл устройств не найден, очистка считается успешной") + return True except Exception as e: logger.error(f"Ошибка очистки узлов подсети: {str(e)}") raise @@ -43,6 +46,9 @@ class SettingsService: json.dump([], f) logger.info("Данные точек доступа Wi-Fi успешно очищены") return True + except FileNotFoundError: + logger.info("Файл Wi-Fi не найден, очистка считается успешной") + return True except Exception as e: logger.error(f"Ошибка очистки точек доступа Wi-Fi: {str(e)}") raise @@ -57,10 +63,16 @@ class SettingsService: Exception: Если произошла ошибка при записи в один из файлов. """ try: - with open(self.subnet_file, "w") as f: - json.dump([], f) - with open(self.wifi_file, "w") as f: - json.dump([], f) + try: + with open(self.subnet_file, "w") as f: + json.dump([], f) + except FileNotFoundError: + logger.info("Файл устройств не найден, очистка считается успешной") + try: + with open(self.wifi_file, "w") as f: + json.dump([], f) + except FileNotFoundError: + logger.info("Файл Wi-Fi не найден, очистка считается успешной") logger.info("Все сетевые данные успешно очищены") return True except Exception as e: