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))[source]
Bases:
objectСервис для взаимодействия с NetworkManager через D-Bus.
Предоставляет асинхронные методы для получения информации о сетевых интерфейсах, их конфигурациях IP, Wi-Fi и состояниях.
- async get_activated_interfaces(initial_positions: Dict[str, Tuple[int, int]] = None) List[NetworkInterface][source]
Получает список активных сетевых интерфейсов.
- 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[source]
Получает объект, содержащий список активных интерфейсов и координаты контейнера.
- 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[source]
Извлекает имя соединения (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][source]
Получает список неактивных сетевых интерфейсов.
- 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[source]
Получает объект, содержащий список неактивных интерфейсов и координаты контейнера.
- 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][source]
Возвращает имя хоста из команды 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][source]
Получает список интерфейсов по указанному состоянию.
- 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[source]
Получает объект, содержащий список интерфейсов и координаты контейнера.
- 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][source]
Получает конфигурацию 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[source]
Получает метод 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][source]
Получает список сетевых интерфейсов.
- 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[source]
Получает контейнер с сетевыми интерфейсами и координатами контейнера.
- 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][source]
Получает информацию о 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 – Если произошла ошибка при получении данных точки доступа.