Нативное указание подсети для сканирования по умолчанию (192.168.1.0/24). Обработка ошибок при очистке данных

This commit is contained in:
parent 5287a64587
commit 4257864b3d
3 changed files with 30 additions and 18 deletions

View file

@ -1,6 +1,5 @@
from fastapi import APIRouter, HTTPException from fastapi import APIRouter, HTTPException, Body
from typing import List, Dict from models.subnet import SubnetScanResult, SubnetScanRequest
from models.subnet import SubnetScanResult
from models.wifi import WifiScanResult from models.wifi import WifiScanResult
from models.request import NoteRequest, WifiConnectRequest, WifiDisconnectRequest from models.request import NoteRequest, WifiConnectRequest, WifiDisconnectRequest
from services.subnet_service import SubnetService from services.subnet_service import SubnetService
@ -9,8 +8,8 @@ from services.connect_service import WifiConnectionService
router = APIRouter() router = APIRouter()
@router.get("/devices", response_model=SubnetScanResult) @router.post("/devices", response_model=SubnetScanResult)
def scan_subnet(subnet: str = "192.168.1.0/24", ports: List[int] = None): 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: try:
subnet_service = SubnetService() 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 return result
except Exception as e: except Exception as e:
raise HTTPException(status_code=500, detail=f"Ошибка сканирования: {str(e)}") raise HTTPException(status_code=500, detail=f"Ошибка сканирования: {str(e)}")

View file

@ -37,11 +37,11 @@ class SubnetScanResult(BaseModel):
devices: List[Device] = [] devices: List[Device] = []
#class SubnetScanRequest(BaseModel): class SubnetScanRequest(BaseModel):
# """ """
# Параметры для сканирования подсети Параметры для сканирования подсети
#
# Атрибуты: Атрибуты:
# subnet (str): Подсеть для сканирования (например 192.168.1.0/24) subnet (str): Подсеть для сканирования (например 192.168.1.0/24)
# """ """
# subnet: Optional[str] = "192.168.1.0/24" subnet: Optional[str] = "192.168.1.0/24"

View file

@ -25,6 +25,9 @@ class SettingsService:
json.dump([], f) json.dump([], f)
logger.info("Данные узлов подсети успешно очищены") logger.info("Данные узлов подсети успешно очищены")
return True return True
except FileNotFoundError:
logger.info("Файл устройств не найден, очистка считается успешной")
return True
except Exception as e: except Exception as e:
logger.error(f"Ошибка очистки узлов подсети: {str(e)}") logger.error(f"Ошибка очистки узлов подсети: {str(e)}")
raise raise
@ -43,6 +46,9 @@ class SettingsService:
json.dump([], f) json.dump([], f)
logger.info("Данные точек доступа Wi-Fi успешно очищены") logger.info("Данные точек доступа Wi-Fi успешно очищены")
return True return True
except FileNotFoundError:
logger.info("Файл Wi-Fi не найден, очистка считается успешной")
return True
except Exception as e: except Exception as e:
logger.error(f"Ошибка очистки точек доступа Wi-Fi: {str(e)}") logger.error(f"Ошибка очистки точек доступа Wi-Fi: {str(e)}")
raise raise
@ -56,11 +62,17 @@ class SettingsService:
Raises: Raises:
Exception: Если произошла ошибка при записи в один из файлов. Exception: Если произошла ошибка при записи в один из файлов.
""" """
try:
try: try:
with open(self.subnet_file, "w") as f: with open(self.subnet_file, "w") as f:
json.dump([], f) json.dump([], f)
except FileNotFoundError:
logger.info("Файл устройств не найден, очистка считается успешной")
try:
with open(self.wifi_file, "w") as f: with open(self.wifi_file, "w") as f:
json.dump([], f) json.dump([], f)
except FileNotFoundError:
logger.info("Файл Wi-Fi не найден, очистка считается успешной")
logger.info("Все сетевые данные успешно очищены") logger.info("Все сетевые данные успешно очищены")
return True return True
except Exception as e: except Exception as e: