GonetsDocs/Documentation/Tech-docs/api/services/network_service.md
2025-10-14 16:19:35 +05:00

10 KiB
Raw Permalink Blame History

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