diff --git a/SRV/api/v1/subnet.py b/SRV/api/v1/subnet.py index 43e4d1c..36e759d 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 @@ -10,17 +9,16 @@ 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): +def scan_subnet(request: SubnetScanRequest = Body(...)): """Сканирует локальную подсеть и возвращает данные об устройствах. Выполняет сканирование указанной подсети для обнаружения активных устройств с возможностью проверки указанных портов. Args: - subnet (str, optional): Адрес подсети в формате CIDR (например, "192.168.1.0/24"). - По умолчанию "192.168.1.0/24". - ports (List[int], optional): Список портов для сканирования. По умолчанию None. - + request (SubnetScanResult): Параметры для сканирования подсети. + - subnet (str, optional): Подсеть для сканирования (например "192.168.1.0/24"). + По умолчанию, если subnet пуст, то сканируется подсеть "192.168.1.0/24". Returns: SubnetScanResult: Объект с результатами сканирования (устройства и их данные). @@ -29,7 +27,7 @@ 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) + result = subnet_service.scan_subnet(request.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 b6534fc..f46c9b3 100644 --- a/SRV/models/subnet.py +++ b/SRV/models/subnet.py @@ -36,3 +36,12 @@ class SubnetScanResult(BaseModel): """ devices: List[Device] = [] + +class SubnetScanRequest(BaseModel): + """ + Параметры для сканирования подсети + + Атрибуты: + subnet (str): Подсеть для сканирования (например 192.168.1.0/24) + """ + subnet: Optional[str] = "192.168.1.0/24"