2025-06-09 10:17:12 +05:00
|
|
|
from pydantic import BaseModel
|
|
|
|
|
from typing import Optional, List
|
|
|
|
|
|
2025-06-12 16:32:05 +05:00
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
class Device(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
"""
|
|
|
|
|
Сканируемое устройство в подсети
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
ip (str): IP-адрес устройства
|
|
|
|
|
mac (Optional[str]): MAC-адрес устройства
|
|
|
|
|
hostname (Optional[str]): Имя хоста
|
|
|
|
|
vendor (Optional[str]): Название производителя устройства (По MAC-адресу)
|
|
|
|
|
open_ports (List[str]): Открытые порты устройства
|
|
|
|
|
status (str): Статус устройства (онлайн/оффлайн)
|
|
|
|
|
last_seen (Optional[str]): Последняя активность устройства
|
|
|
|
|
note (Optional[str]): Заметка устройства
|
|
|
|
|
"""
|
2025-06-12 16:32:05 +05:00
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
ip: str
|
|
|
|
|
mac: Optional[str] = None
|
|
|
|
|
hostname: Optional[str] = None
|
|
|
|
|
vendor: Optional[str] = None
|
2025-06-10 16:19:09 +05:00
|
|
|
open_ports: List[str] = []
|
|
|
|
|
status: str
|
2025-06-09 10:17:12 +05:00
|
|
|
last_seen: Optional[str] = None
|
2025-06-10 16:19:09 +05:00
|
|
|
note: Optional[str] = None
|
2025-06-09 10:17:12 +05:00
|
|
|
|
2025-06-12 16:32:05 +05:00
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
class SubnetScanResult(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
"""
|
|
|
|
|
Результат сканирования устройств в подсети
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
devices (List[Device]): Список просканированных устройств
|
|
|
|
|
"""
|
2025-06-12 16:32:05 +05:00
|
|
|
|
|
|
|
|
devices: List[Device] = []
|
2025-07-03 12:01:34 +05:00
|
|
|
|
2025-07-04 13:48:38 +05:00
|
|
|
class SubnetScanRequest(BaseModel):
|
|
|
|
|
"""
|
|
|
|
|
Параметры для сканирования подсети
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
subnet (str): Подсеть для сканирования (например 192.168.1.0/24)
|
|
|
|
|
"""
|
|
|
|
|
subnet: Optional[str] = "192.168.1.0/24"
|