70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
from typing import List, Optional, Union
|
|
from pydantic import BaseModel
|
|
|
|
|
|
# Класс для маршрутов IPv4
|
|
class IPv4Route(BaseModel):
|
|
destination: str
|
|
prefix: int
|
|
next_hop: str
|
|
metric: int
|
|
|
|
# Класс для маршрутов IPv6
|
|
class IPv6Route(BaseModel):
|
|
destination: str
|
|
prefix: int
|
|
next_hop: str
|
|
metric: int
|
|
|
|
# Класс для индивидуальной конфигурации IP
|
|
class IndividualIPConfig(BaseModel):
|
|
address: str
|
|
routes: List[Union[IPv4Route, IPv6Route]]
|
|
method: Optional[str]
|
|
gateway: str
|
|
dns: List[str]
|
|
|
|
# Класс для конфигурации IP
|
|
class IPConfig(BaseModel):
|
|
configurations: List[IndividualIPConfig]
|
|
|
|
# Класс для сетевого интерфейса
|
|
class NetworkInterface(BaseModel):
|
|
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
|
|
|
|
# Класс для WiFi устройства
|
|
class WiFiDevice(NetworkInterface):
|
|
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
|
|
container_y: int
|
|
|
|
class Activation(BaseModel):
|
|
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
|
|
container_y: int
|
|
isOpen: bool = True
|