2025-06-09 10:17:12 +05:00
|
|
|
|
from typing import List, Optional, Union
|
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IPv4Route(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Модель маршрута IPv4
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
destination (str): IP-адрес назначения
|
|
|
|
|
|
prefix (int): Префикс подсети в формате CIDR
|
|
|
|
|
|
next_hop (str): Адрес следующего узла (маршрутизатор)
|
|
|
|
|
|
metric (int): Метрика маршрута
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
destination: str
|
|
|
|
|
|
prefix: int
|
|
|
|
|
|
next_hop: str
|
|
|
|
|
|
metric: int
|
|
|
|
|
|
|
2025-06-11 17:16:44 +05:00
|
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
|
class IPv6Route(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Модель маршрута IPv6
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
destination (str): IP-адрес назначения
|
|
|
|
|
|
prefix (int): Префикс подсети (CIDR)
|
|
|
|
|
|
next_hop (str): Адрес следующего узла (маршрутизатор)
|
|
|
|
|
|
metric (int): Метрика маршрута
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
destination: str
|
|
|
|
|
|
prefix: int
|
|
|
|
|
|
next_hop: str
|
|
|
|
|
|
metric: int
|
|
|
|
|
|
|
2025-06-11 17:16:44 +05:00
|
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
|
class IndividualIPConfig(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Модель индивидуальной конфигурации IP-адреса
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
address (str): IP-адрес интерфейса
|
|
|
|
|
|
routes (List[Union[IPv4Route, IPv6Route]]): Список маршрутов (IPv4/IPv6)
|
|
|
|
|
|
method (Optional[str]): Метод назначения IP
|
|
|
|
|
|
gateway (str): Основной шлюз по умолчанию
|
|
|
|
|
|
dns (List[str]): Список DNS-серверов
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
address: str
|
|
|
|
|
|
routes: List[Union[IPv4Route, IPv6Route]]
|
|
|
|
|
|
method: Optional[str]
|
|
|
|
|
|
gateway: str
|
|
|
|
|
|
dns: List[str]
|
|
|
|
|
|
|
2025-06-11 17:16:44 +05:00
|
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
|
class IPConfig(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Модель конфигурации IP (IPv4/IPv6)
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
configurations (List[IndividualIPConfig]): Список индивидуальных IP-конфигураций
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
configurations: List[IndividualIPConfig]
|
|
|
|
|
|
|
2025-06-11 17:16:44 +05:00
|
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
|
class NetworkInterface(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Модель базового сетевого интерфейса
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
name (str): Название интерфейса
|
|
|
|
|
|
type (str): Тип интерфейса
|
|
|
|
|
|
mac_address (str): MAC-адрес устройства
|
|
|
|
|
|
device_state (str): Состояние устройства
|
|
|
|
|
|
active_connection (str): Название активного соединения
|
|
|
|
|
|
device_mtu (str): MTU устройства
|
|
|
|
|
|
ipv4 (IPConfig): Конфигурация IPv4
|
|
|
|
|
|
ipv6 (IPConfig): Конфигурация IPv6
|
|
|
|
|
|
container_x (int): Положение по X на холсте
|
|
|
|
|
|
container_y (int): Положение по Y на холсте
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
name: str
|
|
|
|
|
|
type: str
|
|
|
|
|
|
mac_address: str
|
|
|
|
|
|
device_state: str
|
|
|
|
|
|
active_connection: str
|
|
|
|
|
|
device_mtu: str
|
|
|
|
|
|
ipv4: IPConfig
|
|
|
|
|
|
ipv6: IPConfig
|
|
|
|
|
|
container_x: int = 0
|
|
|
|
|
|
container_y: int = 0
|
|
|
|
|
|
|
2025-06-11 17:16:44 +05:00
|
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
|
class WiFiDevice(NetworkInterface):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Модель Wi-Fi устройства (наследуется от NetworkInterface)
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
ssid (Optional[str]): Название Wi-Fi сети
|
|
|
|
|
|
bssid (Optional[str]): MAC-адрес точки доступа
|
|
|
|
|
|
bitrate (Optional[int]): Скорость соединения
|
|
|
|
|
|
strength (Optional[int]): Уровень сигнала
|
|
|
|
|
|
frequency (Optional[float]): Частота
|
|
|
|
|
|
mode (Union[str, int]): Режим работы
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
ssid: Optional[str] = None
|
|
|
|
|
|
bssid: Optional[str] = None
|
|
|
|
|
|
bitrate: Optional[int] = None
|
|
|
|
|
|
strength: Optional[int] = None
|
|
|
|
|
|
frequency: Optional[float] = None
|
|
|
|
|
|
mode: Union[str, int] = None
|
|
|
|
|
|
|
2025-06-11 17:16:44 +05:00
|
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
|
class NetworkInterfacesContainer(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Контейнер для группы сетевых интерфейсов с координатами
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
interfaces (List[Union[NetworkInterface, WiFiDevice]]): Список интерфейсов
|
|
|
|
|
|
container_x (int): Положение по оси X
|
|
|
|
|
|
container_y (int): Положение по оси Y
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
interfaces: List[Union[NetworkInterface, WiFiDevice]]
|
|
|
|
|
|
container_x: int
|
|
|
|
|
|
container_y: int
|
|
|
|
|
|
|
2025-06-11 17:16:44 +05:00
|
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
|
class Activation(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Модель активированных интерфейсов
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
id (int): Идентификатор ноды активированных интерфейсов
|
|
|
|
|
|
interfaces (List[Union[NetworkInterface, WiFiDevice]]): Активированные интерфейсы
|
|
|
|
|
|
container_x (int): Положение по X на холсте
|
|
|
|
|
|
container_y (int): Положение по Y на холсте
|
|
|
|
|
|
isOpen (bool): Флаг скрытия ноды на холсте
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
id: int
|
|
|
|
|
|
interfaces: List[Union[NetworkInterface, WiFiDevice]]
|
|
|
|
|
|
container_x: int
|
|
|
|
|
|
container_y: int
|
|
|
|
|
|
isOpen: bool = True
|
|
|
|
|
|
|
2025-06-11 17:16:44 +05:00
|
|
|
|
|
2025-06-09 10:17:12 +05:00
|
|
|
|
class Deactivation(BaseModel):
|
2025-06-11 17:16:44 +05:00
|
|
|
|
"""
|
|
|
|
|
|
Модель отключенных интерфейсов
|
|
|
|
|
|
|
|
|
|
|
|
Атрибуты:
|
|
|
|
|
|
id (int): Идентификатор ноды отключенных интерфейсов
|
|
|
|
|
|
interfaces (List[Union[NetworkInterface, WiFiDevice]]): Отключенные интерфейсы
|
|
|
|
|
|
container_x (int): Положение по X на холсте
|
|
|
|
|
|
container_y (int): Положение по Y на холсте
|
|
|
|
|
|
isOpen (bool): Флаг скрытия ноды на холсте
|
|
|
|
|
|
"""
|
2025-06-09 10:17:12 +05:00
|
|
|
|
id: int
|
|
|
|
|
|
interfaces: List[Union[NetworkInterface, WiFiDevice]]
|
|
|
|
|
|
container_x: int
|
|
|
|
|
|
container_y: int
|
|
|
|
|
|
isOpen: bool = True
|