196 lines
10 KiB
Markdown
196 lines
10 KiB
Markdown
|
|
# Network Service
|
|||
|
|
|
|||
|
|
Сервис чтения сетевого состояния через NetworkManager (D‑Bus).
|
|||
|
|
|
|||
|
|
Назначение:
|
|||
|
|
|
|||
|
|
- Предоставляет асинхронные методы для сборки унифицированных моделей сетевых интерфейсов (Ethernet/Wi‑Fi), их IP‑конфигураций, а также получения имени хоста. Используется API‑слоем для визуализации и управления.
|
|||
|
|
|
|||
|
|
Особенности:
|
|||
|
|
|
|||
|
|
- Фильтрация loopback и явно неактивных интерфейсов.
|
|||
|
|
- Адаптация данных D‑Bus в pydantic‑модели (NetworkInterface, WiFiDevice, NetworkInterfacesContainer).
|
|||
|
|
|
|||
|
|
### *class* services.network_service.NetworkService(translations: Translations = Depends(translations_dependency))
|
|||
|
|
|
|||
|
|
Bases: `object`
|
|||
|
|
|
|||
|
|
Сервис для взаимодействия с NetworkManager через D-Bus.
|
|||
|
|
|
|||
|
|
Предоставляет асинхронные методы для получения информации о сетевых интерфейсах,
|
|||
|
|
их конфигурациях IP, Wi-Fi и состояниях.
|
|||
|
|
|
|||
|
|
#### *async* get_activated_interfaces(initial_positions: Dict[str, Tuple[int, int]] = None) → List[NetworkInterface]
|
|||
|
|
|
|||
|
|
Получает список активных сетевых интерфейсов.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
**initial_positions** (*Dict* *[**str* *,* *Tuple* *[**int* *,* *int* *]* *]* *,* *optional*) – Словарь начальных
|
|||
|
|
координат (x, y) для интерфейсов. По умолчанию None.
|
|||
|
|
* **Returns:**
|
|||
|
|
Список активных интерфейсов (state == “100”).
|
|||
|
|
* **Return type:**
|
|||
|
|
List[NetworkInterface]
|
|||
|
|
|
|||
|
|
#### *async* get_activated_interfaces_container(initial_positions: Dict[str, Tuple[int, int]] = None, container_x: int = 0, container_y: int = 0) → NetworkInterfacesContainer
|
|||
|
|
|
|||
|
|
Получает объект, содержащий список активных интерфейсов и координаты контейнера.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
* **initial_positions** (*Dict* *[**str* *,* *Tuple* *[**int* *,* *int* *]* *]* *,* *optional*) – Словарь начальных
|
|||
|
|
координат (x, y) для интерфейсов. По умолчанию None.
|
|||
|
|
* **container_x** (*int* *,* *optional*) – Координата X контейнера. По умолчанию 0.
|
|||
|
|
* **container_y** (*int* *,* *optional*) – Координата Y контейнера. По умолчанию 0.
|
|||
|
|
* **Returns:**
|
|||
|
|
Объект с активными интерфейсами и координатами.
|
|||
|
|
* **Return type:**
|
|||
|
|
NetworkInterfacesContainer
|
|||
|
|
|
|||
|
|
#### *async* get_connection_name(device: sdbus_async.networkmanager.NetworkDeviceGeneric) → str
|
|||
|
|
|
|||
|
|
Извлекает имя соединения (GENERAL.CONNECTION) для устройства.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
**device** (*NetworkDeviceGeneric*) – Объект устройства NetworkManager.
|
|||
|
|
* **Returns:**
|
|||
|
|
Имя соединения или “unknown” в случае ошибки.
|
|||
|
|
* **Return type:**
|
|||
|
|
str
|
|||
|
|
* **Raises:**
|
|||
|
|
**Exception** – Если произошла ошибка при получении настроек соединения.
|
|||
|
|
|
|||
|
|
#### *async* get_deactivated_interfaces(initial_positions: Dict[str, Tuple[int, int]] = None) → List[NetworkInterface]
|
|||
|
|
|
|||
|
|
Получает список неактивных сетевых интерфейсов.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
**initial_positions** (*Dict* *[**str* *,* *Tuple* *[**int* *,* *int* *]* *]* *,* *optional*) – Словарь начальных
|
|||
|
|
координат (x, y) для интерфейсов. По умолчанию None.
|
|||
|
|
* **Returns:**
|
|||
|
|
Список интерфейсов с state != “100”.
|
|||
|
|
* **Return type:**
|
|||
|
|
List[NetworkInterface]
|
|||
|
|
|
|||
|
|
#### *async* get_deactivated_interfaces_container(initial_positions: Dict[str, Tuple[int, int]] = None, container_x: int = 0, container_y: int = 0) → NetworkInterfacesContainer
|
|||
|
|
|
|||
|
|
Получает объект, содержащий список неактивных интерфейсов и координаты контейнера.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
* **initial_positions** (*Dict* *[**str* *,* *Tuple* *[**int* *,* *int* *]* *]* *,* *optional*) – Словарь начальных
|
|||
|
|
координат (x, y) для интерфейсов. По умолчанию None.
|
|||
|
|
* **container_x** (*int* *,* *optional*) – Координата X контейнера. По умолчанию 0.
|
|||
|
|
* **container_y** (*int* *,* *optional*) – Координата Y контейнера. По умолчанию 0.
|
|||
|
|
* **Returns:**
|
|||
|
|
Объект с неактивными интерфейсами и координатами.
|
|||
|
|
* **Return type:**
|
|||
|
|
NetworkInterfacesContainer
|
|||
|
|
|
|||
|
|
#### *async* get_hostname() → Dict[str, str]
|
|||
|
|
|
|||
|
|
Возвращает имя хоста из команды hostname в формате JSON.
|
|||
|
|
|
|||
|
|
* **Returns:**
|
|||
|
|
Словарь с ключом “hostname” и значением имени хоста.
|
|||
|
|
* **Return type:**
|
|||
|
|
Dict[str, str]
|
|||
|
|
* **Raises:**
|
|||
|
|
**RuntimeError** – Если произошла ошибка при выполнении команды hostname
|
|||
|
|
или обработке вывода.
|
|||
|
|
|
|||
|
|
#### *async* get_interfaces_by_state(state: str, initial_positions: Dict[str, Tuple[int, int]] = None) → List[NetworkInterface]
|
|||
|
|
|
|||
|
|
Получает список интерфейсов по указанному состоянию.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
* **state** (*str*) – Состояние интерфейса (например, “100” для активных).
|
|||
|
|
* **initial_positions** (*Dict* *[**str* *,* *Tuple* *[**int* *,* *int* *]* *]* *,* *optional*) – Словарь начальных
|
|||
|
|
координат (x, y) для интерфейсов. По умолчанию None.
|
|||
|
|
* **Returns:**
|
|||
|
|
Список интерфейсов с указанным состоянием.
|
|||
|
|
* **Return type:**
|
|||
|
|
List[NetworkInterface]
|
|||
|
|
|
|||
|
|
#### *async* get_interfaces_container(state: str | None = None, initial_positions: Dict[str, Tuple[int, int]] = None, container_x: int = 0, container_y: int = 0) → NetworkInterfacesContainer
|
|||
|
|
|
|||
|
|
Получает объект, содержащий список интерфейсов и координаты контейнера.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
* **state** (*Optional* *[**str* *]* *,* *optional*) – Состояние интерфейсов (например, “100”).
|
|||
|
|
По умолчанию None (все интерфейсы).
|
|||
|
|
* **initial_positions** (*Dict* *[**str* *,* *Tuple* *[**int* *,* *int* *]* *]* *,* *optional*) – Словарь начальных
|
|||
|
|
координат (x, y) для интерфейсов. По умолчанию None.
|
|||
|
|
* **container_x** (*int* *,* *optional*) – Координата X контейнера. По умолчанию 0.
|
|||
|
|
* **container_y** (*int* *,* *optional*) – Координата Y контейнера. По умолчанию 0.
|
|||
|
|
* **Returns:**
|
|||
|
|
Объект с интерфейсами и координатами контейнера.
|
|||
|
|
* **Return type:**
|
|||
|
|
NetworkInterfacesContainer
|
|||
|
|
|
|||
|
|
#### *async* get_ip_config(device: sdbus_async.networkmanager.NetworkDeviceGeneric, ip_version: str) → List[IndividualIPConfig]
|
|||
|
|
|
|||
|
|
Получает конфигурацию IP для устройства.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
* **device** (*NetworkDeviceGeneric*) – Объект устройства NetworkManager.
|
|||
|
|
* **ip_version** (*str*) – Версия IP (“4” или “6”).
|
|||
|
|
* **Returns:**
|
|||
|
|
Список конфигураций IP, включая адреса и маршруты.
|
|||
|
|
* **Return type:**
|
|||
|
|
List[IndividualIPConfig]
|
|||
|
|
* **Raises:**
|
|||
|
|
**Exception** – Если произошла ошибка при получении данных IP.
|
|||
|
|
|
|||
|
|
#### *async* get_ip_method(device: sdbus_async.networkmanager.NetworkDeviceGeneric, ip_type: str) → str
|
|||
|
|
|
|||
|
|
Получает метод IP (например, “auto”, “manual”) для указанного устройства.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
* **device** (*NetworkDeviceGeneric*) – Объект устройства NetworkManager.
|
|||
|
|
* **ip_type** (*str*) – Тип IP (например, “ipv4” или “ipv6”).
|
|||
|
|
* **Returns:**
|
|||
|
|
Метод IP или “unknown” в случае ошибки.
|
|||
|
|
* **Return type:**
|
|||
|
|
str
|
|||
|
|
* **Raises:**
|
|||
|
|
**Exception** – Если произошла ошибка при получении настроек соединения.
|
|||
|
|
|
|||
|
|
#### *async* get_network_interfaces(initial_positions: Dict[str, Tuple[int, int]] = None) → List[NetworkInterface | WiFiDevice]
|
|||
|
|
|
|||
|
|
Получает список сетевых интерфейсов.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
**initial_positions** (*Dict* *[**str* *,* *Tuple* *[**int* *,* *int* *]* *]* *,* *optional*) – Словарь начальных
|
|||
|
|
координат (x, y) для интерфейсов. По умолчанию None (используются (100, 100)).
|
|||
|
|
* **Returns:**
|
|||
|
|
Список объектов интерфейсов,
|
|||
|
|
: включая Wi-Fi устройства.
|
|||
|
|
* **Return type:**
|
|||
|
|
List[Union[NetworkInterface, WiFiDevice]]
|
|||
|
|
|
|||
|
|
Исключает интерфейсы типа LOOPBACK и неактивные состояния (state == “10”).
|
|||
|
|
|
|||
|
|
#### *async* get_network_interfaces_container(initial_positions: Dict[str, Tuple[int, int]] | None = None) → NetworkInterfacesContainer
|
|||
|
|
|
|||
|
|
Получает контейнер с сетевыми интерфейсами и координатами контейнера.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
**initial_positions** (*Optional* *[**Dict* *[**str* *,* *Tuple* *[**int* *,* *int* *]* *]* *]* *,* *optional*) – Словарь начальных координат (x, y) для интерфейсов. По умолчанию None.
|
|||
|
|
* **Returns:**
|
|||
|
|
Объект с интерфейсами и координатами (0, 0).
|
|||
|
|
* **Return type:**
|
|||
|
|
NetworkInterfacesContainer
|
|||
|
|
|
|||
|
|
#### *async* get_wifi_info(wifi_device: sdbus_async.networkmanager.NetworkDeviceWireless) → Dict[str, str | int | None]
|
|||
|
|
|
|||
|
|
Получает информацию о Wi-Fi устройстве.
|
|||
|
|
|
|||
|
|
* **Parameters:**
|
|||
|
|
**wifi_device** (*NetworkDeviceWireless*) – Объект Wi-Fi устройства NetworkManager.
|
|||
|
|
* **Returns:**
|
|||
|
|
Словарь с данными Wi-Fi (SSID, BSSID,
|
|||
|
|
: bitrate, strength, frequency, mode), где значения могут быть None.
|
|||
|
|
* **Return type:**
|
|||
|
|
Dict[str, Optional[Union[str, int]]]
|
|||
|
|
* **Raises:**
|
|||
|
|
**Exception** – Если произошла ошибка при получении данных точки доступа.
|