Сканирование определенной подсети

This commit is contained in:
parent be8b724d61
commit e23e608cac
2 changed files with 16 additions and 9 deletions

View file

@ -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)}")

View file

@ -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"