169 lines
5.4 KiB
Python
169 lines
5.4 KiB
Python
from typing import List, Optional, Union
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class IPv4Route(BaseModel):
|
|
"""Модель маршрута IPv4.
|
|
|
|
Атрибуты:
|
|
|
|
- ``destination`` (str): IP-адрес назначения.
|
|
- ``prefix`` (int): Префикс подсети в формате CIDR.
|
|
- ``next_hop`` (str): Адрес следующего узла (маршрутизатор).
|
|
- ``metric`` (int): Метрика маршрута.
|
|
"""
|
|
|
|
destination: str
|
|
prefix: int
|
|
next_hop: str
|
|
metric: int
|
|
|
|
|
|
class IPv6Route(BaseModel):
|
|
"""Модель маршрута IPv6.
|
|
|
|
Атрибуты:
|
|
|
|
- ``destination`` (str): IP-адрес назначения.
|
|
- ``prefix`` (int): Префикс подсети в формате CIDR.
|
|
- ``next_hop`` (str): Адрес следующего узла.
|
|
- ``metric`` (int): Метрика маршрута.
|
|
"""
|
|
|
|
destination: str
|
|
prefix: int
|
|
next_hop: str
|
|
metric: int
|
|
|
|
|
|
class IndividualIPConfig(BaseModel):
|
|
"""Модель индивидуальной конфигурации IP-адреса.
|
|
|
|
Атрибуты:
|
|
|
|
- ``address`` (str): IP-адрес интерфейса.
|
|
- ``routes`` (List[Union[IPv4Route, IPv6Route]]): Список маршрутов.
|
|
- ``method`` (Optional[str]): Метод назначения IP.
|
|
- ``gateway`` (str): Шлюз по умолчанию.
|
|
- ``dns`` (List[str]): Список DNS-серверов.
|
|
"""
|
|
|
|
address: str
|
|
routes: List[Union[IPv4Route, IPv6Route]]
|
|
method: Optional[str]
|
|
gateway: str
|
|
dns: List[str]
|
|
|
|
|
|
class IPConfig(BaseModel):
|
|
"""Групповая конфигурация IP-адресов.
|
|
|
|
Атрибуты:
|
|
|
|
- ``configurations`` (List[IndividualIPConfig]): Индивидуальные IP-конфигурации.
|
|
"""
|
|
|
|
configurations: List[IndividualIPConfig]
|
|
|
|
|
|
class NetworkInterface(BaseModel):
|
|
"""Модель базового сетевого интерфейса.
|
|
|
|
Атрибуты:
|
|
|
|
- ``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 на холсте.
|
|
"""
|
|
|
|
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
|
|
|
|
|
|
class WiFiDevice(NetworkInterface):
|
|
"""Расширенная модель Wi-Fi устройства.
|
|
|
|
Атрибуты:
|
|
|
|
- ``ssid`` (Optional[str]): Название Wi-Fi сети.
|
|
- ``bssid`` (Optional[str]): MAC-адрес точки доступа.
|
|
- ``bitrate`` (Optional[int]): Скорость соединения.
|
|
- ``strength`` (Optional[int]): Уровень сигнала.
|
|
- ``frequency`` (Optional[float]): Рабочая частота.
|
|
- ``mode`` (Union[str, int]): Режим работы.
|
|
"""
|
|
|
|
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
|
|
|
|
|
|
class NetworkInterfacesContainer(BaseModel):
|
|
"""Контейнер для набора сетевых интерфейсов.
|
|
|
|
Атрибуты:
|
|
|
|
- ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Список интерфейсов.
|
|
- ``container_x`` (int): Положение по оси X.
|
|
- ``container_y`` (int): Положение по оси Y.
|
|
"""
|
|
|
|
interfaces: List[Union[NetworkInterface, WiFiDevice]]
|
|
container_x: int
|
|
container_y: int
|
|
|
|
|
|
class Activation(BaseModel):
|
|
"""Модель узла активных интерфейсов.
|
|
|
|
Атрибуты:
|
|
|
|
- ``id`` (int): Идентификатор ноды.
|
|
- ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Активные интерфейсы.
|
|
- ``container_x`` (int): Координата X на холсте.
|
|
- ``container_y`` (int): Координата Y на холсте.
|
|
- ``isOpen`` (bool): Флаг отображения узла на холсте.
|
|
"""
|
|
|
|
id: int
|
|
interfaces: List[Union[NetworkInterface, WiFiDevice]]
|
|
container_x: int
|
|
container_y: int
|
|
isOpen: bool = True
|
|
|
|
|
|
class Deactivation(BaseModel):
|
|
"""Модель узла отключённых интерфейсов.
|
|
|
|
Атрибуты:
|
|
|
|
- ``id`` (int): Идентификатор ноды.
|
|
- ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Список отключённых интерфейсов.
|
|
- ``container_x`` (int): Координата X на холсте.
|
|
- ``container_y`` (int): Координата Y на холсте.
|
|
- ``isOpen`` (bool): Флаг отображения узла на холсте.
|
|
"""
|
|
|
|
id: int
|
|
interfaces: List[Union[NetworkInterface, WiFiDevice]]
|
|
container_x: int
|
|
container_y: int
|
|
isOpen: bool = True
|