GonetsDocs/Документация/Техническая-документация-api/api/services/network_service.md
2025-10-14 16:14:11 +05:00

195 lines
10 KiB
Markdown
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.

# 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** – Если произошла ошибка при получении данных точки доступа.