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

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 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
@ -10,17 +9,16 @@ from services.connect_service import WifiConnectionService
router = APIRouter() router = APIRouter()
@router.get("/devices", response_model=SubnetScanResult) @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: Args:
subnet (str, optional): Адрес подсети в формате CIDR (например, "192.168.1.0/24"). request (SubnetScanResult): Параметры для сканирования подсети.
По умолчанию "192.168.1.0/24". - subnet (str, optional): Подсеть для сканирования (например "192.168.1.0/24").
ports (List[int], optional): Список портов для сканирования. По умолчанию None. По умолчанию, если subnet пуст, то сканируется подсеть "192.168.1.0/24".
Returns: Returns:
SubnetScanResult: Объект с результатами сканирования (устройства и их данные). SubnetScanResult: Объект с результатами сканирования (устройства и их данные).
@ -29,7 +27,7 @@ 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) result = subnet_service.scan_subnet(request.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

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