gonets/SRV/models/network.py

169 lines
5.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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]]): Список маршрутов (IPv4/IPv6)
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 (IPv4/IPv6)
Атрибуты:
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 устройства (наследуется от NetworkInterface)
Атрибуты:
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