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