Repair docs (html, md). Update docstrings

This commit is contained in:
parent e264750187
commit 6a4ad48577
125 changed files with 3706 additions and 4913 deletions

Binary file not shown.

Binary file not shown.

View file

@ -288,6 +288,12 @@
<div class="viewcode-block" id="RuleNumbers">
<a class="viewcode-back" href="../../../api/endpoints/ufw.html#api.v1.ufw.RuleNumbers">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">RuleNumbers</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель запроса на удаление UFW правил.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> - ``numbers`` (List[int]): Список номеров правил для удаления.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">numbers</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">Field</span><span class="p">(</span>
<span class="o">...</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;Список номеров правил для удаления&quot;</span><span class="p">)</span></div>

View file

@ -282,13 +282,13 @@
<div class="viewcode-block" id="UserCreate">
<a class="viewcode-back" href="../../api/models/auth.html#models.auth.UserCreate">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">UserCreate</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель созданного пользователя</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель созданного пользователя.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> username (str): Имя пользователя</span>
<span class="sd"> password (str): Пароль пользователя</span>
<span class="sd"> is_admin (bool): Административный доступ</span>
<span class="sd"> - ``username`` (str): Имя пользователя.</span>
<span class="sd"> - ``password`` (str): Пароль пользователя.</span>
<span class="sd"> - ``is_admin`` (bool): Флаг административного доступа.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">username</span><span class="p">:</span> <span class="nb">str</span>
@ -300,12 +300,12 @@
<div class="viewcode-block" id="UserLogin">
<a class="viewcode-back" href="../../api/models/auth.html#models.auth.UserLogin">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">UserLogin</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель авторизации пользователя</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель авторизации пользователя.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> username (str): Имя пользователя</span>
<span class="sd"> password (str): Пароль пользователя</span>
<span class="sd"> - ``username`` (str): Имя пользователя.</span>
<span class="sd"> - ``password`` (str): Пароль пользователя.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">username</span><span class="p">:</span> <span class="nb">str</span>
@ -316,13 +316,13 @@
<div class="viewcode-block" id="UserResponse">
<a class="viewcode-back" href="../../api/models/auth.html#models.auth.UserResponse">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">UserResponse</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель проверки наличия пользователя</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель, используемая при возврате сведений о пользователе.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> id (int): Идентификатор</span>
<span class="sd"> username (str): Имя пользователя</span>
<span class="sd"> is_admin (bool): Административный доступ</span>
<span class="sd"> - ``id`` (int): Идентификатор пользователя.</span>
<span class="sd"> - ``username`` (str): Имя пользователя.</span>
<span class="sd"> - ``is_admin`` (bool): Флаг административного доступа.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="nb">id</span><span class="p">:</span> <span class="nb">int</span>
@ -334,14 +334,14 @@
<div class="viewcode-block" id="Token">
<a class="viewcode-back" href="../../api/models/auth.html#models.auth.Token">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">Token</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Токен пользователя</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель JWT-токена.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> access_token (str): Токен пользователя (захэширован)</span>
<span class="sd"> token_type (str): Тип токена</span>
<span class="sd"> session_id (Optional[str]): Идентификатор сессии</span>
<span class="sd"> user (Optional[UserResponse]): Пользователь на основе проверки наличия пользователя</span>
<span class="sd"> - ``access_token`` (str): Значение токена (в формате JWT).</span>
<span class="sd"> - ``token_type`` (str): Тип токена (обычно ``bearer``).</span>
<span class="sd"> - ``session_id`` (Optional[str]): Идентификатор сессии.</span>
<span class="sd"> - ``user`` (Optional[UserResponse]): Данные пользователя, если включены в ответ.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">access_token</span><span class="p">:</span> <span class="nb">str</span>

View file

@ -282,14 +282,14 @@
<div class="viewcode-block" id="IPv4Route">
<a class="viewcode-back" href="../../api/models/network.html#models.network.IPv4Route">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">IPv4Route</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель маршрута IPv4</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель маршрута IPv4.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> destination (str): IP-адрес назначения</span>
<span class="sd"> prefix (int): Префикс подсети в формате CIDR</span>
<span class="sd"> next_hop (str): Адрес следующего узла (маршрутизатор)</span>
<span class="sd"> metric (int): Метрика маршрута</span>
<span class="sd"> - ``destination`` (str): IP-адрес назначения.</span>
<span class="sd"> - ``prefix`` (int): Префикс подсети в формате CIDR.</span>
<span class="sd"> - ``next_hop`` (str): Адрес следующего узла (маршрутизатор).</span>
<span class="sd"> - ``metric`` (int): Метрика маршрута.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">destination</span><span class="p">:</span> <span class="nb">str</span>
@ -302,14 +302,14 @@
<div class="viewcode-block" id="IPv6Route">
<a class="viewcode-back" href="../../api/models/network.html#models.network.IPv6Route">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">IPv6Route</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель маршрута IPv6</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель маршрута IPv6.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> destination (str): IP-адрес назначения</span>
<span class="sd"> prefix (int): Префикс подсети (CIDR)</span>
<span class="sd"> next_hop (str): Адрес следующего узла (маршрутизатор)</span>
<span class="sd"> metric (int): Метрика маршрута</span>
<span class="sd"> - ``destination`` (str): IP-адрес назначения.</span>
<span class="sd"> - ``prefix`` (int): Префикс подсети в формате CIDR.</span>
<span class="sd"> - ``next_hop`` (str): Адрес следующего узла.</span>
<span class="sd"> - ``metric`` (int): Метрика маршрута.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">destination</span><span class="p">:</span> <span class="nb">str</span>
@ -322,15 +322,15 @@
<div class="viewcode-block" id="IndividualIPConfig">
<a class="viewcode-back" href="../../api/models/network.html#models.network.IndividualIPConfig">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">IndividualIPConfig</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель индивидуальной конфигурации IP-адреса</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель индивидуальной конфигурации IP-адреса.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> address (str): IP-адрес интерфейса</span>
<span class="sd"> routes (List[Union[IPv4Route, IPv6Route]]): Список маршрутов (IPv4/IPv6)</span>
<span class="sd"> method (Optional[str]): Метод назначения IP</span>
<span class="sd"> gateway (str): Основной шлюз по умолчанию</span>
<span class="sd"> dns (List[str]): Список DNS-серверов</span>
<span class="sd"> - ``address`` (str): IP-адрес интерфейса.</span>
<span class="sd"> - ``routes`` (List[Union[IPv4Route, IPv6Route]]): Список маршрутов.</span>
<span class="sd"> - ``method`` (Optional[str]): Метод назначения IP.</span>
<span class="sd"> - ``gateway`` (str): Шлюз по умолчанию.</span>
<span class="sd"> - ``dns`` (List[str]): Список DNS-серверов.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">address</span><span class="p">:</span> <span class="nb">str</span>
@ -344,11 +344,11 @@
<div class="viewcode-block" id="IPConfig">
<a class="viewcode-back" href="../../api/models/network.html#models.network.IPConfig">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">IPConfig</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель конфигурации IP (IPv4/IPv6)</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Групповая конфигурация IP-адресов.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> configurations (List[IndividualIPConfig]): Список индивидуальных IP-конфигураций</span>
<span class="sd"> - ``configurations`` (List[IndividualIPConfig]): Индивидуальные IP-конфигурации.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">configurations</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">IndividualIPConfig</span><span class="p">]</span></div>
@ -358,20 +358,20 @@
<div class="viewcode-block" id="NetworkInterface">
<a class="viewcode-back" href="../../api/models/network.html#models.network.NetworkInterface">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">NetworkInterface</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель базового сетевого интерфейса</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель базового сетевого интерфейса.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> name (str): Название интерфейса</span>
<span class="sd"> type (str): Тип интерфейса</span>
<span class="sd"> mac_address (str): MAC-адрес устройства</span>
<span class="sd"> device_state (str): Состояние устройства</span>
<span class="sd"> active_connection (str): Название активного соединения</span>
<span class="sd"> device_mtu (str): MTU устройства</span>
<span class="sd"> ipv4 (IPConfig): Конфигурация IPv4</span>
<span class="sd"> ipv6 (IPConfig): Конфигурация IPv6</span>
<span class="sd"> container_x (int): Положение по X на холсте</span>
<span class="sd"> container_y (int): Положение по Y на холсте</span>
<span class="sd"> - ``name`` (str): Название интерфейса.</span>
<span class="sd"> - ``type`` (str): Тип устройства.</span>
<span class="sd"> - ``mac_address`` (str): MAC-адрес.</span>
<span class="sd"> - ``device_state`` (str): Текущее состояние.</span>
<span class="sd"> - ``active_connection`` (str): Название активного соединения.</span>
<span class="sd"> - ``device_mtu`` (str): MTU устройства.</span>
<span class="sd"> - ``ipv4`` (IPConfig): IPv4-конфигурация.</span>
<span class="sd"> - ``ipv6`` (IPConfig): IPv6-конфигурация.</span>
<span class="sd"> - ``container_x`` (int): Положение по оси X на холсте.</span>
<span class="sd"> - ``container_y`` (int): Положение по оси Y на холсте.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
@ -390,16 +390,16 @@
<div class="viewcode-block" id="WiFiDevice">
<a class="viewcode-back" href="../../api/models/network.html#models.network.WiFiDevice">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">WiFiDevice</span><span class="p">(</span><span class="n">NetworkInterface</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель Wi-Fi устройства (наследуется от NetworkInterface)</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Расширенная модель Wi-Fi устройства.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> ssid (Optional[str]): Название Wi-Fi сети</span>
<span class="sd"> bssid (Optional[str]): MAC-адрес точки доступа</span>
<span class="sd"> bitrate (Optional[int]): Скорость соединения</span>
<span class="sd"> strength (Optional[int]): Уровень сигнала</span>
<span class="sd"> frequency (Optional[float]): Частота</span>
<span class="sd"> mode (Union[str, int]): Режим работы</span>
<span class="sd"> - ``ssid`` (Optional[str]): Название Wi-Fi сети.</span>
<span class="sd"> - ``bssid`` (Optional[str]): MAC-адрес точки доступа.</span>
<span class="sd"> - ``bitrate`` (Optional[int]): Скорость соединения.</span>
<span class="sd"> - ``strength`` (Optional[int]): Уровень сигнала.</span>
<span class="sd"> - ``frequency`` (Optional[float]): Рабочая частота.</span>
<span class="sd"> - ``mode`` (Union[str, int]): Режим работы.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ssid</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
@ -414,13 +414,13 @@
<div class="viewcode-block" id="NetworkInterfacesContainer">
<a class="viewcode-back" href="../../api/models/network.html#models.network.NetworkInterfacesContainer">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">NetworkInterfacesContainer</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Контейнер для группы сетевых интерфейсов с координатами</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Контейнер для набора сетевых интерфейсов.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> interfaces (List[Union[NetworkInterface, WiFiDevice]]): Список интерфейсов</span>
<span class="sd"> container_x (int): Положение по оси X</span>
<span class="sd"> container_y (int): Положение по оси Y</span>
<span class="sd"> - ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Список интерфейсов.</span>
<span class="sd"> - ``container_x`` (int): Положение по оси X.</span>
<span class="sd"> - ``container_y`` (int): Положение по оси Y.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">interfaces</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">NetworkInterface</span><span class="p">,</span> <span class="n">WiFiDevice</span><span class="p">]]</span>
@ -432,15 +432,15 @@
<div class="viewcode-block" id="Activation">
<a class="viewcode-back" href="../../api/models/network.html#models.network.Activation">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">Activation</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель активированных интерфейсов</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель узла активных интерфейсов.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> id (int): Идентификатор ноды активированных интерфейсов</span>
<span class="sd"> interfaces (List[Union[NetworkInterface, WiFiDevice]]): Активированные интерфейсы</span>
<span class="sd"> container_x (int): Положение по X на холсте</span>
<span class="sd"> container_y (int): Положение по Y на холсте</span>
<span class="sd"> isOpen (bool): Флаг скрытия ноды на холсте</span>
<span class="sd"> - ``id`` (int): Идентификатор ноды.</span>
<span class="sd"> - ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Активные интерфейсы.</span>
<span class="sd"> - ``container_x`` (int): Координата X на холсте.</span>
<span class="sd"> - ``container_y`` (int): Координата Y на холсте.</span>
<span class="sd"> - ``isOpen`` (bool): Флаг отображения узла на холсте.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="nb">id</span><span class="p">:</span> <span class="nb">int</span>
@ -454,15 +454,15 @@
<div class="viewcode-block" id="Deactivation">
<a class="viewcode-back" href="../../api/models/network.html#models.network.Deactivation">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">Deactivation</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель отключенных интерфейсов</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель узла отключённых интерфейсов.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> id (int): Идентификатор ноды отключенных интерфейсов</span>
<span class="sd"> interfaces (List[Union[NetworkInterface, WiFiDevice]]): Отключенные интерфейсы</span>
<span class="sd"> container_x (int): Положение по X на холсте</span>
<span class="sd"> container_y (int): Положение по Y на холсте</span>
<span class="sd"> isOpen (bool): Флаг скрытия ноды на холсте</span>
<span class="sd"> - ``id`` (int): Идентификатор ноды.</span>
<span class="sd"> - ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Список отключённых интерфейсов.</span>
<span class="sd"> - ``container_x`` (int): Координата X на холсте.</span>
<span class="sd"> - ``container_y`` (int): Координата Y на холсте.</span>
<span class="sd"> - ``isOpen`` (bool): Флаг отображения узла на холсте.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="nb">id</span><span class="p">:</span> <span class="nb">int</span>

View file

@ -281,11 +281,11 @@
<div class="viewcode-block" id="NoteRequest">
<a class="viewcode-back" href="../../api/models/request.html#models.request.NoteRequest">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">NoteRequest</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель добавления заметки к просканированному устройству</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель запроса на добавление заметки к устройству.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> note (str): Заметка устройства</span>
<span class="sd"> - ``note`` (str): Текст заметки.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">note</span><span class="p">:</span> <span class="nb">str</span></div>
@ -294,12 +294,12 @@
<div class="viewcode-block" id="WifiConnectRequest">
<a class="viewcode-back" href="../../api/models/request.html#models.request.WifiConnectRequest">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">WifiConnectRequest</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель для подключения к точке доступа Wi-Fi</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель запроса на подключение к Wi-Fi.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> ssid (str): Название точки доступа Wi-Fi</span>
<span class="sd"> password (str): Пароль точки доступа Wi-Fi</span>
<span class="sd"> - ``ssid`` (str): Название точки доступа.</span>
<span class="sd"> - ``password`` (str): Пароль доступа.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ssid</span><span class="p">:</span> <span class="nb">str</span>
<span class="n">password</span><span class="p">:</span> <span class="nb">str</span></div>
@ -308,11 +308,11 @@
<div class="viewcode-block" id="WifiDisconnectRequest">
<a class="viewcode-back" href="../../api/models/request.html#models.request.WifiDisconnectRequest">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">WifiDisconnectRequest</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель для отключения от точки доступа Wi-Fi</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель запроса на отключение от Wi-Fi.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> ssid (str): Название точки доступа Wi-Fi</span>
<span class="sd"> - ``ssid`` (str): Название точки доступа.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ssid</span><span class="p">:</span> <span class="nb">str</span></div>

View file

@ -281,18 +281,18 @@
<div class="viewcode-block" id="Device">
<a class="viewcode-back" href="../../api/models/subnet.html#models.subnet.Device">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">Device</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Сканируемое устройство в подсети</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель устройства, обнаруженного в подсети.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> ip (str): IP-адрес устройства</span>
<span class="sd"> mac (Optional[str]): MAC-адрес устройства</span>
<span class="sd"> hostname (Optional[str]): Имя хоста</span>
<span class="sd"> vendor (Optional[str]): Название производителя устройства (По MAC-адресу)</span>
<span class="sd"> open_ports (List[str]): Открытые порты устройства</span>
<span class="sd"> status (str): Статус устройства (онлайн/оффлайн)</span>
<span class="sd"> last_seen (Optional[str]): Последняя активность устройства</span>
<span class="sd"> note (Optional[str]): Заметка устройства</span>
<span class="sd"> - ``ip`` (str): IP-адрес устройства.</span>
<span class="sd"> - ``mac`` (Optional[str]): MAC-адрес устройства.</span>
<span class="sd"> - ``hostname`` (Optional[str]): Имя хоста.</span>
<span class="sd"> - ``vendor`` (Optional[str]): Производитель оборудования.</span>
<span class="sd"> - ``open_ports`` (List[str]): Открытые порты.</span>
<span class="sd"> - ``status`` (str): Состояние устройства (online/offline).</span>
<span class="sd"> - ``last_seen`` (Optional[str]): Время последнего обнаружения.</span>
<span class="sd"> - ``note`` (Optional[str]): Пользовательская заметка.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ip</span><span class="p">:</span> <span class="nb">str</span>
@ -308,12 +308,12 @@
<div class="viewcode-block" id="SubnetScanResult">
<a class="viewcode-back" href="../../api/models/subnet.html#models.subnet.SubnetScanResult">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">SubnetScanResult</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Результат сканирования устройств в подсети</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Результат сканирования подсети.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> devices (List[Device]): Список просканированных устройств</span>
<span class="sd"> error (Optional[str]): Сообщение об ошибке, если сканирование не удалось</span>
<span class="sd"> - ``devices`` (List[Device]): Найденные устройства.</span>
<span class="sd"> - ``error`` (Optional[str]): Сообщение об ошибке сканирования.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">devices</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Device</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
@ -323,11 +323,11 @@
<div class="viewcode-block" id="SubnetScanRequest">
<a class="viewcode-back" href="../../api/models/subnet.html#models.subnet.SubnetScanRequest">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">SubnetScanRequest</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Параметры для сканирования подсети</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Параметры запроса на сканирование подсети.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> subnet (Optional[str]): Подсеть для сканирования (например 192.168.1.0/24), опционально</span>
<span class="sd"> - ``subnet`` (Optional[str]): CIDR подсети (например, ``192.168.1.0/24``).</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">subnet</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></div>

View file

@ -282,19 +282,19 @@
<div class="viewcode-block" id="WifiAccessPoint">
<a class="viewcode-back" href="../../api/models/wifi.html#models.wifi.WifiAccessPoint">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">WifiAccessPoint</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Модель точки доступа Wi-Fi</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Модель Wi-Fi точки доступа.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> ssid (Optional[str]): Название точки доступа. Может быть скрытым</span>
<span class="sd"> bssid (str): Уникальный идентификатор точки доступа (по типу MAC-адреса)</span>
<span class="sd"> channel (Optional[int]): Канал, на котором работает точка доступа</span>
<span class="sd"> signal (Optional[int]): Уровень сигнала (dBm)</span>
<span class="sd"> encryption (Optional[str]): Тип шифрования (WPA2, WPA3, открытая и т.д.)</span>
<span class="sd"> frequency (Optional[str]): Частота вещания (2.4GHz/5GHz)</span>
<span class="sd"> vendor (Optional[str]): Производитель точки доступа (определяется по MAC-адресу)</span>
<span class="sd"> hidden (bool): Флаг скрытия названия точки доступа (ssid)</span>
<span class="sd"> note (Optional[str]): Заметка для точки доступа</span>
<span class="sd"> - ``ssid`` (Optional[str]): Название сети (может быть скрытым).</span>
<span class="sd"> - ``bssid`` (str): Уникальный идентификатор точки доступа.</span>
<span class="sd"> - ``channel`` (Optional[int]): Номер канала.</span>
<span class="sd"> - ``signal`` (Optional[int]): Уровень сигнала в dBm.</span>
<span class="sd"> - ``encryption`` (Optional[str]): Тип шифрования (WPA/WPA2/WPA3/открытая).</span>
<span class="sd"> - ``frequency`` (Optional[str]): Диапазон частот (2.4/5 ГГц).</span>
<span class="sd"> - ``vendor`` (Optional[str]): Производитель оборудования.</span>
<span class="sd"> - ``hidden`` (bool): Флаг скрытого SSID.</span>
<span class="sd"> - ``note`` (Optional[str]): Пользовательская заметка.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">ssid</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
@ -312,11 +312,11 @@
<div class="viewcode-block" id="WifiScanResult">
<a class="viewcode-back" href="../../api/models/wifi.html#models.wifi.WifiScanResult">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">WifiScanResult</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Результат сканирования Wi-Fi</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Результат сканирования Wi-Fi.</span>
<span class="sd"> Атрибуты:</span>
<span class="sd"> access_points (List[WifiAccessPoint]): Список найденных Wi-Fi точек доступа</span>
<span class="sd"> - ``access_points`` (List[WifiAccessPoint]): Найденные точки доступа.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">access_points</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">WifiAccessPoint</span><span class="p">]</span></div>

View file

@ -293,14 +293,26 @@
<span class="sd">- Для отправки ARP-кадров могут потребоваться повышенные привилегии или capability на сырой сокет.</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">logging</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">Depends</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">scapy.layers.l2</span><span class="w"> </span><span class="kn">import</span> <span class="n">ARP</span><span class="p">,</span> <span class="n">Ether</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">scapy.sendrecv</span><span class="w"> </span><span class="kn">import</span> <span class="n">srp</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">netifaces</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">netaddr</span><span class="w"> </span><span class="kn">import</span> <span class="n">IPNetwork</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">utils.i18n</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_translations</span><span class="p">,</span> <span class="n">_</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">babel.support</span><span class="w"> </span><span class="kn">import</span> <span class="n">Translations</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">scapy.layers.l2</span><span class="w"> </span><span class="kn">import</span> <span class="n">ARP</span><span class="p">,</span> <span class="n">Ether</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">scapy.sendrecv</span><span class="w"> </span><span class="kn">import</span> <span class="n">srp</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span> <span class="c1"># pragma: no cover - fallback for doc builds</span>
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;SPHINX_BUILD&quot;</span><span class="p">):</span>
<span class="n">ARP</span> <span class="o">=</span> <span class="n">Ether</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># type: ignore</span>
<span class="k">def</span><span class="w"> </span><span class="nf">srp</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">&quot;scapy is unavailable during documentation build&quot;</span><span class="p">)</span> <span class="kn">from</span><span class="w"> </span><span class="nn">exc</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span>
<div class="viewcode-block" id="NetworkScanner">
<a class="viewcode-back" href="../../api/services/arp_service.html#services.arp_service.NetworkScanner">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">NetworkScanner</span><span class="p">:</span>
@ -320,15 +332,34 @@
<span class="sd"> Инициализирует интерфейс, информацию об IP-адресах и локальный MAC-адрес.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interface</span> <span class="o">=</span> <span class="p">(</span>
<span class="n">interface</span> <span class="ow">or</span> <span class="n">netifaces</span><span class="o">.</span><span class="n">gateways</span><span class="p">()[</span><span class="s2">&quot;default&quot;</span><span class="p">][</span><span class="n">netifaces</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ip_info</span> <span class="o">=</span> <span class="n">netifaces</span><span class="o">.</span><span class="n">ifaddresses</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">interface</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
<span class="n">netifaces</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">,</span> <span class="p">[])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">networks</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">IPNetwork</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">ip</span><span class="p">[</span><span class="s1">&#39;addr&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">ip</span><span class="p">[</span><span class="s1">&#39;netmask&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">ip</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ip_info</span>
<span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">local_mac</span> <span class="o">=</span> <span class="n">netifaces</span><span class="o">.</span><span class="n">ifaddresses</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interface</span><span class="p">)[</span><span class="n">netifaces</span><span class="o">.</span><span class="n">AF_LINK</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s2">&quot;addr&quot;</span><span class="p">]</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">interface</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interface</span> <span class="o">=</span> <span class="n">interface</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">default_gateway</span> <span class="o">=</span> <span class="n">netifaces</span><span class="o">.</span><span class="n">gateways</span><span class="p">()</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;default&quot;</span><span class="p">,</span> <span class="p">{})</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
<span class="n">netifaces</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">)</span>
<span class="k">if</span> <span class="n">default_gateway</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interface</span> <span class="o">=</span> <span class="n">default_gateway</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">&quot;Default gateway not found&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ip_info</span> <span class="o">=</span> <span class="n">netifaces</span><span class="o">.</span><span class="n">ifaddresses</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">interface</span><span class="p">)</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
<span class="n">netifaces</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">,</span> <span class="p">[])</span>
<span class="bp">self</span><span class="o">.</span><span class="n">networks</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">IPNetwork</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">ip</span><span class="p">[</span><span class="s1">&#39;addr&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">ip</span><span class="p">[</span><span class="s1">&#39;netmask&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">ip</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">ip_info</span>
<span class="p">]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">local_mac</span> <span class="o">=</span> <span class="n">netifaces</span><span class="o">.</span><span class="n">ifaddresses</span><span class="p">(</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interface</span><span class="p">)[</span><span class="n">netifaces</span><span class="o">.</span><span class="n">AF_LINK</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s2">&quot;addr&quot;</span><span class="p">]</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;SPHINX_BUILD&quot;</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">interface</span> <span class="o">=</span> <span class="n">interface</span> <span class="ow">or</span> <span class="s2">&quot;eth0&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">ip_info</span> <span class="o">=</span> <span class="p">[]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">networks</span> <span class="o">=</span> <span class="p">[]</span>
<span class="bp">self</span><span class="o">.</span><span class="n">local_mac</span> <span class="o">=</span> <span class="s2">&quot;00:00:00:00:00:00&quot;</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;NetworkScanner falling back to mocked interface during documentation build: </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">exc</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span>
<span class="bp">self</span><span class="o">.</span><span class="n">translations</span> <span class="o">=</span> <span class="n">translations</span>
<span class="k">def</span><span class="w"> </span><span class="nf">_create_arp_packet</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target_ip</span><span class="p">):</span>

View file

@ -292,12 +292,17 @@
<span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<span class="n">CONFIG_PATH</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;GONETS_CONFIG_PATH&quot;</span><span class="p">,</span> <span class="s2">&quot;/etc/gonets/config.ini&quot;</span><span class="p">)</span>
<span class="n">config</span> <span class="o">=</span> <span class="n">configparser</span><span class="o">.</span><span class="n">ConfigParser</span><span class="p">()</span>
<span class="n">config_path</span> <span class="o">=</span> <span class="s2">&quot;/etc/gonets/config.ini&quot;</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">config_path</span><span class="p">):</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Configuration file </span><span class="si">{</span><span class="n">config_path</span><span class="si">}</span><span class="s2"> not found&quot;</span><span class="p">)</span>
<span class="n">config</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">config_path</span><span class="p">)</span>
<span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s2">&quot;JWT&quot;</span><span class="p">][</span><span class="s2">&quot;secret_key&quot;</span><span class="p">]</span>
<span class="n">read_files</span> <span class="o">=</span> <span class="n">config</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">CONFIG_PATH</span><span class="p">)</span>
<span class="k">if</span> <span class="s2">&quot;JWT&quot;</span> <span class="ow">in</span> <span class="n">config</span><span class="p">:</span>
<span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="s2">&quot;JWT&quot;</span><span class="p">][</span><span class="s2">&quot;secret_key&quot;</span><span class="p">]</span>
<span class="k">elif</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;SPHINX_BUILD&quot;</span><span class="p">):</span>
<span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">&quot;JWT secret not found; using dummy value for documentation build&quot;</span><span class="p">)</span>
<span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="s2">&quot;sphinx-placeholder-secret&quot;</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Configuration file </span><span class="si">{</span><span class="n">CONFIG_PATH</span><span class="si">}</span><span class="s2"> not found or missing [JWT] section&quot;</span><span class="p">)</span>
<span class="n">ALGORITHM</span> <span class="o">=</span> <span class="s2">&quot;HS256&quot;</span>
<span class="n">ACCESS_TOKEN_EXPIRE_MINUTES</span> <span class="o">=</span> <span class="mi">30</span>

View file

@ -302,14 +302,16 @@
<span class="k">class</span><span class="w"> </span><span class="nc">WifiStorage</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Класс для хранения данных о Wi-Fi сетях и их заметках по SSID.</span>
<span class="sd"> Формат:</span>
<span class="sd"> Формат::</span>
<span class="sd"> {</span>
<span class="sd"> &quot;networks&quot;: [{&quot;ssid&quot;: str, &quot;note&quot;: Optional[str]}]</span>
<span class="sd"> }</span>
<span class="sd"> Поведение:</span>
<span class="sd"> - Создаёт директорию хранения при инициализации, ведёт логирование путей.</span>
<span class="sd"> - Валидация структуры при чтении, безопасная запись с Unicode и отступами.</span>
<span class="sd"> - Создаёт директорию хранения при инициализации, ведёт логирование путей.</span>
<span class="sd"> - Валидирует структуру при чтении и безопасно записывает JSON с Unicode и отступами.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">storage_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;storage/wifi/wifi.json&quot;</span><span class="p">,</span> <span class="n">translations</span><span class="p">:</span> <span class="n">Translations</span> <span class="o">=</span> <span class="n">Depends</span><span class="p">(</span><span class="n">get_translations</span><span class="p">())):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">storage_file</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="n">storage_path</span><span class="p">)</span>

View file

@ -285,18 +285,23 @@
<span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<span class="n">DATA_DIR</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;GONETS_DATA_DIR&quot;</span><span class="p">,</span> <span class="s2">&quot;/etc/gonets&quot;</span><span class="p">)</span>
<span class="n">DEFAULT_USERS_PATH</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;GONETS_USERS_PATH&quot;</span><span class="p">,</span>
<span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">DATA_DIR</span><span class="p">,</span> <span class="s2">&quot;users.json&quot;</span><span class="p">))</span>
<div class="viewcode-block" id="JsonStorage">
<a class="viewcode-back" href="../../api/storage/json_storage.html#storage.json_storage.JsonStorage">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">JsonStorage</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Хранилище пользователей в JSON-файле.</span>
<span class="sd"> Назначение:</span>
<span class="sd"> Обеспечивает простое файловое хранилище для учетных записей пользователей</span>
<span class="sd"> без полноценной СУБД. Подходит для встраиваемых окружений и сценариев,</span>
<span class="sd"> где важна минимальная зависимость от внешних сервисов.</span>
<span class="sd"> Формат данных:</span>
<span class="sd"> JSON-структура вида:</span>
<span class="sd"> - Обеспечивает простое файловое хранилище учетных записей без полноценной СУБД.</span>
<span class="sd"> - Подходит для встраиваемых окружений, где критична минимальная зависимость от внешних сервисов.</span>
<span class="sd"> Формат данных::</span>
<span class="sd"> {</span>
<span class="sd"> &quot;users&quot;: [</span>
<span class="sd"> {&quot;id&quot;: int, &quot;username&quot;: str, &quot;password_hash&quot;: str, &quot;is_admin&quot;: bool},</span>
@ -306,18 +311,17 @@
<span class="sd"> }</span>
<span class="sd"> Безопасность:</span>
<span class="sd"> Пароли никогда не сохраняются в открытом виде. Для хеширования используется</span>
<span class="sd"> `passlib.context.CryptContext` со схемой `bcrypt`. Файл создаётся с правами</span>
<span class="sd"> доступа `0o600` (только владелец).</span>
<span class="sd"> Ограничения и замечания:</span>
<span class="sd"> - Отсутствует конкурентный доступ/блокировки файла — при использовании в</span>
<span class="sd"> многопроцессной среде может потребоваться внешняя синхронизация.</span>
<span class="sd"> - Имя файла и каталог по умолчанию `/etc/gonets/users.json` предполагают</span>
<span class="sd"> наличие прав на запись и предварительную подготовку окружения.</span>
<span class="sd"> - Пароли никогда не сохраняются в открытом виде: используется `passlib.context.CryptContext` со схемой `bcrypt`.</span>
<span class="sd"> - Файл создаётся с правами доступа ``0o600`` (чтение/запись только владельцу).</span>
<span class="sd"> Ограничения:</span>
<span class="sd"> - Нет блокировок для конкурентного доступа — в многопроцессной среде требуется внешняя синхронизация.</span>
<span class="sd"> - Значение пути по умолчанию ``/etc/gonets/users.json`` предполагает наличие прав на запись и предварительную настройку окружения.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;/etc/gonets/users.json&quot;</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Инициализирует хранилище пользователей.</span>
<span class="sd"> Args:</span>
@ -327,7 +331,7 @@
<span class="sd"> Создаёт объект CryptContext для хеширования паролей и проверяет/создаёт</span>
<span class="sd"> файл, если он отсутствует.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">file_path</span> <span class="o">=</span> <span class="n">file_path</span>
<span class="bp">self</span><span class="o">.</span><span class="n">file_path</span> <span class="o">=</span> <span class="n">file_path</span> <span class="ow">or</span> <span class="n">DEFAULT_USERS_PATH</span>
<span class="bp">self</span><span class="o">.</span><span class="n">pwd_context</span> <span class="o">=</span> <span class="n">CryptContext</span><span class="p">(</span><span class="n">schemes</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;bcrypt&quot;</span><span class="p">],</span> <span class="n">deprecated</span><span class="o">=</span><span class="s2">&quot;auto&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_ensure_file_exists</span><span class="p">()</span>

View file

@ -285,18 +285,23 @@
<span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
<span class="n">DATA_DIR</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;GONETS_DATA_DIR&quot;</span><span class="p">,</span> <span class="s2">&quot;/etc/gonets&quot;</span><span class="p">)</span>
<span class="n">DEFAULT_SESSIONS_PATH</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s2">&quot;GONETS_SESSIONS_PATH&quot;</span><span class="p">,</span>
<span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">DATA_DIR</span><span class="p">,</span> <span class="s2">&quot;sessions.json&quot;</span><span class="p">))</span>
<div class="viewcode-block" id="SessionStorage">
<a class="viewcode-back" href="../../api/storage/session_storage.html#storage.session_storage.SessionStorage">[docs]</a>
<span class="k">class</span><span class="w"> </span><span class="nc">SessionStorage</span><span class="p">:</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Хранилище сессий пользователей в JSON-файле.</span>
<span class="sd"> Назначение:</span>
<span class="sd"> Лёгкое файловое хранилище для сессионных токенов, сопоставленных с</span>
<span class="sd"> `client_id` (например, IP клиента). Предназначено для сред без БД и</span>
<span class="sd"> persistent-кэшей. Обеспечивает базовые операции и авто-очистку протухших</span>
<span class="sd"> сессий.</span>
<span class="sd"> Формат данных:</span>
<span class="sd"> - Лёгкое файловое хранилище сессионных токенов, сопоставленных с ``client_id`` (например, IP клиента).</span>
<span class="sd"> - Предназначено для сред без БД и persistent-кэшей; обеспечивает простые операции и автоочистку истёкших сессий.</span>
<span class="sd"> Формат данных::</span>
<span class="sd"> {</span>
<span class="sd"> &quot;sessions&quot;: {</span>
<span class="sd"> &quot;&lt;session_id&gt;&quot;: {</span>
@ -311,15 +316,16 @@
<span class="sd"> }</span>
<span class="sd"> Политика TTL:</span>
<span class="sd"> Каждая сессия действует 30 минут. При создании/чтении/удалении вызывается</span>
<span class="sd"> `clean_expired_sessions()` для удаления протухших записей.</span>
<span class="sd"> - Каждая сессия действует 30 минут; метод ``clean_expired_sessions`` удаляет записи с истёкшим сроком.</span>
<span class="sd"> Ограничения:</span>
<span class="sd"> - Нет файловых блокировок: в многопроцессных конфигурациях возможны гонки.</span>
<span class="sd"> - Размещение по умолчанию `/etc/gonets/sessions.json` требует прав на запись.</span>
<span class="sd"> - Отсутствуют файловые блокировки — в многопроцессной среде возможны гонки.</span>
<span class="sd"> - Путь по умолчанию ``/etc/gonets/sessions.json`` требует прав на запись.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;/etc/gonets/sessions.json&quot;</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_path</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span>
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Инициализирует хранилище сессий.</span>
<span class="sd"> Args:</span>
@ -328,7 +334,7 @@
<span class="sd"> Создаёт файл и директории, если они отсутствуют, с правами доступа 600.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">file_path</span> <span class="o">=</span> <span class="n">file_path</span>
<span class="bp">self</span><span class="o">.</span><span class="n">file_path</span> <span class="o">=</span> <span class="n">file_path</span> <span class="ow">or</span> <span class="n">DEFAULT_SESSIONS_PATH</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_ensure_file_exists</span><span class="p">()</span>
<span class="k">def</span><span class="w"> </span><span class="nf">_ensure_file_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>

View file

@ -4,7 +4,7 @@ GONETS SRV Documentation
Добро пожаловать в документацию серверной части GONETS (SRV).
Содержание
---------
----------
.. toctree::
:maxdepth: 2

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,13 +276,13 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-config.cors">
<span id="config-cors"></span><h1>config.cors<a class="headerlink" href="#module-config.cors" title="Link to this heading"></a></h1>
<section id="config-cors">
<h1>config.cors<a class="headerlink" href="#config-cors" title="Link to this heading"></a></h1>
<p>Конфигурация CORS для FastAPI-приложения GONETS.</p>
<p>Модуль инкапсулирует добавление middleware <cite>CORSMiddleware</cite> со списком
разрешённых источников (origins), характерных для локальной разработки и
@ -300,13 +300,13 @@ cors_config.add_cors_middleware()</p>
</dd>
</dl>
<dl class="py class">
<dt class="sig sig-object py" id="config.cors.CORSMiddlewareConfig">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">config.cors.</span></span><span class="sig-name descname"><span class="pre">CORSMiddlewareConfig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">FastAPI</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/config/cors.html#CORSMiddlewareConfig"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#config.cors.CORSMiddlewareConfig" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">config.cors.</span></span><span class="sig-name descname"><span class="pre">CORSMiddlewareConfig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">app</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">FastAPI</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/config/cors.html#CORSMiddlewareConfig"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для настройки CORS политики в FastAPI</p>
<dl class="py method">
<dt class="sig sig-object py" id="config.cors.CORSMiddlewareConfig.add_cors_middleware">
<span class="sig-name descname"><span class="pre">add_cors_middleware</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/config/cors.html#CORSMiddlewareConfig.add_cors_middleware"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#config.cors.CORSMiddlewareConfig.add_cors_middleware" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_cors_middleware</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/config/cors.html#CORSMiddlewareConfig.add_cors_middleware"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляем CORS в приложение FastAPI</p>
</dd></dl>
@ -357,31 +357,9 @@ cors_config.add_cors_middleware()</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">config.cors</a><ul>
<li><a class="reference internal" href="#config.cors.CORSMiddlewareConfig"><code class="docutils literal notranslate"><span class="pre">CORSMiddlewareConfig</span></code></a><ul>
<li><a class="reference internal" href="#config.cors.CORSMiddlewareConfig.add_cors_middleware"><code class="docutils literal notranslate"><span class="pre">CORSMiddlewareConfig.add_cors_middleware()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,16 +276,16 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-config.ports">
<span id="config-ports"></span><h1>config.ports<a class="headerlink" href="#module-config.ports" title="Link to this heading"></a></h1>
<section id="config-ports">
<h1>config.ports<a class="headerlink" href="#config-ports" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="config.ports.PortConfig">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">config.ports.</span></span><span class="sig-name descname"><span class="pre">PortConfig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">custom_ports</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/config/ports.html#PortConfig"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#config.ports.PortConfig" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">config.ports.</span></span><span class="sig-name descname"><span class="pre">PortConfig</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">custom_ports</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/config/ports.html#PortConfig"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Конфигурация известных портов для сетевого анализа.</p>
<dl class="simple">
@ -295,23 +295,26 @@
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="config.ports.PortConfig.get_port_name">
<span class="sig-name descname"><span class="pre">get_port_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/config/ports.html#PortConfig.get_port_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#config.ports.PortConfig.get_port_name" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_port_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/config/ports.html#PortConfig.get_port_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает название сервиса для указанного порта.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>port: Номер порта.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>port</strong> – Номер порта.</p>
</dd>
<dt>Returns:</dt><dd><p>Название сервиса или строка вида ‘Port-&lt;port&gt;’.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Название сервиса или строка вида ‘Port-&lt;port&gt;’.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="config.ports.PortConfig.get_ports">
<span class="sig-name descname"><span class="pre">get_ports</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/config/ports.html#PortConfig.get_ports"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#config.ports.PortConfig.get_ports" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_ports</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/config/ports.html#PortConfig.get_ports"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает список всех номеров портов.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>Список номеров портов.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Список номеров портов.</p>
</dd>
</dl>
</dd></dl>
@ -363,32 +366,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">config.ports</a><ul>
<li><a class="reference internal" href="#config.ports.PortConfig"><code class="docutils literal notranslate"><span class="pre">PortConfig</span></code></a><ul>
<li><a class="reference internal" href="#config.ports.PortConfig.get_port_name"><code class="docutils literal notranslate"><span class="pre">PortConfig.get_port_name()</span></code></a></li>
<li><a class="reference internal" href="#config.ports.PortConfig.get_ports"><code class="docutils literal notranslate"><span class="pre">PortConfig.get_ports()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,16 +276,16 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-core.cli_executor">
<span id="core-cli-executor"></span><h1>core.cli_executor<a class="headerlink" href="#module-core.cli_executor" title="Link to this heading"></a></h1>
<section id="core-cli-executor">
<h1>core.cli_executor<a class="headerlink" href="#core-cli-executor" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="core.cli_executor.CLIExecutor">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">core.cli_executor.</span></span><span class="sig-name descname"><span class="pre">CLIExecutor</span></span><a class="reference internal" href="../../_modules/core/cli_executor.html#CLIExecutor"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#core.cli_executor.CLIExecutor" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">core.cli_executor.</span></span><span class="sig-name descname"><span class="pre">CLIExecutor</span></span><a class="reference internal" href="../../_modules/core/cli_executor.html#CLIExecutor"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Утилита для безопасного выполнения CLI-команд.</p>
<dl class="simple">
@ -294,13 +294,18 @@
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="core.cli_executor.CLIExecutor.run">
<em class="property"><span class="k"><span class="pre">static</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">command</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/core/cli_executor.html#CLIExecutor.run"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#core.cli_executor.CLIExecutor.run" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">static</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">command</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/core/cli_executor.html#CLIExecutor.run"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Выполняет команду в системе и возвращает код и вывод.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>command (list): Список аргументов команды для выполнения.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>command</strong> (<em>list</em>) – Список аргументов команды для выполнения.</p>
</dd>
<dt>Returns:</dt><dd><p>tuple: Код возврата и вывод команды.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Код возврата и вывод команды.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>tuple</p>
</dd>
</dl>
</dd></dl>
@ -352,31 +357,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">core.cli_executor</a><ul>
<li><a class="reference internal" href="#core.cli_executor.CLIExecutor"><code class="docutils literal notranslate"><span class="pre">CLIExecutor</span></code></a><ul>
<li><a class="reference internal" href="#core.cli_executor.CLIExecutor.run"><code class="docutils literal notranslate"><span class="pre">CLIExecutor.run()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,112 +276,143 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-api.v1.auth">
<span id="api-v1-auth"></span><h1>api.v1.auth<a class="headerlink" href="#module-api.v1.auth" title="Link to this heading"></a></h1>
<section id="api-v1-auth">
<h1>api.v1.auth<a class="headerlink" href="#api-v1-auth" title="Link to this heading"></a></h1>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.auth.check_users_file">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">check_users_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#check_users_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.auth.check_users_file" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">check_users_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#check_users_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет, существует ли файл users.json и содержит ли он пользователей.</p>
<p>Возвращает информацию о состоянии файла и наличии пользователей.</p>
<dl class="simple">
<dt>Returns:</dt><dd><dl class="simple">
<dt>dict: Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“exists” (bool): Существует ли файл.</p></li>
<li><p>“has_users” (bool): Содержит ли файл пользователей.</p></li>
<li><p>“message” (str): Сообщение с описанием результата.</p></li>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><dl class="simple">
<dt>Словарь с ключами:</dt><dd><ul class="simple">
<li><p>”exists” (bool): Существует ли файл.</p></li>
<li><p>”has_users” (bool): Содержит ли файл пользователей.</p></li>
<li><p>”message” (str): Сообщение с описанием результата.</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла ошибка при проверке файла (status_code=500).</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>dict</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>HTTPException</strong> – Если произошла ошибка при проверке файла (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.auth.get_current_user">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">get_current_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#get_current_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.auth.get_current_user" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">get_current_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#get_current_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает данные текущего пользователя и токен.</p>
<p>Проверяет активную сессию по client_id и возвращает информацию о пользователе
и токен для дальнейшего использования.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>request (Request): Объект запроса для получения client_id (IP-адрес клиента).
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>Request</em>) – Объект запроса для получения client_id (IP-адрес клиента).</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>dict: Словарь с ключами “user” (UserResponse), “access_token” (str) и</dt><dd><p>“token_type” (str, всегда “bearer”).</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с ключами “user” (UserResponse), “access_token” (str) и</dt><dd><p>”token_type” (str, всегда “bearer”).</p>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если сессия не найдена или истекла (status_code=401) или</dt><dd><p>произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если сессия не найдена или истекла (status_code=401) или
произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.auth.login">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">login</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/auth.html#models.auth.UserLogin" title="models.auth.UserLogin"><span class="pre">UserLogin</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#login"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.auth.login" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">login</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">UserLogin</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#login"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Авторизует пользователя и создаёт сессию.</p>
<p>Проверяет учетные данные пользователя и возвращает токен и session_id для
последующей авторизации.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>user (UserLogin): Объект с данными для входа (username, password).
request (Request): Объект запроса для получения client_id (IP-адрес клиента).
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>user</strong> (<em>UserLogin</em>) – Объект с данными для входа (username, password).</p></li>
<li><p><strong>request</strong> (<em>Request</em>) – Объект запроса для получения client_id (IP-адрес клиента).</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>Token: Объект с access_token и session_id для авторизации.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с access_token и session_id для авторизации.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если учетные данные неверны (status_code=401) или произошла</dt><dd><p>внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Token</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если учетные данные неверны (status_code=401) или произошла
внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.auth.logout">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">logout</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#logout"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.auth.logout" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">logout</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#logout"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Выход из системы, удаление сессии.</p>
<p>Удаляет активную сессию пользователя по client_id.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>request (Request): Объект запроса для получения client_id (IP-адрес клиента).
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>Request</em>) – Объект запроса для получения client_id (IP-адрес клиента).</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Пустой словарь или сообщение об успешном выходе.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Пустой словарь или сообщение об успешном выходе.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если сессия не найдена (status_code=401) или произошла</dt><dd><p>внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если сессия не найдена (status_code=401) или произошла
внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.auth.register">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">register</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/auth.html#models.auth.UserCreate" title="models.auth.UserCreate"><span class="pre">UserCreate</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#register"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.auth.register" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.auth.</span></span><span class="sig-name descname"><span class="pre">register</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">UserCreate</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/auth.html#register"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Регистрирует нового пользователя.</p>
<p>Создаёт нового пользователя на основе предоставленных данных и возвращает
информацию о зарегистрированном пользователе.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>user (UserCreate): Объект с данными нового пользователя (username, password, is_admin).
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>user</strong> (<em>UserCreate</em>) – Объект с данными нового пользователя (username, password, is_admin).</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>UserResponse: Объект с данными зарегистрированного пользователя (id, username, is_admin).</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с данными зарегистрированного пользователя (id, username, is_admin).</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если пользователь уже существует (status_code=400) или произошла</dt><dd><p>внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>UserResponse</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если пользователь уже существует (status_code=400) или произошла
внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
@ -431,32 +462,9 @@ translations: Объект переводов для текущего языка
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">api.v1.auth</a><ul>
<li><a class="reference internal" href="#api.v1.auth.check_users_file"><code class="docutils literal notranslate"><span class="pre">check_users_file()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.auth.get_current_user"><code class="docutils literal notranslate"><span class="pre">get_current_user()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.auth.login"><code class="docutils literal notranslate"><span class="pre">login()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.auth.logout"><code class="docutils literal notranslate"><span class="pre">logout()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.auth.register"><code class="docutils literal notranslate"><span class="pre">register()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,93 +276,110 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-api.v1.ip">
<span id="api-v1-ip"></span><h1>api.v1.ip<a class="headerlink" href="#module-api.v1.ip" title="Link to this heading"></a></h1>
<section id="api-v1-ip">
<h1>api.v1.ip<a class="headerlink" href="#api-v1-ip" title="Link to this heading"></a></h1>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ip.apply_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ip.</span></span><span class="sig-name descname"><span class="pre">apply_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ip.html#apply_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ip.apply_ip_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ip.</span></span><span class="sig-name descname"><span class="pre">apply_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ip.html#apply_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Применяет проверенные IP-настройки к указанному сетевому профилю.</p>
<p>Обновляет настройки соединения через NetworkManager, отключает и
переподключает устройство к сети.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>data (Dict[str, Any]): Словарь с данными конфигурации, включая</dt><dd><p>“connection_id” и “ipv4_updates” с обновлениями IP-настроек.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Any</em><em>]</em>) – Словарь с данными конфигурации, включая
“connection_id” и “ipv4_updates” с обновлениями IP-настроек.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
</dl>
<p>translations: Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>dict: Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“success” (bool): Успешность операции.</p></li>
<li><p>“message” (str): Сообщение об успешном применении настроек.</p></li>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с ключами:</dt><dd><ul class="simple">
<li><p>”success” (bool): Успешность операции.</p></li>
<li><p>”message” (str): Сообщение об успешном применении настроек.</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если подключение не найдено (status_code=404) или</dt><dd><p>произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если подключение не найдено (status_code=404) или
произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ip.check_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ip.</span></span><span class="sig-name descname"><span class="pre">check_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ip.html#check_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ip.check_ip_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ip.</span></span><span class="sig-name descname"><span class="pre">check_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ip.html#check_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет доступность IP-адреса перед его применением.</p>
<p>Выполняет ARP-сканирование для проверки, занят ли указанный IP-адрес,
и возвращает результат проверки.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>data (Dict[str, Any]): Словарь с данными конфигурации, включая</dt><dd><p>“ipv4_updates” с полем “ipv4.address-data” для нового IP-адреса.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Any</em><em>]</em>) – Словарь с данными конфигурации, включая
“ipv4_updates” с полем “ipv4.address-data” для нового IP-адреса.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
</dl>
<p>translations: Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Dict[str, Any]: Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“available” (bool): Доступен ли IP-адрес.</p></li>
<li><p>“message” (str): Сообщение о результате проверки.</p></li>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с ключами:</dt><dd><ul class="simple">
<li><p>”available” (bool): Доступен ли IP-адрес.</p></li>
<li><p>”message” (str): Сообщение о результате проверки.</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Dict[str, Any]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ip.save_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ip.</span></span><span class="sig-name descname"><span class="pre">save_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ip.html#save_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ip.save_ip_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ip.</span></span><span class="sig-name descname"><span class="pre">save_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ip.html#save_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Применяет проверенные IP-настройки для отката сетевого профиля.</p>
<p>Используется для сохранения и отката настроек сетевого профиля к предыдущему
состоянию через NetworkManager.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>data (Dict[str, Any]): Словарь с данными конфигурации, включая</dt><dd><p>“connection_id” и “ipv4_updates” с обновлениями IP-настроек.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Any</em><em>]</em>) – Словарь с данными конфигурации, включая
“connection_id” и “ipv4_updates” с обновлениями IP-настроек.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
</dl>
<p>translations: Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>dict: Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“success” (bool): Успешность операции.</p></li>
<li><p>“message” (str): Сообщение об успешном применении настроек.</p></li>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с ключами:</dt><dd><ul class="simple">
<li><p>”success” (bool): Успешность операции.</p></li>
<li><p>”message” (str): Сообщение об успешном применении настроек.</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если подключение не найдено (status_code=404) или</dt><dd><p>произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если подключение не найдено (status_code=404) или
произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
@ -412,30 +429,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">api.v1.ip</a><ul>
<li><a class="reference internal" href="#api.v1.ip.apply_ip_config"><code class="docutils literal notranslate"><span class="pre">apply_ip_config()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ip.check_ip_config"><code class="docutils literal notranslate"><span class="pre">check_ip_config()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ip.save_ip_config"><code class="docutils literal notranslate"><span class="pre">save_ip_config()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,46 +276,58 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-api.v1.network">
<span id="api-v1-network"></span><h1>api.v1.network<a class="headerlink" href="#module-api.v1.network" title="Link to this heading"></a></h1>
<section id="api-v1-network">
<h1>api.v1.network<a class="headerlink" href="#api-v1-network" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="api.v1.network.ContainerPositionManager">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.network.</span></span><span class="sig-name descname"><span class="pre">ContainerPositionManager</span></span><a class="reference internal" href="../../_modules/api/v1/network.html#ContainerPositionManager"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.network.ContainerPositionManager" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.network.</span></span><span class="sig-name descname"><span class="pre">ContainerPositionManager</span></span><a class="reference internal" href="../../_modules/api/v1/network.html#ContainerPositionManager"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для управления позициями и состоянием контейнеров.</p>
<p>Хранит и обновляет координаты (x, y) и состояние (isOpen) для контейнеров
активации и деактивации.</p>
<dl class="py method">
<dt class="sig sig-object py" id="api.v1.network.ContainerPositionManager.get_position_and_state">
<span class="sig-name descname"><span class="pre">get_position_and_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">container_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/api/v1/network.html#ContainerPositionManager.get_position_and_state"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.network.ContainerPositionManager.get_position_and_state" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_position_and_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">container_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/api/v1/network.html#ContainerPositionManager.get_position_and_state"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает текущие координаты и состояние указанного контейнера.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>container_name (str): Имя контейнера (“activation” или “deactivation”).
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>container_name</strong> (<em>str</em>) – Имя контейнера (“activation” или “deactivation”).</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>Tuple[int, int, bool]: Кортеж с координатами (x, y) и состоянием (isOpen).</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Кортеж с координатами (x, y) и состоянием (isOpen).</p>
</dd>
<dt>Raises:</dt><dd><p>ValueError: Если указан неверный идентификатор контейнера.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Tuple[int, int, bool]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>ValueError</strong> – Если указан неверный идентификатор контейнера.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="api.v1.network.ContainerPositionManager.update_position">
<span class="sig-name descname"><span class="pre">update_position</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">container_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">isOpen</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/api/v1/network.html#ContainerPositionManager.update_position"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.network.ContainerPositionManager.update_position" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">update_position</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">container_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">isOpen</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/api/v1/network.html#ContainerPositionManager.update_position"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Обновляет позицию и состояние контейнера по его идентификатору.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>container_id (int): Идентификатор контейнера (1 для “activation”, 2 для “deactivation”).
x (int): Новая координата X.
y (int): Новая координата Y.
isOpen (bool): Новое состояние контейнера (открыт/закрыт).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>container_id</strong> (<em>int</em>) – Идентификатор контейнера (1 для “activation”, 2 для “deactivation”).</p></li>
<li><p><strong>x</strong> (<em>int</em>) – Новая координата X.</p></li>
<li><p><strong>y</strong> (<em>int</em>) – Новая координата Y.</p></li>
<li><p><strong>isOpen</strong> (<em>bool</em>) – Новое состояние контейнера (открыт/закрыт).</p></li>
</ul>
</dd>
<dt>Raises:</dt><dd><p>ValueError: Если container_id не соответствует ни одному контейнеру.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>ValueError</strong> – Если container_id не соответствует ни одному контейнеру.</p>
</dd>
</dl>
</dd></dl>
@ -323,70 +335,86 @@ isOpen (bool): Новое состояние контейнера (открыт/
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.network.get_hostname">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.network.</span></span><span class="sig-name descname"><span class="pre">get_hostname</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/network.html#get_hostname"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.network.get_hostname" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.network.</span></span><span class="sig-name descname"><span class="pre">get_hostname</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/network.html#get_hostname"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает имя хоста системы.</p>
<p>Выполняет запрос к сервису для получения имени хоста.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>translations</strong> – Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с ключом “hostname” и значением имени хоста.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с ключом “hostname” и значением имени хоста.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла ошибка при получении имени хоста (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если произошла ошибка при получении имени хоста (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.network.get_network_data">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.network.</span></span><span class="sig-name descname"><span class="pre">get_network_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/api/v1/network.html#get_network_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.network.get_network_data" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.network.</span></span><span class="sig-name descname"><span class="pre">get_network_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/api/v1/network.html#get_network_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает текущие сетевые данные в виде словаря.</p>
<p>Получает данные о сетевых интерфейсах, разделяет их на активные и неактивные,
и возвращает их в формате Activation и Deactivation с учётом позиций и состояний
контейнеров.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>translations</strong> – Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Dict[str, Dict]: Словарь с ключами “activation” и “deactivation”, содержащими</dt><dd><p>данные о соответствующих контейнерах.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с ключами “activation” и “deactivation”, содержащими</dt><dd><p>данные о соответствующих контейнерах.</p>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла ошибка при получении данных (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Dict[str, Dict]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если произошла ошибка при получении данных (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.network.update_container_position">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.network.</span></span><span class="sig-name descname"><span class="pre">update_container_position</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/network.html#update_container_position"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.network.update_container_position" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.network.</span></span><span class="sig-name descname"><span class="pre">update_container_position</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/network.html#update_container_position"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Обновляет позицию и состояние контейнера.</p>
<p>Принимает данные о новом положении и состоянии контейнера и обновляет их
в менеджере позиций.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>data (Dict[str, Union[int, bool]]): Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“container_id” (int): Идентификатор контейнера (1 или 2).</p></li>
<li><p>“container_x” (int): Новая координата X.</p></li>
<li><p>“container_y” (int): Новая координата Y.</p></li>
<li><p>“isOpen” (bool): Новое состояние контейнера (открыт/закрыт).</p></li>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Union</em><em>[</em><em>int</em><em>, </em><em>bool</em><em>]</em><em>]</em>) – Словарь с ключами:
- “container_id” (int): Идентификатор контейнера (1 или 2).
- “container_x” (int): Новая координата X.
- “container_y” (int): Новая координата Y.
- “isOpen” (bool): Новое состояние контейнера (открыт/закрыт).</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с ключами:</dt><dd><ul class="simple">
<li><p>”success” (bool): Успешность операции.</p></li>
<li><p>”message” (str): Сообщение об успешном обновлении.</p></li>
</ul>
</dd>
</dl>
<p>translations: Объект переводов для текущего языка.</p>
</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>dict: Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“success” (bool): Успешность операции.</p></li>
<li><p>“message” (str): Сообщение об успешном обновлении.</p></li>
</ul>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если отсутствуют обязательные поля (status_code=400) или</dt><dd><p>типы данных неверны.</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если отсутствуют обязательные поля (status_code=400) или
типы данных неверны.</p>
</dd>
</dl>
</dd></dl>
@ -436,35 +464,9 @@ isOpen (bool): Новое состояние контейнера (открыт/
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">api.v1.network</a><ul>
<li><a class="reference internal" href="#api.v1.network.ContainerPositionManager"><code class="docutils literal notranslate"><span class="pre">ContainerPositionManager</span></code></a><ul>
<li><a class="reference internal" href="#api.v1.network.ContainerPositionManager.get_position_and_state"><code class="docutils literal notranslate"><span class="pre">ContainerPositionManager.get_position_and_state()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.network.ContainerPositionManager.update_position"><code class="docutils literal notranslate"><span class="pre">ContainerPositionManager.update_position()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#api.v1.network.get_hostname"><code class="docutils literal notranslate"><span class="pre">get_hostname()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.network.get_network_data"><code class="docutils literal notranslate"><span class="pre">get_network_data()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.network.update_container_position"><code class="docutils literal notranslate"><span class="pre">update_container_position()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,117 +276,164 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-api.v1.settings">
<span id="api-v1-settings"></span><h1>api.v1.settings<a class="headerlink" href="#module-api.v1.settings" title="Link to this heading"></a></h1>
<section id="api-v1-settings">
<h1>api.v1.settings<a class="headerlink" href="#api-v1-settings" title="Link to this heading"></a></h1>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.settings.clear_all_data">
<span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">clear_all_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#clear_all_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.settings.clear_all_data" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">clear_all_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#clear_all_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Очищает данные узлов подсети и точек доступа Wi-Fi в обоих файлах.</p>
<p>Удаляет все записи из devices.json и wifi.json.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>translations</strong> – Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешной очистке.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешной очистке.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла ошибка очистки (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если произошла ошибка очистки (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.settings.clear_subnet">
<span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">clear_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#clear_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.settings.clear_subnet" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">clear_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#clear_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Очищает данные узлов подсети, сохранённые в devices.json.</p>
<p>Удаляет все записи об узлах подсети, оставляя файл пустым.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>subnet (Optional[str]): Подсеть в формате CIDR (например, “10.1.1.0/24”).</dt><dd><p>Если None, очищает все подсети.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>subnet</strong> (<em>Optional</em><em>[</em><em>str</em><em>]</em>) – Подсеть в формате CIDR (например, “10.1.1.0/24”).
Если None, очищает все подсети.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
</dl>
<p>translations: Объект переводов для текущего языка.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешной очистке.</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешной очистке.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла ошибка очистки (status_code=500).</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если произошла ошибка очистки (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.settings.clear_wifi">
<span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">clear_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#clear_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.settings.clear_wifi" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">clear_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#clear_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Очищает данные точек доступа Wi-Fi, сохранённые в wifi.json.</p>
<p>Удаляет все записи о точках доступа, оставляя файл пустым.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>translations</strong> – Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешной очистке.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешной очистке.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла ошибка очистки (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если произошла ошибка очистки (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.settings.export_devices">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">export_devices</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/subnet.html#models.subnet.SubnetScanRequest" title="models.subnet.SubnetScanRequest"><span class="pre">SubnetScanRequest</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#export_devices"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.settings.export_devices" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">export_devices</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">SubnetScanRequest</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#export_devices"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Экспортирует файл с данными устройств в формате JSON для указанной подсети.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>request (SubnetScanRequest): Объект с полем subnet в формате CIDR.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>SubnetScanRequest</em>) – Объект с полем subnet в формате CIDR.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>FileResponse: Файл &lt;subnet&gt;.json для скачивания.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Файл &lt;subnet&gt;.json для скачивания.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если файл не найден (status_code=404).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>FileResponse</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если файл не найден (status_code=404).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.settings.export_wifi">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">export_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#export_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.settings.export_wifi" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">export_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#export_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Экспортирует файл с данными устройств в формате JSON.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>translations</strong> – Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><p>FileResponse: Файл wifi.json для скачивания.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Файл wifi.json для скачивания.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если файл не найден (status_code=404).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>FileResponse</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если файл не найден (status_code=404).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.settings.get_system_language">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">get_system_language</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#get_system_language"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.settings.get_system_language" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">get_system_language</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Request</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#get_system_language"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Выводит текущий язык, установленный в системе на основе locale.</p>
<p>Выполняет команду ‘locale’ в системе и извлекает параметры LANG</p>
<dl class="simple">
<dt>Args:</dt><dd><p>request (Request): Объект запроса для доступа к параметрам.
translations: Объект переводов текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>Request</em>) – Объект запроса для доступа к параметрам.</p></li>
<li><p><strong>translations</strong> – Объект переводов текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с текущим языком системы.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с текущим языком системы.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если не удалось извлечь системный язык (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если не удалось извлечь системный язык (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.settings.set_language">
<span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">set_language</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">locale</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#set_language"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.settings.set_language" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.settings.</span></span><span class="sig-name descname"><span class="pre">set_language</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">locale</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Response</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/settings.html#set_language"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Устанавливает куку locale для смены языка пользователя.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>locale (str): Используемый язык.
response (Response): Запрос.
translations: Объект переводов текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>locale</strong> (<em>str</em>) – Используемый язык.</p></li>
<li><p><strong>response</strong> (<em>Response</em>) – Запрос.</p></li>
<li><p><strong>translations</strong> – Объект переводов текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Сообщение об успешной установке языка.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Сообщение об успешной установке языка.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
</dd></dl>
@ -436,34 +483,9 @@ translations: Объект переводов текущего языка.</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">api.v1.settings</a><ul>
<li><a class="reference internal" href="#api.v1.settings.clear_all_data"><code class="docutils literal notranslate"><span class="pre">clear_all_data()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.settings.clear_subnet"><code class="docutils literal notranslate"><span class="pre">clear_subnet()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.settings.clear_wifi"><code class="docutils literal notranslate"><span class="pre">clear_wifi()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.settings.export_devices"><code class="docutils literal notranslate"><span class="pre">export_devices()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.settings.export_wifi"><code class="docutils literal notranslate"><span class="pre">export_wifi()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.settings.get_system_language"><code class="docutils literal notranslate"><span class="pre">get_system_language()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.settings.set_language"><code class="docutils literal notranslate"><span class="pre">set_language()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,217 +276,292 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-api.v1.subnet">
<span id="api-v1-subnet"></span><h1>api.v1.subnet<a class="headerlink" href="#module-api.v1.subnet" title="Link to this heading"></a></h1>
<section id="api-v1-subnet">
<h1>api.v1.subnet<a class="headerlink" href="#api-v1-subnet" title="Link to this heading"></a></h1>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.add_note">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/request.html#models.request.NoteRequest" title="models.request.NoteRequest"><span class="pre">NoteRequest</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet_service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../services/subnet_service.html#services.subnet_service.SubnetService" title="services.subnet_service.SubnetService"><span class="pre">SubnetService</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(get_subnet_service)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#add_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.add_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">NoteRequest</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet_service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">SubnetService</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(get_subnet_service)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#add_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет заметку для устройства по MAC-адресу.</p>
<p>Привязывает заметку к устройству, идентифицируемому по MAC-адресу.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
request (NoteRequest): Объект с полем “note” для текста заметки.
subnet_service: Сервис сканирования подсети.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mac</strong> (<em>str</em>) – MAC-адрес устройства.</p></li>
<li><p><strong>request</strong> (<em>NoteRequest</em>) – Объект с полем “note” для текста заметки.</p></li>
<li><p><strong>subnet_service</strong> – Сервис сканирования подсети.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешном добавлении заметки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешном добавлении заметки.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если устройство не найдено (status_code=404), заметка уже</dt><dd><p>существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если устройство не найдено (status_code=404), заметка уже
существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.add_wifi_note">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">add_wifi_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/request.html#models.request.NoteRequest" title="models.request.NoteRequest"><span class="pre">NoteRequest</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#add_wifi_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.add_wifi_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">add_wifi_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">NoteRequest</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#add_wifi_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет заметку для сети Wi-Fi по SSID.</p>
<p>Привязывает заметку к Wi-Fi сети, идентифицируемой по SSID.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ssid (str): Идентификатор Wi-Fi сети.
request (NoteRequest): Объект с полем “note” для текста заметки.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ssid</strong> (<em>str</em>) – Идентификатор Wi-Fi сети.</p></li>
<li><p><strong>request</strong> (<em>NoteRequest</em>) – Объект с полем “note” для текста заметки.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешном добавлении заметки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешном добавлении заметки.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если сеть не найдена (status_code=404), заметка уже</dt><dd><p>существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если сеть не найдена (status_code=404), заметка уже
существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.connect_to_wifi">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">connect_to_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/request.html#models.request.WifiConnectRequest" title="models.request.WifiConnectRequest"><span class="pre">WifiConnectRequest</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#connect_to_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.connect_to_wifi" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">connect_to_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WifiConnectRequest</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#connect_to_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Подключается к Wi-Fi сети по SSID и паролю.</p>
<p>Выполняет подключение к указанной Wi-Fi сети с использованием предоставленных
учетных данных.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>request (WifiConnectRequest): Объект с полями “ssid” и “password”.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>WifiConnectRequest</em>) – Объект с полями “ssid” и “password”.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешном подключении.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешном подключении.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если подключение не удалось (status_code=400).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если подключение не удалось (status_code=400).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.delete_note">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">delete_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet_service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../services/subnet_service.html#services.subnet_service.SubnetService" title="services.subnet_service.SubnetService"><span class="pre">SubnetService</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(get_subnet_service)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#delete_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.delete_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">delete_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet_service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">SubnetService</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(get_subnet_service)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#delete_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Удаляет заметку для устройства по MAC-адресу.</p>
<p>Удаляет привязанную заметку для указанного устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
subnet_service: Сервис сканирования подсети.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mac</strong> (<em>str</em>) – MAC-адрес устройства.</p></li>
<li><p><strong>subnet_service</strong> – Сервис сканирования подсети.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешном удалении заметки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешном удалении заметки.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если устройство не найдено (status_code=404), заметка не</dt><dd><p>существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если устройство не найдено (status_code=404), заметка не
существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.delete_wifi_note">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">delete_wifi_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#delete_wifi_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.delete_wifi_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">delete_wifi_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#delete_wifi_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Удаляет заметку для сети Wi-Fi по SSID.</p>
<p>Удаляет привязанную заметку для указанной Wi-Fi сети.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ssid (str): Идентификатор Wi-Fi сети.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ssid</strong> (<em>str</em>) – Идентификатор Wi-Fi сети.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешном удалении заметки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешном удалении заметки.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если сеть не найдена (status_code=404), заметка не</dt><dd><p>существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если сеть не найдена (status_code=404), заметка не
существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.disconnect_from_wifi">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">disconnect_from_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/request.html#models.request.WifiDisconnectRequest" title="models.request.WifiDisconnectRequest"><span class="pre">WifiDisconnectRequest</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#disconnect_from_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.disconnect_from_wifi" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">disconnect_from_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WifiDisconnectRequest</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#disconnect_from_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Отключается от Wi-Fi сети по указанному SSID.</p>
<p>Выполняет отключение от указанной Wi-Fi сети.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>request (WifiDisconnectRequest): Объект с полем “ssid”.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>WifiDisconnectRequest</em>) – Объект с полем “ssid”.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешном отключении.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешном отключении.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если отключение не удалось (status_code=400).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если отключение не удалось (status_code=400).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.get_wifi_status">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">get_wifi_status</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#get_wifi_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.get_wifi_status" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">get_wifi_status</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#get_wifi_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет статус текущего подключения к Wi-Fi.</p>
<p>Возвращает информацию о текущем состоянии подключения и SSID, если подключение активно.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>translations</strong> – Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>dict: Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“status” (str): Состояние (“connected” или другое).</p></li>
<li><p>“ssid” (str, optional): SSID текущей сети, если подключено.</p></li>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с ключами:</dt><dd><ul class="simple">
<li><p>”status” (str): Состояние (“connected” или другое).</p></li>
<li><p>”ssid” (str, optional): SSID текущей сети, если подключено.</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если проверка статуса не удалась (status_code=400).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если проверка статуса не удалась (status_code=400).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.scan_subnet">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">scan_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/subnet.html#models.subnet.SubnetScanRequest" title="models.subnet.SubnetScanRequest"><span class="pre">SubnetScanRequest</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet_service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../services/subnet_service.html#services.subnet_service.SubnetService" title="services.subnet_service.SubnetService"><span class="pre">SubnetService</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(get_subnet_service)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#scan_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.scan_subnet" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">scan_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">SubnetScanRequest</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Body(PydanticUndefined)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet_service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">SubnetService</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(get_subnet_service)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#scan_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сканирует локальную подсеть и возвращает данные об устройствах.</p>
<p>Выполняет сканирование указанной подсети для обнаружения активных устройств.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>request (SubnetScanRequest): Объект с полем subnet.
subnet_service: Сервис сканирования подсети.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>request</strong> (<em>SubnetScanRequest</em>) – Объект с полем subnet.</p></li>
<li><p><strong>subnet_service</strong> – Сервис сканирования подсети.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>SubnetScanResult: Объект с результатами сканирования (устройства и их данные).</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с результатами сканирования (устройства и их данные).</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла ошибка сканирования (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>SubnetScanResult</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если произошла ошибка сканирования (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.scan_wifi">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">scan_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">30</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#scan_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.scan_wifi" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">scan_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">30</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#scan_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сканирует Wi-Fi точки доступа и возвращает данные о них.</p>
<p>Выполняет сканирование доступных Wi-Fi сетей с указанным таймаутом.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>timeout (int, optional): Таймаут сканирования в секундах. По умолчанию 30.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>timeout</strong> (<em>int</em><em>, </em><em>optional</em>) – Таймаут сканирования в секундах. По умолчанию 30.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>WifiScanResult: Объект с результатами сканирования (список Wi-Fi сетей).</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с результатами сканирования (список Wi-Fi сетей).</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если произошла ошибка сканирования Wi-Fi (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>WifiScanResult</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если произошла ошибка сканирования Wi-Fi (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.update_note">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">update_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/request.html#models.request.NoteRequest" title="models.request.NoteRequest"><span class="pre">NoteRequest</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet_service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../services/subnet_service.html#services.subnet_service.SubnetService" title="services.subnet_service.SubnetService"><span class="pre">SubnetService</span></a></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(get_subnet_service)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#update_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.update_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">update_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">NoteRequest</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet_service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">SubnetService</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(get_subnet_service)</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#update_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Обновляет заметку для устройства по MAC-адресу.</p>
<p>Изменяет существующую заметку, привязанную к устройству.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
request (NoteRequest): Объект с полем “note” для нового текста заметки.
subnet_service: Сервис сканирования подсети.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mac</strong> (<em>str</em>) – MAC-адрес устройства.</p></li>
<li><p><strong>request</strong> (<em>NoteRequest</em>) – Объект с полем “note” для нового текста заметки.</p></li>
<li><p><strong>subnet_service</strong> – Сервис сканирования подсети.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешном обновлении заметки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешном обновлении заметки.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если устройство не найдено (status_code=404), заметка не</dt><dd><p>существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если устройство не найдено (status_code=404), заметка не
существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.subnet.update_wifi_note">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">update_wifi_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/request.html#models.request.NoteRequest" title="models.request.NoteRequest"><span class="pre">NoteRequest</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#update_wifi_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.subnet.update_wifi_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">api.v1.subnet.</span></span><span class="sig-name descname"><span class="pre">update_wifi_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">NoteRequest</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/subnet.html#update_wifi_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Обновляет заметку для сети Wi-Fi по SSID.</p>
<p>Изменяет существующую заметку, привязанную к Wi-Fi сети.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ssid (str): Идентификатор Wi-Fi сети.
request (NoteRequest): Объект с полем “note” для нового текста заметки.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ssid</strong> (<em>str</em>) – Идентификатор Wi-Fi сети.</p></li>
<li><p><strong>request</strong> (<em>NoteRequest</em>) – Объект с полем “note” для нового текста заметки.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>dict: Словарь с сообщением об успешном обновлении заметки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с сообщением об успешном обновлении заметки.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>HTTPException: Если сеть не найдена (status_code=404), заметка не</dt><dd><p>существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – Если сеть не найдена (status_code=404), заметка не
существует (status_code=400), или произошла внутренняя ошибка (status_code=500).</p>
</dd>
</dl>
</dd></dl>
@ -536,38 +611,9 @@ translations: Объект переводов для текущего языка
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">api.v1.subnet</a><ul>
<li><a class="reference internal" href="#api.v1.subnet.add_note"><code class="docutils literal notranslate"><span class="pre">add_note()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.add_wifi_note"><code class="docutils literal notranslate"><span class="pre">add_wifi_note()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.connect_to_wifi"><code class="docutils literal notranslate"><span class="pre">connect_to_wifi()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.delete_note"><code class="docutils literal notranslate"><span class="pre">delete_note()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.delete_wifi_note"><code class="docutils literal notranslate"><span class="pre">delete_wifi_note()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.disconnect_from_wifi"><code class="docutils literal notranslate"><span class="pre">disconnect_from_wifi()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.get_wifi_status"><code class="docutils literal notranslate"><span class="pre">get_wifi_status()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.scan_subnet"><code class="docutils literal notranslate"><span class="pre">scan_subnet()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.scan_wifi"><code class="docutils literal notranslate"><span class="pre">scan_wifi()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.update_note"><code class="docutils literal notranslate"><span class="pre">update_note()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.subnet.update_wifi_note"><code class="docutils literal notranslate"><span class="pre">update_wifi_note()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,129 +276,172 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-api.v1.ufw">
<span id="api-v1-ufw"></span><h1>api.v1.ufw<a class="headerlink" href="#module-api.v1.ufw" title="Link to this heading"></a></h1>
<section id="api-v1-ufw">
<h1>api.v1.ufw<a class="headerlink" href="#api-v1-ufw" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="api.v1.ufw.RuleNumbers">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">RuleNumbers</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">numbers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#RuleNumbers"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ufw.RuleNumbers" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">RuleNumbers</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">numbers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#RuleNumbers"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель запроса на удаление UFW правил.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">numbers</span></code> (List[int]): Список номеров правил для удаления.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="api.v1.ufw.RuleNumbers.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#api.v1.ufw.RuleNumbers.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="api.v1.ufw.RuleNumbers.numbers">
<span class="sig-name descname"><span class="pre">numbers</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#api.v1.ufw.RuleNumbers.numbers" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">numbers</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ufw.add_ufw_in_rules">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">add_ufw_in_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#add_ufw_in_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ufw.add_ufw_in_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">add_ufw_in_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">UFWRule</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#add_ufw_in_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет входящие (in) правила UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>rules (List[UFWRule]): Список правил, определяющих направления,</dt><dd><p>порты/диапазоны/протоколы и действия (allow/deny/reject).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rules</strong> (<em>List</em><em>[</em><em>UFWRule</em><em>]</em>) – Список правил, определяющих направления,
порты/диапазоны/протоколы и действия (allow/deny/reject).</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><p>dict: Итог выполнения с количеством успешно добавленных правил и деталями
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Итог выполнения с количеством успешно добавленных правил и деталями
по каждому правилу.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если UFW отключен (status_code=400) или при внутренних
ошибках (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>HTTPException</strong> – Если UFW отключен (status_code=400) или при внутренних</p></li>
<li><p><strong>ошибках</strong><strong> (</strong><strong>status_code=500</strong><strong>)</strong><strong>.</strong> – </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ufw.add_ufw_out_rules">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">add_ufw_out_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#add_ufw_out_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ufw.add_ufw_out_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">add_ufw_out_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">UFWRule</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#add_ufw_out_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет исходящие (out) правила UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules (List[UFWRule]): Список правил исходящего трафика для добавления.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rules</strong> (<em>List</em><em>[</em><em>UFWRule</em><em>]</em>) – Список правил исходящего трафика для добавления.</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Объект статуса с сообщением об успешном добавлении.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект статуса с сообщением об успешном добавлении.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если UFW отключен (status_code=400) или при внутренних
ошибках (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>HTTPException</strong> – Если UFW отключен (status_code=400) или при внутренних</p></li>
<li><p><strong>ошибках</strong><strong> (</strong><strong>status_code=500</strong><strong>)</strong><strong>.</strong> – </p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ufw.delete_ufw_rules">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">delete_ufw_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rule_numbers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#api.v1.ufw.RuleNumbers" title="api.v1.ufw.RuleNumbers"><span class="pre">RuleNumbers</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#delete_ufw_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ufw.delete_ufw_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">delete_ufw_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rule_numbers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">RuleNumbers</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#delete_ufw_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Удаляет правила UFW по их номерам.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>rule_numbers (RuleNumbers): Номера правил, подлежащих удалению (как в</dt><dd><p>выводе <cite>ufw status numbered</cite>).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rule_numbers</strong> (<em>RuleNumbers</em>) – Номера правил, подлежащих удалению (как в
выводе <cite>ufw status numbered</cite>).</p>
</dd>
</dl>
</dd>
<dt>Returns:</dt><dd><p>dict: Информация об общем количестве удаляемых правил, числе успешных и
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Информация об общем количестве удаляемых правил, числе успешных и
возможной ошибке.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: При ошибках удаления (status_code=500).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>HTTPException</strong> – При ошибках удаления (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ufw.disable_ufw">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">disable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#disable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ufw.disable_ufw" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">disable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#disable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Выключает UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>dict: Словарь с ключами <cite>status</cite> и <cite>message</cite> при успешном выполнении.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Словарь с ключами <cite>status</cite> и <cite>message</cite> при успешном выполнении.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если выключение завершилось неуспешно (status_code=500).</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>dict</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>HTTPException</strong> – Если выключение завершилось неуспешно (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ufw.enable_ufw">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">enable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#enable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ufw.enable_ufw" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">enable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#enable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Включает UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>dict: Словарь с ключами <cite>status</cite> и <cite>message</cite> при успешном выполнении.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Словарь с ключами <cite>status</cite> и <cite>message</cite> при успешном выполнении.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если включение завершилось неуспешно (status_code=500).</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>dict</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>HTTPException</strong> – Если включение завершилось неуспешно (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ufw.get_ufw_rules">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">get_ufw_rules</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#get_ufw_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ufw.get_ufw_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">get_ufw_rules</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#get_ufw_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает все правила UFW.</p>
<p>Осуществляет обращение к сервису <cite>UFWService</cite> для чтения текущего списка
правил брандмауэра и возвращает результат в сериализованном виде для клиента.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>UFWRulesResponse: Структура с коллекцией правил и сопутствующей
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Структура с коллекцией правил и сопутствующей
информацией о состоянии.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: В случае ошибок взаимодействия с UFW (status_code=500).</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>UFWRulesResponse</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>HTTPException</strong> – В случае ошибок взаимодействия с UFW (status_code=500).</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.ufw.get_ufw_status">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">get_ufw_status</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#get_ufw_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.ufw.get_ufw_status" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.ufw.</span></span><span class="sig-name descname"><span class="pre">get_ufw_status</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/ufw.html#get_ufw_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает текущий статус UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>UFWStatus: Объект со сведениями о включенности UFW и деталями статуса.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Объект со сведениями о включенности UFW и деталями статуса.</p>
</dd>
<dt>Raises:</dt><dd><p>HTTPException: Если не удалось получить статус (status_code=500).</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>UFWStatus</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>HTTPException</strong> – Если не удалось получить статус (status_code=500).</p>
</dd>
</dl>
</dd></dl>
@ -448,39 +491,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">api.v1.ufw</a><ul>
<li><a class="reference internal" href="#api.v1.ufw.RuleNumbers"><code class="docutils literal notranslate"><span class="pre">RuleNumbers</span></code></a><ul>
<li><a class="reference internal" href="#api.v1.ufw.RuleNumbers.model_config"><code class="docutils literal notranslate"><span class="pre">RuleNumbers.model_config</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ufw.RuleNumbers.numbers"><code class="docutils literal notranslate"><span class="pre">RuleNumbers.numbers</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#api.v1.ufw.add_ufw_in_rules"><code class="docutils literal notranslate"><span class="pre">add_ufw_in_rules()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ufw.add_ufw_out_rules"><code class="docutils literal notranslate"><span class="pre">add_ufw_out_rules()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ufw.delete_ufw_rules"><code class="docutils literal notranslate"><span class="pre">delete_ufw_rules()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ufw.disable_ufw"><code class="docutils literal notranslate"><span class="pre">disable_ufw()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ufw.enable_ufw"><code class="docutils literal notranslate"><span class="pre">enable_ufw()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ufw.get_ufw_rules"><code class="docutils literal notranslate"><span class="pre">get_ufw_rules()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.ufw.get_ufw_status"><code class="docutils literal notranslate"><span class="pre">get_ufw_status()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,55 +276,62 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-api.v1.websocket">
<span id="api-v1-websocket"></span><h1>api.v1.websocket<a class="headerlink" href="#module-api.v1.websocket" title="Link to this heading"></a></h1>
<section id="api-v1-websocket">
<h1>api.v1.websocket<a class="headerlink" href="#api-v1-websocket" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="api.v1.websocket.WebSocketManager">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.websocket.</span></span><span class="sig-name descname"><span class="pre">WebSocketManager</span></span><a class="reference internal" href="../../_modules/api/v1/websocket.html#WebSocketManager"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.websocket.WebSocketManager" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.websocket.</span></span><span class="sig-name descname"><span class="pre">WebSocketManager</span></span><a class="reference internal" href="../../_modules/api/v1/websocket.html#WebSocketManager"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для управления подключениями к WebSocket-серверу.</p>
<p>Обрабатывает подключение, отключение и трансляцию сообщений для клиентов,
подключённых через WebSocket.</p>
<dl class="py method">
<dt class="sig sig-object py" id="api.v1.websocket.WebSocketManager.broadcast">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">broadcast</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#WebSocketManager.broadcast"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.websocket.WebSocketManager.broadcast" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">broadcast</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#WebSocketManager.broadcast"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Транслирует сообщения всем подключённым клиентам.</p>
<p>Отправляет JSON-данные всем активным соединениям, обрабатывая
отключения клиентов.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>message (dict): Сообщение для трансляции в формате JSON.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>message</strong> (<em>dict</em>) – Сообщение для трансляции в формате JSON.</p>
</dd>
<dt>Raises:</dt><dd><p>WebSocketDisconnect: Если клиент неожиданно отключился.
Exception: Если произошла другая ошибка при отправке.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>WebSocketDisconnect</strong> – Если клиент неожиданно отключился.</p></li>
<li><p><strong>Exception</strong> – Если произошла другая ошибка при отправке.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="api.v1.websocket.WebSocketManager.connect">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">connect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">websocket</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WebSocket</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#WebSocketManager.connect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.websocket.WebSocketManager.connect" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">connect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">websocket</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WebSocket</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#WebSocketManager.connect"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Подключает клиента к WebSocket-серверу.</p>
<p>Принимает подключение и добавляет WebSocket в список активных соединений.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>websocket (WebSocket): Объект WebSocket для подключения.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>websocket</strong> (<em>WebSocket</em>) – Объект WebSocket для подключения.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при принятии подключения.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при принятии подключения.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="api.v1.websocket.WebSocketManager.disconnect">
<span class="sig-name descname"><span class="pre">disconnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">websocket</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WebSocket</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#WebSocketManager.disconnect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.websocket.WebSocketManager.disconnect" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">disconnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">websocket</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WebSocket</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#WebSocketManager.disconnect"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Отключает клиента от WebSocket-серверу.</p>
<p>Удаляет WebSocket из списка активных соединений.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>websocket (WebSocket): Объект WebSocket для отключения.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>websocket</strong> (<em>WebSocket</em>) – Объект WebSocket для отключения.</p>
</dd>
</dl>
</dd></dl>
@ -332,42 +339,51 @@ Exception: Если произошла другая ошибка при отпр
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.websocket.broadcast_data">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.websocket.</span></span><span class="sig-name descname"><span class="pre">broadcast_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#broadcast_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.websocket.broadcast_data" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.websocket.</span></span><span class="sig-name descname"><span class="pre">broadcast_data</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#broadcast_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Таск для периодической трансляции сетевых данных.</p>
<p>Выполняет сканирование сети и отправляет данные всем подключённым клиентам
с интервалом в 2 секунды.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>translations</strong> – Объект переводов для текущего языка.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении данных или трансляции.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при получении данных или трансляции.</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.websocket.startup_event">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.websocket.</span></span><span class="sig-name descname"><span class="pre">startup_event</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#startup_event"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.websocket.startup_event" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.websocket.</span></span><span class="sig-name descname"><span class="pre">startup_event</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#startup_event"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Запуск таска для трансляции сетевых данных при старте приложения.</p>
<p>Создаёт асинхронную задачу для периодической трансляции данных.</p>
<dl class="simple">
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при запуске таска.</p>
<dl class="field-list simple">
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>Exception</strong> – Если произошла ошибка при запуске таска.</p>
</dd>
</dl>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="api.v1.websocket.websocket_endpoint">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.websocket.</span></span><span class="sig-name descname"><span class="pre">websocket_endpoint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">websocket</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WebSocket</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#websocket_endpoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#api.v1.websocket.websocket_endpoint" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">api.v1.websocket.</span></span><span class="sig-name descname"><span class="pre">websocket_endpoint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">websocket</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">WebSocket</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/api/v1/websocket.html#websocket_endpoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Обработчик WebSocket-соединения.</p>
<p>Управляет соединением клиента, принимает данные для обновления позиций
контейнеров и транслирует сетевые данные.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>websocket (WebSocket): Объект WebSocket для обработки соединения.
translations: Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>websocket</strong> (<em>WebSocket</em>) – Объект WebSocket для обработки соединения.</p></li>
<li><p><strong>translations</strong> – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Raises:</dt><dd><p>WebSocketDisconnect: Если клиент отключился.
Exception: Если произошла ошибка при обработке данных.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>WebSocketDisconnect</strong> – Если клиент отключился.</p></li>
<li><p><strong>Exception</strong> – Если произошла ошибка при обработке данных.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
@ -417,36 +433,9 @@ Exception: Если произошла ошибка при обработке д
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">api.v1.websocket</a><ul>
<li><a class="reference internal" href="#api.v1.websocket.WebSocketManager"><code class="docutils literal notranslate"><span class="pre">WebSocketManager</span></code></a><ul>
<li><a class="reference internal" href="#api.v1.websocket.WebSocketManager.broadcast"><code class="docutils literal notranslate"><span class="pre">WebSocketManager.broadcast()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.websocket.WebSocketManager.connect"><code class="docutils literal notranslate"><span class="pre">WebSocketManager.connect()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.websocket.WebSocketManager.disconnect"><code class="docutils literal notranslate"><span class="pre">WebSocketManager.disconnect()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#api.v1.websocket.broadcast_data"><code class="docutils literal notranslate"><span class="pre">broadcast_data()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.websocket.startup_event"><code class="docutils literal notranslate"><span class="pre">startup_event()</span></code></a></li>
<li><a class="reference internal" href="#api.v1.websocket.websocket_endpoint"><code class="docutils literal notranslate"><span class="pre">websocket_endpoint()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,145 +276,145 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-models.auth">
<span id="models-auth"></span><h1>models.auth<a class="headerlink" href="#module-models.auth" title="Link to this heading"></a></h1>
<section id="models-auth">
<h1>models.auth<a class="headerlink" href="#models-auth" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="models.auth.Token">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.auth.</span></span><span class="sig-name descname"><span class="pre">Token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">session_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#models.auth.UserResponse" title="models.auth.UserResponse"><span class="pre">UserResponse</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/auth.html#Token"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.auth.Token" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.auth.</span></span><span class="sig-name descname"><span class="pre">Token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">session_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">UserResponse</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/auth.html#Token"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Токен пользователя</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>access_token (str): Токен пользователя (захэширован)
token_type (str): Тип токена
session_id (Optional[str]): Идентификатор сессии
user (Optional[UserResponse]): Пользователь на основе проверки наличия пользователя</p>
</dd>
</dl>
<p>Модель JWT-токена.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">access_token</span></code> (str): Значение токена (в формате JWT).</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">token_type</span></code> (str): Тип токена (обычно <code class="docutils literal notranslate"><span class="pre">bearer</span></code>).</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">session_id</span></code> (Optional[str]): Идентификатор сессии.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">user</span></code> (Optional[UserResponse]): Данные пользователя, если включены в ответ.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.Token.access_token">
<span class="sig-name descname"><span class="pre">access_token</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.auth.Token.access_token" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">access_token</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.Token.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.auth.Token.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.Token.session_id">
<span class="sig-name descname"><span class="pre">session_id</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.auth.Token.session_id" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">session_id</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.Token.token_type">
<span class="sig-name descname"><span class="pre">token_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.auth.Token.token_type" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">token_type</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.Token.user">
<span class="sig-name descname"><span class="pre">user</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#models.auth.UserResponse" title="models.auth.UserResponse"><span class="pre">UserResponse</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.auth.Token.user" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">user</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">UserResponse</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.auth.UserCreate">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.auth.</span></span><span class="sig-name descname"><span class="pre">UserCreate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_admin</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/auth.html#UserCreate"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.auth.UserCreate" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.auth.</span></span><span class="sig-name descname"><span class="pre">UserCreate</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_admin</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/auth.html#UserCreate"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель созданного пользователя</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>username (str): Имя пользователя
password (str): Пароль пользователя
is_admin (bool): Административный доступ</p>
</dd>
</dl>
<p>Модель созданного пользователя.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">username</span></code> (str): Имя пользователя.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">password</span></code> (str): Пароль пользователя.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">is_admin</span></code> (bool): Флаг административного доступа.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserCreate.is_admin">
<span class="sig-name descname"><span class="pre">is_admin</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#models.auth.UserCreate.is_admin" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">is_admin</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserCreate.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.auth.UserCreate.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserCreate.password">
<span class="sig-name descname"><span class="pre">password</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.auth.UserCreate.password" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">password</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserCreate.username">
<span class="sig-name descname"><span class="pre">username</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.auth.UserCreate.username" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">username</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.auth.UserLogin">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.auth.</span></span><span class="sig-name descname"><span class="pre">UserLogin</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/auth.html#UserLogin"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.auth.UserLogin" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.auth.</span></span><span class="sig-name descname"><span class="pre">UserLogin</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/auth.html#UserLogin"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель авторизации пользователя</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>username (str): Имя пользователя
password (str): Пароль пользователя</p>
</dd>
</dl>
<p>Модель авторизации пользователя.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">username</span></code> (str): Имя пользователя.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">password</span></code> (str): Пароль пользователя.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserLogin.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.auth.UserLogin.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserLogin.password">
<span class="sig-name descname"><span class="pre">password</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.auth.UserLogin.password" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">password</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserLogin.username">
<span class="sig-name descname"><span class="pre">username</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.auth.UserLogin.username" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">username</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.auth.UserResponse">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.auth.</span></span><span class="sig-name descname"><span class="pre">UserResponse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_admin</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/auth.html#UserResponse"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.auth.UserResponse" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.auth.</span></span><span class="sig-name descname"><span class="pre">UserResponse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_admin</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/auth.html#UserResponse"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель проверки наличия пользователя</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>id (int): Идентификатор
username (str): Имя пользователя
is_admin (bool): Административный доступ</p>
</dd>
</dl>
<p>Модель, используемая при возврате сведений о пользователе.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">id</span></code> (int): Идентификатор пользователя.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">username</span></code> (str): Имя пользователя.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">is_admin</span></code> (bool): Флаг административного доступа.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserResponse.id">
<span class="sig-name descname"><span class="pre">id</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><a class="headerlink" href="#models.auth.UserResponse.id" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">id</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserResponse.is_admin">
<span class="sig-name descname"><span class="pre">is_admin</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#models.auth.UserResponse.is_admin" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">is_admin</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserResponse.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.auth.UserResponse.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.auth.UserResponse.username">
<span class="sig-name descname"><span class="pre">username</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.auth.UserResponse.username" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">username</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
</dd></dl>
@ -464,55 +464,9 @@ is_admin (bool): Административный доступ</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">models.auth</a><ul>
<li><a class="reference internal" href="#models.auth.Token"><code class="docutils literal notranslate"><span class="pre">Token</span></code></a><ul>
<li><a class="reference internal" href="#models.auth.Token.access_token"><code class="docutils literal notranslate"><span class="pre">Token.access_token</span></code></a></li>
<li><a class="reference internal" href="#models.auth.Token.model_config"><code class="docutils literal notranslate"><span class="pre">Token.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.auth.Token.session_id"><code class="docutils literal notranslate"><span class="pre">Token.session_id</span></code></a></li>
<li><a class="reference internal" href="#models.auth.Token.token_type"><code class="docutils literal notranslate"><span class="pre">Token.token_type</span></code></a></li>
<li><a class="reference internal" href="#models.auth.Token.user"><code class="docutils literal notranslate"><span class="pre">Token.user</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.auth.UserCreate"><code class="docutils literal notranslate"><span class="pre">UserCreate</span></code></a><ul>
<li><a class="reference internal" href="#models.auth.UserCreate.is_admin"><code class="docutils literal notranslate"><span class="pre">UserCreate.is_admin</span></code></a></li>
<li><a class="reference internal" href="#models.auth.UserCreate.model_config"><code class="docutils literal notranslate"><span class="pre">UserCreate.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.auth.UserCreate.password"><code class="docutils literal notranslate"><span class="pre">UserCreate.password</span></code></a></li>
<li><a class="reference internal" href="#models.auth.UserCreate.username"><code class="docutils literal notranslate"><span class="pre">UserCreate.username</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.auth.UserLogin"><code class="docutils literal notranslate"><span class="pre">UserLogin</span></code></a><ul>
<li><a class="reference internal" href="#models.auth.UserLogin.model_config"><code class="docutils literal notranslate"><span class="pre">UserLogin.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.auth.UserLogin.password"><code class="docutils literal notranslate"><span class="pre">UserLogin.password</span></code></a></li>
<li><a class="reference internal" href="#models.auth.UserLogin.username"><code class="docutils literal notranslate"><span class="pre">UserLogin.username</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.auth.UserResponse"><code class="docutils literal notranslate"><span class="pre">UserResponse</span></code></a><ul>
<li><a class="reference internal" href="#models.auth.UserResponse.id"><code class="docutils literal notranslate"><span class="pre">UserResponse.id</span></code></a></li>
<li><a class="reference internal" href="#models.auth.UserResponse.is_admin"><code class="docutils literal notranslate"><span class="pre">UserResponse.is_admin</span></code></a></li>
<li><a class="reference internal" href="#models.auth.UserResponse.model_config"><code class="docutils literal notranslate"><span class="pre">UserResponse.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.auth.UserResponse.username"><code class="docutils literal notranslate"><span class="pre">UserResponse.username</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

File diff suppressed because one or more lines are too long

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,81 +276,81 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-models.request">
<span id="models-request"></span><h1>models.request<a class="headerlink" href="#module-models.request" title="Link to this heading"></a></h1>
<section id="models-request">
<h1>models.request<a class="headerlink" href="#models-request" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="models.request.NoteRequest">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.request.</span></span><span class="sig-name descname"><span class="pre">NoteRequest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/request.html#NoteRequest"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.request.NoteRequest" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.request.</span></span><span class="sig-name descname"><span class="pre">NoteRequest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/request.html#NoteRequest"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель добавления заметки к просканированному устройству</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>note (str): Заметка устройства</p>
</dd>
</dl>
<p>Модель запроса на добавление заметки к устройству.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">note</span></code> (str): Текст заметки.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.request.NoteRequest.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.request.NoteRequest.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.request.NoteRequest.note">
<span class="sig-name descname"><span class="pre">note</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.request.NoteRequest.note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">note</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.request.WifiConnectRequest">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.request.</span></span><span class="sig-name descname"><span class="pre">WifiConnectRequest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/request.html#WifiConnectRequest"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.request.WifiConnectRequest" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.request.</span></span><span class="sig-name descname"><span class="pre">WifiConnectRequest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/request.html#WifiConnectRequest"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель для подключения к точке доступа Wi-Fi</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>ssid (str): Название точки доступа Wi-Fi
password (str): Пароль точки доступа Wi-Fi</p>
</dd>
</dl>
<p>Модель запроса на подключение к Wi-Fi.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">ssid</span></code> (str): Название точки доступа.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">password</span></code> (str): Пароль доступа.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.request.WifiConnectRequest.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.request.WifiConnectRequest.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.request.WifiConnectRequest.password">
<span class="sig-name descname"><span class="pre">password</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.request.WifiConnectRequest.password" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">password</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.request.WifiConnectRequest.ssid">
<span class="sig-name descname"><span class="pre">ssid</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.request.WifiConnectRequest.ssid" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">ssid</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.request.WifiDisconnectRequest">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.request.</span></span><span class="sig-name descname"><span class="pre">WifiDisconnectRequest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/request.html#WifiDisconnectRequest"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.request.WifiDisconnectRequest" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.request.</span></span><span class="sig-name descname"><span class="pre">WifiDisconnectRequest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/request.html#WifiDisconnectRequest"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель для отключения от точки доступа Wi-Fi</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>ssid (str): Название точки доступа Wi-Fi</p>
</dd>
</dl>
<p>Модель запроса на отключение от Wi-Fi.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">ssid</span></code> (str): Название точки доступа.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.request.WifiDisconnectRequest.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.request.WifiDisconnectRequest.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.request.WifiDisconnectRequest.ssid">
<span class="sig-name descname"><span class="pre">ssid</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.request.WifiDisconnectRequest.ssid" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">ssid</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
</dd></dl>
@ -400,43 +400,9 @@ password (str): Пароль точки доступа Wi-Fi</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">models.request</a><ul>
<li><a class="reference internal" href="#models.request.NoteRequest"><code class="docutils literal notranslate"><span class="pre">NoteRequest</span></code></a><ul>
<li><a class="reference internal" href="#models.request.NoteRequest.model_config"><code class="docutils literal notranslate"><span class="pre">NoteRequest.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.request.NoteRequest.note"><code class="docutils literal notranslate"><span class="pre">NoteRequest.note</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.request.WifiConnectRequest"><code class="docutils literal notranslate"><span class="pre">WifiConnectRequest</span></code></a><ul>
<li><a class="reference internal" href="#models.request.WifiConnectRequest.model_config"><code class="docutils literal notranslate"><span class="pre">WifiConnectRequest.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.request.WifiConnectRequest.password"><code class="docutils literal notranslate"><span class="pre">WifiConnectRequest.password</span></code></a></li>
<li><a class="reference internal" href="#models.request.WifiConnectRequest.ssid"><code class="docutils literal notranslate"><span class="pre">WifiConnectRequest.ssid</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.request.WifiDisconnectRequest"><code class="docutils literal notranslate"><span class="pre">WifiDisconnectRequest</span></code></a><ul>
<li><a class="reference internal" href="#models.request.WifiDisconnectRequest.model_config"><code class="docutils literal notranslate"><span class="pre">WifiDisconnectRequest.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.request.WifiDisconnectRequest.ssid"><code class="docutils literal notranslate"><span class="pre">WifiDisconnectRequest.ssid</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,122 +276,122 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-models.subnet">
<span id="models-subnet"></span><h1>models.subnet<a class="headerlink" href="#module-models.subnet" title="Link to this heading"></a></h1>
<section id="models-subnet">
<h1>models.subnet<a class="headerlink" href="#models-subnet" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="models.subnet.Device">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.subnet.</span></span><span class="sig-name descname"><span class="pre">Device</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hostname</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vendor</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">open_ports</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">last_seen</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/subnet.html#Device"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.subnet.Device" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.subnet.</span></span><span class="sig-name descname"><span class="pre">Device</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hostname</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vendor</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">open_ports</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">last_seen</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/subnet.html#Device"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Сканируемое устройство в подсети</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>ip (str): IP-адрес устройства
mac (Optional[str]): MAC-адрес устройства
hostname (Optional[str]): Имя хоста
vendor (Optional[str]): Название производителя устройства (По MAC-адресу)
open_ports (List[str]): Открытые порты устройства
status (str): Статус устройства (онлайн/оффлайн)
last_seen (Optional[str]): Последняя активность устройства
note (Optional[str]): Заметка устройства</p>
</dd>
</dl>
<p>Модель устройства, обнаруженного в подсети.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">ip</span></code> (str): IP-адрес устройства.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">mac</span></code> (Optional[str]): MAC-адрес устройства.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">hostname</span></code> (Optional[str]): Имя хоста.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">vendor</span></code> (Optional[str]): Производитель оборудования.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">open_ports</span></code> (List[str]): Открытые порты.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">status</span></code> (str): Состояние устройства (online/offline).</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">last_seen</span></code> (Optional[str]): Время последнего обнаружения.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">note</span></code> (Optional[str]): Пользовательская заметка.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.hostname">
<span class="sig-name descname"><span class="pre">hostname</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.subnet.Device.hostname" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">hostname</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.ip">
<span class="sig-name descname"><span class="pre">ip</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.subnet.Device.ip" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">ip</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.last_seen">
<span class="sig-name descname"><span class="pre">last_seen</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.subnet.Device.last_seen" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">last_seen</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.mac">
<span class="sig-name descname"><span class="pre">mac</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.subnet.Device.mac" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">mac</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.subnet.Device.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.note">
<span class="sig-name descname"><span class="pre">note</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.subnet.Device.note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">note</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.open_ports">
<span class="sig-name descname"><span class="pre">open_ports</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#models.subnet.Device.open_ports" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">open_ports</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.status">
<span class="sig-name descname"><span class="pre">status</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.subnet.Device.status" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">status</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.Device.vendor">
<span class="sig-name descname"><span class="pre">vendor</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.subnet.Device.vendor" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">vendor</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.subnet.SubnetScanRequest">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.subnet.</span></span><span class="sig-name descname"><span class="pre">SubnetScanRequest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/subnet.html#SubnetScanRequest"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.subnet.SubnetScanRequest" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.subnet.</span></span><span class="sig-name descname"><span class="pre">SubnetScanRequest</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/subnet.html#SubnetScanRequest"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Параметры для сканирования подсети</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>subnet (Optional[str]): Подсеть для сканирования (например 192.168.1.0/24), опционально</p>
</dd>
</dl>
<p>Параметры запроса на сканирование подсети.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">subnet</span></code> (Optional[str]): CIDR подсети (например, <code class="docutils literal notranslate"><span class="pre">192.168.1.0/24</span></code>).</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.SubnetScanRequest.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.subnet.SubnetScanRequest.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.SubnetScanRequest.subnet">
<span class="sig-name descname"><span class="pre">subnet</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.subnet.SubnetScanRequest.subnet" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">subnet</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.subnet.SubnetScanResult">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.subnet.</span></span><span class="sig-name descname"><span class="pre">SubnetScanResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">devices</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#models.subnet.Device" title="models.subnet.Device"><span class="pre">Device</span></a><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/subnet.html#SubnetScanResult"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.subnet.SubnetScanResult" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.subnet.</span></span><span class="sig-name descname"><span class="pre">SubnetScanResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">devices</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Device</span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">[]</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/subnet.html#SubnetScanResult"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Результат сканирования устройств в подсети</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>devices (List[Device]): Список просканированных устройств
error (Optional[str]): Сообщение об ошибке, если сканирование не удалось</p>
</dd>
</dl>
<p>Результат сканирования подсети.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">devices</span></code> (List[Device]): Найденные устройства.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">error</span></code> (Optional[str]): Сообщение об ошибке сканирования.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.SubnetScanResult.devices">
<span class="sig-name descname"><span class="pre">devices</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#models.subnet.Device" title="models.subnet.Device"><span class="pre">Device</span></a><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#models.subnet.SubnetScanResult.devices" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">devices</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Device</span><span class="p"><span class="pre">]</span></span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.SubnetScanResult.error">
<span class="sig-name descname"><span class="pre">error</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.subnet.SubnetScanResult.error" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">error</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.subnet.SubnetScanResult.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.subnet.SubnetScanResult.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
@ -442,50 +442,9 @@ error (Optional[str]): Сообщение об ошибке, если скани
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">models.subnet</a><ul>
<li><a class="reference internal" href="#models.subnet.Device"><code class="docutils literal notranslate"><span class="pre">Device</span></code></a><ul>
<li><a class="reference internal" href="#models.subnet.Device.hostname"><code class="docutils literal notranslate"><span class="pre">Device.hostname</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.Device.ip"><code class="docutils literal notranslate"><span class="pre">Device.ip</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.Device.last_seen"><code class="docutils literal notranslate"><span class="pre">Device.last_seen</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.Device.mac"><code class="docutils literal notranslate"><span class="pre">Device.mac</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.Device.model_config"><code class="docutils literal notranslate"><span class="pre">Device.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.Device.note"><code class="docutils literal notranslate"><span class="pre">Device.note</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.Device.open_ports"><code class="docutils literal notranslate"><span class="pre">Device.open_ports</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.Device.status"><code class="docutils literal notranslate"><span class="pre">Device.status</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.Device.vendor"><code class="docutils literal notranslate"><span class="pre">Device.vendor</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.subnet.SubnetScanRequest"><code class="docutils literal notranslate"><span class="pre">SubnetScanRequest</span></code></a><ul>
<li><a class="reference internal" href="#models.subnet.SubnetScanRequest.model_config"><code class="docutils literal notranslate"><span class="pre">SubnetScanRequest.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.SubnetScanRequest.subnet"><code class="docutils literal notranslate"><span class="pre">SubnetScanRequest.subnet</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.subnet.SubnetScanResult"><code class="docutils literal notranslate"><span class="pre">SubnetScanResult</span></code></a><ul>
<li><a class="reference internal" href="#models.subnet.SubnetScanResult.devices"><code class="docutils literal notranslate"><span class="pre">SubnetScanResult.devices</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.SubnetScanResult.error"><code class="docutils literal notranslate"><span class="pre">SubnetScanResult.error</span></code></a></li>
<li><a class="reference internal" href="#models.subnet.SubnetScanResult.model_config"><code class="docutils literal notranslate"><span class="pre">SubnetScanResult.model_config</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,254 +276,328 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-models.ufw">
<span id="models-ufw"></span><h1>models.ufw<a class="headerlink" href="#module-models.ufw" title="Link to this heading"></a></h1>
<section id="models-ufw">
<h1>models.ufw<a class="headerlink" href="#models-ufw" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="models.ufw.Action">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">Action</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#Action"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.Action" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">Action</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#Action"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></p>
<p>Enum для действий UFW.</p>
<dl class="simple">
<dt>Attributes:</dt><dd><p>ALLOW: Разрешить трафик
DENY: Запретить трафик без уведомления
REJECT: Запретить трафик с уведомлением отправителю</p>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.Action.ALLOW">
<span class="sig-name descname"><span class="pre">ALLOW</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'allow'</span></em><a class="headerlink" href="#models.ufw.Action.ALLOW" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">ALLOW</span></span></dt>
<dd><p>Разрешить трафик</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">DENY</span></span></dt>
<dd><p>Запретить трафик без уведомления</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">REJECT</span></span></dt>
<dd><p>Запретить трафик с уведомлением отправителю</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">ALLOW</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'allow'</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.Action.DENY">
<span class="sig-name descname"><span class="pre">DENY</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'deny'</span></em><a class="headerlink" href="#models.ufw.Action.DENY" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">DENY</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'deny'</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.Action.REJECT">
<span class="sig-name descname"><span class="pre">REJECT</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'reject'</span></em><a class="headerlink" href="#models.ufw.Action.REJECT" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">REJECT</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'reject'</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.ufw.Direction">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">Direction</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#Direction"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.Direction" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">Direction</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#Direction"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></p>
<p>Enum для направления трафика UFW.</p>
<dl class="simple">
<dt>Attributes:</dt><dd><p>IN: Входящий трафик
OUT: Исходящий трафик</p>
</dd>
</dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.Direction.IN">
<span class="sig-name descname"><span class="pre">IN</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'in'</span></em><a class="headerlink" href="#models.ufw.Direction.IN" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">IN</span></span></dt>
<dd><p>Входящий трафик</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">OUT</span></span></dt>
<dd><p>Исходящий трафик</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">IN</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'in'</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.Direction.OUT">
<span class="sig-name descname"><span class="pre">OUT</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'out'</span></em><a class="headerlink" href="#models.ufw.Direction.OUT" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">OUT</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'out'</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.ufw.Protocol">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">Protocol</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#Protocol"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.Protocol" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">Protocol</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#Protocol"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">Enum</span></code></p>
<p>Enum для сетевых протоколов UFW.</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.Protocol.BOTH">
<span class="sig-name descname"><span class="pre">BOTH</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'both'</span></em><a class="headerlink" href="#models.ufw.Protocol.BOTH" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">BOTH</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'both'</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.Protocol.TCP">
<span class="sig-name descname"><span class="pre">TCP</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'tcp'</span></em><a class="headerlink" href="#models.ufw.Protocol.TCP" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">TCP</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'tcp'</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.Protocol.UDP">
<span class="sig-name descname"><span class="pre">UDP</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'udp'</span></em><a class="headerlink" href="#models.ufw.Protocol.UDP" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">UDP</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'udp'</span></em></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="models.ufw.Protocol.protocols">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">protocols</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#models.ufw.Protocol.protocols" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">protocols</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></em></dt>
<dd><p>Возвращает список протоколов для использования в команде UFW.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.ufw.UFWRule">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">UFWRule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">action</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#models.ufw.Action" title="models.ufw.Action"><span class="pre">Action</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">direction</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#models.ufw.Direction" title="models.ufw.Direction"><span class="pre">Direction</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">from_ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">to_ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#models.ufw.Protocol" title="models.ufw.Protocol"><span class="pre">Protocol</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">comment</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRule" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">UFWRule</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">action</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Action</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">direction</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Direction</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">from_ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">to_ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Protocol</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">comment</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель правила UFW</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRule.action">
<span class="sig-name descname"><span class="pre">action</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#models.ufw.Action" title="models.ufw.Action"><span class="pre">Action</span></a></em><a class="headerlink" href="#models.ufw.UFWRule.action" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">action</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Action</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRule.comment">
<span class="sig-name descname"><span class="pre">comment</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.ufw.UFWRule.comment" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">comment</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRule.direction">
<span class="sig-name descname"><span class="pre">direction</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#models.ufw.Direction" title="models.ufw.Direction"><span class="pre">Direction</span></a></em><a class="headerlink" href="#models.ufw.UFWRule.direction" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">direction</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Direction</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRule.from_ip">
<span class="sig-name descname"><span class="pre">from_ip</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.ufw.UFWRule.from_ip" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">from_ip</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="models.ufw.UFWRule.from_ufw_output">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_ufw_output</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">line</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a></span></span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.from_ufw_output"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRule.from_ufw_output" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_ufw_output</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">line</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">UFWRule</span></span></span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.from_ufw_output"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Создает экземпляр UFWRule из строки вывода команды ‘ufw status numbered’.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>line: Строка вывода UFW (например, “[1] 80/tcp ALLOW IN 192.168.1.0/24 # Web Server”)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>line</strong> – Строка вывода UFW (например, “[1] 80/tcp ALLOW IN 192.168.1.0/24 # Web Server”)</p>
</dd>
<dt>Returns:</dt><dd><p>UFWRule: Новый экземпляр правила</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Новый экземпляр правила</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>UFWRule</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRule.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.ufw.UFWRule.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRule.port">
<span class="sig-name descname"><span class="pre">port</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.ufw.UFWRule.port" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">port</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRule.protocol">
<span class="sig-name descname"><span class="pre">protocol</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><a class="reference internal" href="#models.ufw.Protocol" title="models.ufw.Protocol"><span class="pre">Protocol</span></a></em><a class="headerlink" href="#models.ufw.UFWRule.protocol" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">protocol</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">Protocol</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRule.to_ip">
<span class="sig-name descname"><span class="pre">to_ip</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.ufw.UFWRule.to_ip" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">to_ip</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="models.ufw.UFWRule.to_ufw_command">
<span class="sig-name descname"><span class="pre">to_ufw_command</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.to_ufw_command"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRule.to_ufw_command" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">to_ufw_command</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.to_ufw_command"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Преобразует правило в команду UFW.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="models.ufw.UFWRule.validate_action">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_action</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_action"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRule.validate_action" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_action</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_action"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Приводит значение action к нижнему регистру перед валидацией</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="models.ufw.UFWRule.validate_ip">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_ip</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_ip"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRule.validate_ip" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_ip</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_ip"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет корректность IP адреса</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="models.ufw.UFWRule.validate_ip_version_compatibility">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_ip_version_compatibility</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_ip_version_compatibility"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRule.validate_ip_version_compatibility" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_ip_version_compatibility</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">values</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_ip_version_compatibility"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет совместимость версий IP адресов</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="models.ufw.UFWRule.validate_port">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_port</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_port"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRule.validate_port" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_port</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_port"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет корректность порта или диапазона портов.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>v: Порт (число) или диапазон портов (строка вида “3000:3999”)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>v</strong> – Порт (число) или диапазон портов (строка вида “3000:3999”)</p>
</dd>
<dt>Returns:</dt><dd><p>Union[int, str]: Валидированное значение порта</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Валидированное значение порта</p>
</dd>
<dt>Raises:</dt><dd><p>ValueError: Если порт или диапазон портов некорректен</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Union[int, str]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>ValueError</strong> – Если порт или диапазон портов некорректен</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="models.ufw.UFWRule.validate_protocol">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_protocol</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_protocol"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRule.validate_protocol" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">classmethod</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">validate_protocol</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">v</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRule.validate_protocol"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Приводит значение protocol к нижнему регистру перед валидацией</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.ufw.UFWRulesResponse">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">UFWRulesResponse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enabled:</span> <span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rules:</span> <span class="pre">~typing.List[~models.ufw.UFWRule]</span> <span class="pre">=</span> <span class="pre">&lt;factory&gt;</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRulesResponse"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWRulesResponse" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">UFWRulesResponse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enabled:</span> <span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rules:</span> <span class="pre">~typing.List[~models.ufw.UFWRule]</span> <span class="pre">=</span> <span class="pre">&lt;factory&gt;</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWRulesResponse"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель для представления списка правил UFW.</p>
<dl class="simple">
<dt>Attributes:</dt><dd><p>enabled: Включен ли UFW
rules: Список правил UFW
total_rules: Общее количество правил</p>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">enabled</span></span></dt>
<dd><p>Включен ли UFW</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRulesResponse.enabled">
<span class="sig-name descname"><span class="pre">enabled</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#models.ufw.UFWRulesResponse.enabled" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">rules</span></span></dt>
<dd><p>Список правил UFW</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[models.ufw.UFWRule]</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">total_rules</span></span></dt>
<dd><p>Общее количество правил</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">enabled</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRulesResponse.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.ufw.UFWRulesResponse.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWRulesResponse.rules">
<span class="sig-name descname"><span class="pre">rules</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#models.ufw.UFWRulesResponse.rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">rules</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">UFWRule</span><span class="p"><span class="pre">]</span></span></em></dt>
<dd></dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="models.ufw.UFWRulesResponse.total_rules">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">total_rules</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><a class="headerlink" href="#models.ufw.UFWRulesResponse.total_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">total_rules</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em></dt>
<dd><p>Возвращает общее количество правил.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.ufw.UFWStatus">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">UFWStatus</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">enabled</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWStatus"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.ufw.UFWStatus" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.ufw.</span></span><span class="sig-name descname"><span class="pre">UFWStatus</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">enabled</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/ufw.html#UFWStatus"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель для представления статуса UFW.</p>
<dl class="simple">
<dt>Attributes:</dt><dd><p>enabled: Включен ли UFW
message: Сообщение о статусе
last_checked: Время последней проверки статуса</p>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">enabled</span></span></dt>
<dd><p>Включен ли UFW</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWStatus.enabled">
<span class="sig-name descname"><span class="pre">enabled</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#models.ufw.UFWStatus.enabled" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">message</span></span></dt>
<dd><p>Сообщение о статусе</p>
<dl class="field-list simple">
<dt class="field-odd">Type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">last_checked</span></span></dt>
<dd><p>Время последней проверки статуса</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">enabled</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWStatus.message">
<span class="sig-name descname"><span class="pre">message</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.ufw.UFWStatus.message" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">message</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.ufw.UFWStatus.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.ufw.UFWStatus.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
@ -574,76 +648,9 @@ last_checked: Время последней проверки статуса</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">models.ufw</a><ul>
<li><a class="reference internal" href="#models.ufw.Action"><code class="docutils literal notranslate"><span class="pre">Action</span></code></a><ul>
<li><a class="reference internal" href="#models.ufw.Action.ALLOW"><code class="docutils literal notranslate"><span class="pre">Action.ALLOW</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.Action.DENY"><code class="docutils literal notranslate"><span class="pre">Action.DENY</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.Action.REJECT"><code class="docutils literal notranslate"><span class="pre">Action.REJECT</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.ufw.Direction"><code class="docutils literal notranslate"><span class="pre">Direction</span></code></a><ul>
<li><a class="reference internal" href="#models.ufw.Direction.IN"><code class="docutils literal notranslate"><span class="pre">Direction.IN</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.Direction.OUT"><code class="docutils literal notranslate"><span class="pre">Direction.OUT</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.ufw.Protocol"><code class="docutils literal notranslate"><span class="pre">Protocol</span></code></a><ul>
<li><a class="reference internal" href="#models.ufw.Protocol.BOTH"><code class="docutils literal notranslate"><span class="pre">Protocol.BOTH</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.Protocol.TCP"><code class="docutils literal notranslate"><span class="pre">Protocol.TCP</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.Protocol.UDP"><code class="docutils literal notranslate"><span class="pre">Protocol.UDP</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.Protocol.protocols"><code class="docutils literal notranslate"><span class="pre">Protocol.protocols</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.ufw.UFWRule"><code class="docutils literal notranslate"><span class="pre">UFWRule</span></code></a><ul>
<li><a class="reference internal" href="#models.ufw.UFWRule.action"><code class="docutils literal notranslate"><span class="pre">UFWRule.action</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.comment"><code class="docutils literal notranslate"><span class="pre">UFWRule.comment</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.direction"><code class="docutils literal notranslate"><span class="pre">UFWRule.direction</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.from_ip"><code class="docutils literal notranslate"><span class="pre">UFWRule.from_ip</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.from_ufw_output"><code class="docutils literal notranslate"><span class="pre">UFWRule.from_ufw_output()</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.model_config"><code class="docutils literal notranslate"><span class="pre">UFWRule.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.port"><code class="docutils literal notranslate"><span class="pre">UFWRule.port</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.protocol"><code class="docutils literal notranslate"><span class="pre">UFWRule.protocol</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.to_ip"><code class="docutils literal notranslate"><span class="pre">UFWRule.to_ip</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.to_ufw_command"><code class="docutils literal notranslate"><span class="pre">UFWRule.to_ufw_command()</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.validate_action"><code class="docutils literal notranslate"><span class="pre">UFWRule.validate_action()</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.validate_ip"><code class="docutils literal notranslate"><span class="pre">UFWRule.validate_ip()</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.validate_ip_version_compatibility"><code class="docutils literal notranslate"><span class="pre">UFWRule.validate_ip_version_compatibility()</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.validate_port"><code class="docutils literal notranslate"><span class="pre">UFWRule.validate_port()</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRule.validate_protocol"><code class="docutils literal notranslate"><span class="pre">UFWRule.validate_protocol()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.ufw.UFWRulesResponse"><code class="docutils literal notranslate"><span class="pre">UFWRulesResponse</span></code></a><ul>
<li><a class="reference internal" href="#models.ufw.UFWRulesResponse.enabled"><code class="docutils literal notranslate"><span class="pre">UFWRulesResponse.enabled</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRulesResponse.model_config"><code class="docutils literal notranslate"><span class="pre">UFWRulesResponse.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRulesResponse.rules"><code class="docutils literal notranslate"><span class="pre">UFWRulesResponse.rules</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWRulesResponse.total_rules"><code class="docutils literal notranslate"><span class="pre">UFWRulesResponse.total_rules</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.ufw.UFWStatus"><code class="docutils literal notranslate"><span class="pre">UFWStatus</span></code></a><ul>
<li><a class="reference internal" href="#models.ufw.UFWStatus.enabled"><code class="docutils literal notranslate"><span class="pre">UFWStatus.enabled</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWStatus.message"><code class="docutils literal notranslate"><span class="pre">UFWStatus.message</span></code></a></li>
<li><a class="reference internal" href="#models.ufw.UFWStatus.model_config"><code class="docutils literal notranslate"><span class="pre">UFWStatus.model_config</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,100 +276,100 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-models.wifi">
<span id="models-wifi"></span><h1>models.wifi<a class="headerlink" href="#module-models.wifi" title="Link to this heading"></a></h1>
<section id="models-wifi">
<h1>models.wifi<a class="headerlink" href="#models-wifi" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.wifi.</span></span><span class="sig-name descname"><span class="pre">WifiAccessPoint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">signal</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encryption</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vendor</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hidden</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/wifi.html#WifiAccessPoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.wifi.WifiAccessPoint" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.wifi.</span></span><span class="sig-name descname"><span class="pre">WifiAccessPoint</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">signal</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">encryption</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vendor</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hidden</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/wifi.html#WifiAccessPoint"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Модель точки доступа Wi-Fi</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>ssid (Optional[str]): Название точки доступа. Может быть скрытым
bssid (str): Уникальный идентификатор точки доступа (по типу MAC-адреса)
channel (Optional[int]): Канал, на котором работает точка доступа
signal (Optional[int]): Уровень сигнала (dBm)
encryption (Optional[str]): Тип шифрования (WPA2, WPA3, открытая и т.д.)
frequency (Optional[str]): Частота вещания (2.4GHz/5GHz)
vendor (Optional[str]): Производитель точки доступа (определяется по MAC-адресу)
hidden (bool): Флаг скрытия названия точки доступа (ssid)
note (Optional[str]): Заметка для точки доступа</p>
</dd>
</dl>
<p>Модель Wi-Fi точки доступа.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">ssid</span></code> (Optional[str]): Название сети (может быть скрытым).</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">bssid</span></code> (str): Уникальный идентификатор точки доступа.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">channel</span></code> (Optional[int]): Номер канала.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">signal</span></code> (Optional[int]): Уровень сигнала в dBm.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">encryption</span></code> (Optional[str]): Тип шифрования (WPA/WPA2/WPA3/открытая).</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">frequency</span></code> (Optional[str]): Диапазон частот (2.4/5 ГГц).</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">vendor</span></code> (Optional[str]): Производитель оборудования.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">hidden</span></code> (bool): Флаг скрытого SSID.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">note</span></code> (Optional[str]): Пользовательская заметка.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.bssid">
<span class="sig-name descname"><span class="pre">bssid</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.bssid" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">bssid</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.channel">
<span class="sig-name descname"><span class="pre">channel</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.channel" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">channel</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.encryption">
<span class="sig-name descname"><span class="pre">encryption</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.encryption" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">encryption</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.frequency">
<span class="sig-name descname"><span class="pre">frequency</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.frequency" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">frequency</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.hidden">
<span class="sig-name descname"><span class="pre">hidden</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.hidden" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">hidden</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.note">
<span class="sig-name descname"><span class="pre">note</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">note</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.signal">
<span class="sig-name descname"><span class="pre">signal</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.signal" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">signal</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.ssid">
<span class="sig-name descname"><span class="pre">ssid</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.ssid" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">ssid</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiAccessPoint.vendor">
<span class="sig-name descname"><span class="pre">vendor</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#models.wifi.WifiAccessPoint.vendor" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">vendor</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em></dt>
<dd></dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="models.wifi.WifiScanResult">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.wifi.</span></span><span class="sig-name descname"><span class="pre">WifiScanResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_points</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#models.wifi.WifiAccessPoint" title="models.wifi.WifiAccessPoint"><span class="pre">WifiAccessPoint</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/wifi.html#WifiScanResult"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#models.wifi.WifiScanResult" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">models.wifi.</span></span><span class="sig-name descname"><span class="pre">WifiScanResult</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">access_points</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">WifiAccessPoint</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/models/wifi.html#WifiScanResult"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">BaseModel</span></code></p>
<p>Результат сканирования Wi-Fi</p>
<dl class="simple">
<dt>Атрибуты:</dt><dd><p>access_points (List[WifiAccessPoint]): Список найденных Wi-Fi точек доступа</p>
</dd>
</dl>
<p>Результат сканирования Wi-Fi.</p>
<p>Атрибуты:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">access_points</span></code> (List[WifiAccessPoint]): Найденные точки доступа.</p></li>
</ul>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiScanResult.access_points">
<span class="sig-name descname"><span class="pre">access_points</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#models.wifi.WifiAccessPoint" title="models.wifi.WifiAccessPoint"><span class="pre">WifiAccessPoint</span></a><span class="p"><span class="pre">]</span></span></em><a class="headerlink" href="#models.wifi.WifiScanResult.access_points" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">access_points</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">WifiAccessPoint</span><span class="p"><span class="pre">]</span></span></em></dt>
<dd></dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="models.wifi.WifiScanResult.model_config">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em><a class="headerlink" href="#models.wifi.WifiScanResult.model_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">model_config</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">ClassVar</span><span class="p"><span class="pre">[</span></span><span class="pre">ConfigDict</span><span class="p"><span class="pre">]</span></span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">{}</span></em></dt>
<dd><p>Configuration for the model, should be a dictionary conforming to [<cite>ConfigDict</cite>][pydantic.config.ConfigDict].</p>
</dd></dl>
@ -420,45 +420,9 @@ note (Optional[str]): Заметка для точки доступа</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">models.wifi</a><ul>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint</span></code></a><ul>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.bssid"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.bssid</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.channel"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.channel</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.encryption"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.encryption</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.frequency"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.frequency</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.hidden"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.hidden</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.model_config"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.model_config</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.note"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.note</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.signal"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.signal</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.ssid"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.ssid</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiAccessPoint.vendor"><code class="docutils literal notranslate"><span class="pre">WifiAccessPoint.vendor</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#models.wifi.WifiScanResult"><code class="docutils literal notranslate"><span class="pre">WifiScanResult</span></code></a><ul>
<li><a class="reference internal" href="#models.wifi.WifiScanResult.access_points"><code class="docutils literal notranslate"><span class="pre">WifiScanResult.access_points</span></code></a></li>
<li><a class="reference internal" href="#models.wifi.WifiScanResult.model_config"><code class="docutils literal notranslate"><span class="pre">WifiScanResult.model_config</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -281,8 +281,8 @@
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services">
<span id="id1"></span><h1>Сервисы<a class="headerlink" href="#module-services" title="Link to this heading"></a></h1>
<section id="id1">
<h1>Сервисы<a class="headerlink" href="#id1" title="Link to this heading"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="services/arp_service.html">ARP Service</a></li>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,13 +276,13 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.arp_service">
<span id="arp-service"></span><h1>ARP Service<a class="headerlink" href="#module-services.arp_service" title="Link to this heading"></a></h1>
<section id="arp-service">
<h1>ARP Service<a class="headerlink" href="#arp-service" title="Link to this heading"></a></h1>
<p>Сервис низкоуровневого ARP-сканирования локальной сети.</p>
<p>Назначение:</p>
<ul class="simple">
@ -300,46 +300,53 @@
<li><p>Для отправки ARP-кадров могут потребоваться повышенные привилегии или capability на сырой сокет.</p></li>
</ul>
<dl class="py class">
<dt class="sig sig-object py" id="services.arp_service.NetworkScanner">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.arp_service.</span></span><span class="sig-name descname"><span class="pre">NetworkScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.arp_service.NetworkScanner" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.arp_service.</span></span><span class="sig-name descname"><span class="pre">NetworkScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Инициализация сетевого сканера.</p>
<p>Предоставляет методы для сканирования сети с использованием ARP-запросов и
вывода информации о клиентах.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.arp_service.NetworkScanner.print_clients">
<span class="sig-name descname"><span class="pre">print_clients</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">clients</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner.print_clients"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.arp_service.NetworkScanner.print_clients" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">print_clients</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">clients</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner.print_clients"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Выводит список адресов клиентов в формате таблицы.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>clients (List[dict]): Список словарей с ключами “ip” и “mac”,</dt><dd><p>представляющих клиентов.</p>
</dd>
</dl>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>clients</strong> (<em>List</em><em>[</em><em>dict</em><em>]</em>) – Список словарей с ключами “ip” и “mac”,
представляющих клиентов.</p>
</dd>
</dl>
<p>Выводит IP-адреса и MAC-адреса в отсортированном по IP порядке.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.arp_service.NetworkScanner.scan_network">
<span class="sig-name descname"><span class="pre">scan_network</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">attempts</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner.scan_network"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.arp_service.NetworkScanner.scan_network" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">scan_network</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">attempts</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">2</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/arp_service.html#NetworkScanner.scan_network"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сканирует сеть для обнаружения активных клиентов.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>attempts (int, optional): Количество попыток отправки ARP-запросов.</dt><dd><p>По умолчанию 3.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>attempts</strong> (<em>int</em><em>, </em><em>optional</em>) – Количество попыток отправки ARP-запросов.
По умолчанию 3.</p></li>
<li><p><strong>timeout</strong> (<em>int</em><em>, </em><em>optional</em>) – Таймаут ожидания ответа в секундах.
По умолчанию 2.</p></li>
</ul>
</dd>
<dt>timeout (int, optional): Таймаут ожидания ответа в секундах.</dt><dd><p>По умолчанию 2.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Список словарей с ключами “ip” и “mac”, представляющих</dt><dd><p>обнаруженных клиентов, включая локальные IP-адреса.</p>
</dd>
</dl>
</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>List[dict]: Список словарей с ключами “ip” и “mac”, представляющих</dt><dd><p>обнаруженных клиентов, включая локальные IP-адреса.</p>
</dd>
</dl>
</dd>
<dt>Note:</dt><dd><p>Учитывает локальные IP-адреса интерфейса и удаляет дубликаты.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[dict]</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Учитывает локальные IP-адреса интерфейса и удаляет дубликаты.</p>
</div>
</dd></dl>
</dd></dl>
@ -389,32 +396,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">ARP Service</a><ul>
<li><a class="reference internal" href="#services.arp_service.NetworkScanner"><code class="docutils literal notranslate"><span class="pre">NetworkScanner</span></code></a><ul>
<li><a class="reference internal" href="#services.arp_service.NetworkScanner.print_clients"><code class="docutils literal notranslate"><span class="pre">NetworkScanner.print_clients()</span></code></a></li>
<li><a class="reference internal" href="#services.arp_service.NetworkScanner.scan_network"><code class="docutils literal notranslate"><span class="pre">NetworkScanner.scan_network()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,57 +276,57 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.auth_service">
<span id="auth-service"></span><h1>Auth Service<a class="headerlink" href="#module-services.auth_service" title="Link to this heading"></a></h1>
<section id="auth-service">
<h1>Auth Service<a class="headerlink" href="#auth-service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.auth_service.AuthService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.auth_service.</span></span><span class="sig-name descname"><span class="pre">AuthService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.auth_service.</span></span><span class="sig-name descname"><span class="pre">AuthService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для регистрации, авторизации и управления сессиями</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.create_access_token">
<span class="sig-name descname"><span class="pre">create_access_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.create_access_token"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.create_access_token" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">create_access_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.create_access_token"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Создаёт токен</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.get_current_user">
<span class="sig-name descname"><span class="pre">get_current_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(OAuth2PasswordBearer)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/auth.html#models.auth.UserResponse" title="models.auth.UserResponse"><span class="pre">UserResponse</span></a></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.get_current_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.get_current_user" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_current_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(OAuth2PasswordBearer)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">UserResponse</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.get_current_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает текущего пользователя по токену</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.get_user_by_session">
<span class="sig-name descname"><span class="pre">get_user_by_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.get_user_by_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.get_user_by_session" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_user_by_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.get_user_by_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает пользователя и токен по client_id</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.login">
<span class="sig-name descname"><span class="pre">login</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/auth.html#models.auth.UserLogin" title="models.auth.UserLogin"><span class="pre">UserLogin</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.login"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.login" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">login</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">UserLogin</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.login"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Авторизует пользователя, создаёт сессию и возвращает токен</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.logout">
<span class="sig-name descname"><span class="pre">logout</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.logout"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.logout" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">logout</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.logout"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Выполняет выход из системы, удаляя последнюю сессию для client_id</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.register">
<span class="sig-name descname"><span class="pre">register</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/auth.html#models.auth.UserCreate" title="models.auth.UserCreate"><span class="pre">UserCreate</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/auth.html#models.auth.UserResponse" title="models.auth.UserResponse"><span class="pre">UserResponse</span></a></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.register"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.register" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">register</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">UserCreate</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">UserResponse</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.register"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Регистрирует нового пользователя</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.auth_service.AuthService.verify_token">
<span class="sig-name descname"><span class="pre">verify_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.verify_token"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.auth_service.AuthService.verify_token" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">verify_token</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/auth_service.html#AuthService.verify_token"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет токен</p>
</dd></dl>
@ -377,37 +377,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Auth Service</a><ul>
<li><a class="reference internal" href="#services.auth_service.AuthService"><code class="docutils literal notranslate"><span class="pre">AuthService</span></code></a><ul>
<li><a class="reference internal" href="#services.auth_service.AuthService.create_access_token"><code class="docutils literal notranslate"><span class="pre">AuthService.create_access_token()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.get_current_user"><code class="docutils literal notranslate"><span class="pre">AuthService.get_current_user()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.get_user_by_session"><code class="docutils literal notranslate"><span class="pre">AuthService.get_user_by_session()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.login"><code class="docutils literal notranslate"><span class="pre">AuthService.login()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.logout"><code class="docutils literal notranslate"><span class="pre">AuthService.logout()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.register"><code class="docutils literal notranslate"><span class="pre">AuthService.register()</span></code></a></li>
<li><a class="reference internal" href="#services.auth_service.AuthService.verify_token"><code class="docutils literal notranslate"><span class="pre">AuthService.verify_token()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,13 +276,13 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.connect_service">
<span id="connect-service"></span><h1>Connect Service<a class="headerlink" href="#module-services.connect_service" title="Link to this heading"></a></h1>
<section id="connect-service">
<h1>Connect Service<a class="headerlink" href="#connect-service" title="Link to this heading"></a></h1>
<p>Сервис управления подключениями Wi-Fi через <cite>nmcli</cite>.</p>
<p>Назначение:</p>
<ul class="simple">
@ -299,68 +299,94 @@
<li><p>В окружениях без NetworkManager команды <cite>nmcli</cite> будут недоступны.</p></li>
</ul>
<dl class="py class">
<dt class="sig sig-object py" id="services.connect_service.WifiConnectionService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.connect_service.</span></span><span class="sig-name descname"><span class="pre">WifiConnectionService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.connect_service.WifiConnectionService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.connect_service.</span></span><span class="sig-name descname"><span class="pre">WifiConnectionService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для управления подключением к Wi-Fi сетям с использованием nmcli.</p>
<p>Предоставляет методы для подключения, отключения и проверки статуса Wi-Fi соединений.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.connect_service.WifiConnectionService.connect">
<span class="sig-name descname"><span class="pre">connect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.connect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.connect_service.WifiConnectionService.connect" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">connect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.connect"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Подключается к Wi-Fi сети по SSID и паролю.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ssid (str): Идентификатор сети Wi-Fi.
password (str): Пароль для подключения.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>ssid</strong> (<em>str</em>) – Идентификатор сети Wi-Fi.</p></li>
<li><p><strong>password</strong> (<em>str</em>) – Пароль для подключения.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[str]]: Кортеж (успех, сообщение об ошибке).</dt><dd><ul class="simple">
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Кортеж (успех, сообщение об ошибке).</dt><dd><ul class="simple">
<li><p>Успех: (True, None).</p></li>
<li><p>Ошибка: (False, сообщение об ошибке).</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>subprocess.CalledProcessError: Если команда nmcli завершилась с ошибкой.
Exception: Если произошла неизвестная ошибка при выполнении.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Tuple[bool, Optional[str]]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>subprocess.CalledProcessError</strong> – Если команда nmcli завершилась с ошибкой.</p></li>
<li><p><strong>Exception</strong> – Если произошла неизвестная ошибка при выполнении.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.connect_service.WifiConnectionService.disconnect">
<span class="sig-name descname"><span class="pre">disconnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.disconnect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.connect_service.WifiConnectionService.disconnect" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">disconnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.disconnect"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Отключается от Wi-Fi сети по указанному SSID.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ssid (str): Идентификатор сети Wi-Fi для отключения.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>ssid</strong> (<em>str</em>) – Идентификатор сети Wi-Fi для отключения.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[str]]: Кортеж (успех, сообщение об ошибке).</dt><dd><ul class="simple">
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Кортеж (успех, сообщение об ошибке).</dt><dd><ul class="simple">
<li><p>Успех: (True, None или сообщение, если подключение не найдено).</p></li>
<li><p>Ошибка: (False, сообщение об ошибке).</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>subprocess.CalledProcessError: Если команда nmcli завершилась с ошибкой.
Exception: Если произошла неизвестная ошибка при выполнении.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Tuple[bool, Optional[str]]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>subprocess.CalledProcessError</strong> – Если команда nmcli завершилась с ошибкой.</p></li>
<li><p><strong>Exception</strong> – Если произошла неизвестная ошибка при выполнении.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.connect_service.WifiConnectionService.get_status">
<span class="sig-name descname"><span class="pre">get_status</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.get_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.connect_service.WifiConnectionService.get_status" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_status</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/connect_service.html#WifiConnectionService.get_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет статус текущего подключения к Wi-Fi.</p>
<dl class="simple">
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[str]]: Кортеж (успех, SSID или сообщение об ошибке).</dt><dd><ul class="simple">
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p><dl class="simple">
<dt>Кортеж (успех, SSID или сообщение об ошибке).</dt><dd><ul class="simple">
<li><p>Успех: (True, SSID текущей сети).</p></li>
<li><p>Ошибка или отсутствие подключения: (False, сообщение об ошибке).</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при выполнении команды nmcli.</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>Tuple[bool, Optional[str]]</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>Exception</strong> – Если произошла ошибка при выполнении команды nmcli.</p>
</dd>
</dl>
</dd></dl>
@ -412,33 +438,9 @@ Exception: Если произошла неизвестная ошибка пр
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Connect Service</a><ul>
<li><a class="reference internal" href="#services.connect_service.WifiConnectionService"><code class="docutils literal notranslate"><span class="pre">WifiConnectionService</span></code></a><ul>
<li><a class="reference internal" href="#services.connect_service.WifiConnectionService.connect"><code class="docutils literal notranslate"><span class="pre">WifiConnectionService.connect()</span></code></a></li>
<li><a class="reference internal" href="#services.connect_service.WifiConnectionService.disconnect"><code class="docutils literal notranslate"><span class="pre">WifiConnectionService.disconnect()</span></code></a></li>
<li><a class="reference internal" href="#services.connect_service.WifiConnectionService.get_status"><code class="docutils literal notranslate"><span class="pre">WifiConnectionService.get_status()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,111 +276,108 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.firewalld_service">
<span id="firewalld-service"></span><h1>Firewalld Service<a class="headerlink" href="#module-services.firewalld_service" title="Link to this heading"></a></h1>
<section id="firewalld-service">
<h1>Firewalld Service<a class="headerlink" href="#firewalld-service" title="Link to this heading"></a></h1>
<p>Сервис для управления firewalld через D-Bus.</p>
<p>Назначение:
- Обёртка над интерфейсами <cite>org.fedoraproject.FirewallD1</cite> для выполнения</p>
<blockquote>
<div><p>типовых операций по зонам: просмотр/изменение дефолтной зоны, добавление и
удаление сервисов, портов, источников, перезагрузка конфигурации.</p>
</div></blockquote>
<p>Примечания:
- Используется <cite>pydbus.SystemBus</cite> для доступа к системной шине.
- Методы генерируют дружелюбные исключения при ошибках, содержащие контекст</p>
<blockquote>
<div><p>операции.</p>
</div></blockquote>
<p>Назначение:</p>
<ul class="simple">
<li><p>Обёртка над интерфейсами <cite>org.fedoraproject.FirewallD1</cite> для выполнения типовых операций по зонам: просмотр/изменение дефолтной зоны, добавление и удаление сервисов, портов, источников, перезагрузка конфигурации.</p></li>
</ul>
<p>Примечания:</p>
<ul class="simple">
<li><p>Используется <cite>pydbus.SystemBus</cite> для доступа к системной шине.</p></li>
<li><p>Методы генерируют дружелюбные исключения при ошибках, содержащие контекст операции.</p></li>
</ul>
<dl class="py class">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.firewalld_service.</span></span><span class="sig-name descname"><span class="pre">FirewalldService</span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.firewalld_service.</span></span><span class="sig-name descname"><span class="pre">FirewalldService</span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.add_port">
<span class="sig-name descname"><span class="pre">add_port</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_port"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.add_port" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_port</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_port"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Add a port to a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.add_service">
<span class="sig-name descname"><span class="pre">add_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.add_service" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Add a service to a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.add_source">
<span class="sig-name descname"><span class="pre">add_source</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_source"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.add_source" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_source</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.add_source"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Add a source to a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_default_zone">
<span class="sig-name descname"><span class="pre">get_default_zone</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_default_zone"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_default_zone" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_default_zone</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_default_zone"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Get the default zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_ports">
<span class="sig-name descname"><span class="pre">get_ports</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_ports"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_ports" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_ports</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_ports"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Get list of ports in a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_services">
<span class="sig-name descname"><span class="pre">get_services</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_services"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_services" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_services</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_services"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Get list of services in a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_sources">
<span class="sig-name descname"><span class="pre">get_sources</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_sources"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_sources" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_sources</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_sources"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Get list of sources in a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_zone_settings">
<span class="sig-name descname"><span class="pre">get_zone_settings</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_zone_settings"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_zone_settings" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_zone_settings</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_zone_settings"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Get all settings for a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.get_zones">
<span class="sig-name descname"><span class="pre">get_zones</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_zones"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.get_zones" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_zones</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.get_zones"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Get list of all zones.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.reload">
<span class="sig-name descname"><span class="pre">reload</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.reload"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.reload" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">reload</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.reload"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Reload firewall rules.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.remove_port">
<span class="sig-name descname"><span class="pre">remove_port</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_port"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.remove_port" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">remove_port</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_port"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Remove a port from a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.remove_service">
<span class="sig-name descname"><span class="pre">remove_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.remove_service" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">remove_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">service</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Remove a service from a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.remove_source">
<span class="sig-name descname"><span class="pre">remove_source</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_source"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.remove_source" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">remove_source</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.remove_source"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Remove a source from a zone.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.firewalld_service.FirewalldService.set_default_zone">
<span class="sig-name descname"><span class="pre">set_default_zone</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.set_default_zone"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.firewalld_service.FirewalldService.set_default_zone" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">set_default_zone</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">zone</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/firewalld_service.html#FirewalldService.set_default_zone"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Set the default zone.</p>
</dd></dl>
@ -431,44 +428,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Firewalld Service</a><ul>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService"><code class="docutils literal notranslate"><span class="pre">FirewalldService</span></code></a><ul>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.add_port"><code class="docutils literal notranslate"><span class="pre">FirewalldService.add_port()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.add_service"><code class="docutils literal notranslate"><span class="pre">FirewalldService.add_service()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.add_source"><code class="docutils literal notranslate"><span class="pre">FirewalldService.add_source()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_default_zone"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_default_zone()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_ports"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_ports()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_services"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_services()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_sources"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_sources()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_zone_settings"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_zone_settings()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.get_zones"><code class="docutils literal notranslate"><span class="pre">FirewalldService.get_zones()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.reload"><code class="docutils literal notranslate"><span class="pre">FirewalldService.reload()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.remove_port"><code class="docutils literal notranslate"><span class="pre">FirewalldService.remove_port()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.remove_service"><code class="docutils literal notranslate"><span class="pre">FirewalldService.remove_service()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.remove_source"><code class="docutils literal notranslate"><span class="pre">FirewalldService.remove_source()</span></code></a></li>
<li><a class="reference internal" href="#services.firewalld_service.FirewalldService.set_default_zone"><code class="docutils literal notranslate"><span class="pre">FirewalldService.set_default_zone()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,82 +276,88 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.ip_service">
<span id="ip-service"></span><h1>IP Service<a class="headerlink" href="#module-services.ip_service" title="Link to this heading"></a></h1>
<section id="ip-service">
<h1>IP Service<a class="headerlink" href="#ip-service" title="Link to this heading"></a></h1>
<p>Сервис проверки и применения IP-настроек через NetworkManager (D-Bus).</p>
<p>Назначение:
- Перед применением конфигурации проверяет занятость IP адреса, сканируя сегмент</p>
<blockquote>
<div><p>сети средствами ARP (через <cite>NetworkScanner</cite>).</p>
</div></blockquote>
<p>Назначение:</p>
<ul class="simple">
<li><p>Применяет изменения профиля подключения через <cite>sdbus_async.networkmanager</cite> и
выполняет переподключение интерфейса.</p></li>
<li><p>Перед применением конфигурации проверяет занятость IP адреса, сканируя сегмент сети средствами ARP (через <cite>NetworkScanner</cite>).</p></li>
<li><p>Применяет изменения профиля подключения через <cite>sdbus_async.networkmanager</cite> и выполняет переподключение интерфейса.</p></li>
</ul>
<p>Требования/ограничения:</p>
<ul class="simple">
<li><p>Доступ к системной шине D-Bus и права на изменения сетевых профилей.</p></li>
<li><p>Структура входных данных должна соответствовать схеме <cite>ipv4_updates</cite> для корректного обновления вложенных полей у профиля.</p></li>
</ul>
<p>Требования/ограничения:
- Доступ к системной шине D-Bus и права на изменения сетевых профилей.
- Структура входных данных должна соответствовать схеме <cite>ipv4_updates</cite> для</p>
<blockquote>
<div><p>корректного обновления вложенных полей у профиля.</p>
</div></blockquote>
<dl class="py class">
<dt class="sig sig-object py" id="services.ip_service.IPService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.ip_service.</span></span><span class="sig-name descname"><span class="pre">IPService</span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ip_service.IPService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.ip_service.</span></span><span class="sig-name descname"><span class="pre">IPService</span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис проверки доступности IP-адреса и применения настроек сети.</p>
<p>Предоставляет асинхронные методы для проверки занятости IP-адреса с использованием
ARP-сканирования и применения настроек через NetworkManager.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.ip_service.IPService.apply_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">apply_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService.apply_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ip_service.IPService.apply_ip_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">apply_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService.apply_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Применяет проверенные настройки IP к указанному соединению.</p>
<p>Перезапускает шину D-Bus, обновляет настройки соединения через NetworkManager,
отключает и переподключает устройство к сети.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>args (Dict[str, Any]): Словарь с данными, включая:</dt><dd><ul class="simple">
<li><p>“connection_id” (str): Идентификатор соединения.</p></li>
<li><p>“ipv4_updates” (Dict): Обновления настроек IPv4.</p></li>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>args</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Any</em><em>]</em>) – Словарь с данными, включая:
- “connection_id” (str): Идентификатор соединения.
- “ipv4_updates” (Dict): Обновления настроек IPv4.</p></li>
<li><p><strong>translations</strong> (<em>Translations</em>) – Объект переводов.</p></li>
</ul>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>ValueError</strong> – Если соединение с указанным ID не найдено.</p></li>
<li><p><strong>RuntimeError</strong> – Если устройство для интерфейса не найдено.</p></li>
</ul>
</dd>
</dl>
<p>translations (Translations): Объект переводов.</p>
</dd>
<dt>Raises:</dt><dd><p>ValueError: Если соединение с указанным ID не найдено.
RuntimeError: Если устройство для интерфейса не найдено.</p>
</dd>
<dt>Note:</dt><dd><p>Требуются права для изменения настроек через NetworkManager.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Требуются права для изменения настроек через NetworkManager.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ip_service.IPService.check_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">check_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService.check_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ip_service.IPService.check_ip_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">check_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">args</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/ip_service.html#IPService.check_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет доступность IP-адреса перед его применением.</p>
<p>Выполняет ARP-сканирование сети для проверки, занят ли указанный IP-адрес.
Перезапускает шину D-Bus перед выполнением.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>args (Dict[str, Any]): Словарь с данными, включая “ipv4_updates”</dt><dd><p>с полем “ipv4.address-data” для нового IP-адреса.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>args</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Any</em><em>]</em>) – Словарь с данными, включая “ipv4_updates”
с полем “ipv4.address-data” для нового IP-адреса.</p></li>
<li><p><strong>translations</strong> (<em>Translations</em>) – Объект переводов.</p></li>
</ul>
</dd>
</dl>
<p>translations (Translations): Объект переводов.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Dict[str, Any]: Словарь с ключами:</dt><dd><ul class="simple">
<li><p>“available” (bool): Доступен ли IP-адрес.</p></li>
<li><p>“message” (str): Сообщение о результате проверки.</p></li>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с ключами:</dt><dd><ul class="simple">
<li><p>”available” (bool): Доступен ли IP-адрес.</p></li>
<li><p>”message” (str): Сообщение о результате проверки.</p></li>
</ul>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при сканировании ARP.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Dict[str, Any]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при сканировании ARP.</p>
</dd>
</dl>
</dd></dl>
@ -403,32 +409,9 @@ RuntimeError: Если устройство для интерфейса не н
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">IP Service</a><ul>
<li><a class="reference internal" href="#services.ip_service.IPService"><code class="docutils literal notranslate"><span class="pre">IPService</span></code></a><ul>
<li><a class="reference internal" href="#services.ip_service.IPService.apply_ip_config"><code class="docutils literal notranslate"><span class="pre">IPService.apply_ip_config()</span></code></a></li>
<li><a class="reference internal" href="#services.ip_service.IPService.check_ip_config"><code class="docutils literal notranslate"><span class="pre">IPService.check_ip_config()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,238 +276,299 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.network_service">
<span id="network-service"></span><h1>Network Service<a class="headerlink" href="#module-services.network_service" title="Link to this heading"></a></h1>
<section id="network-service">
<h1>Network Service<a class="headerlink" href="#network-service" title="Link to this heading"></a></h1>
<p>Сервис чтения сетевого состояния через NetworkManager (D-Bus).</p>
<p>Назначение:
- Предоставляет асинхронные методы для сборки унифицированных моделей</p>
<blockquote>
<div><p>сетевых интерфейсов (Ethernet/Wi-Fi), их IP-конфигураций, а также получения
имени хоста. Используется API-слоем для визуализации и управления.</p>
</div></blockquote>
<p>Особенности:
- Фильтрация loopback и явно неактивных интерфейсов.
- Адаптация данных D-Bus в pydantic-модели (<cite>NetworkInterface</cite>, <cite>WiFiDevice</cite>,</p>
<blockquote>
<div><p><cite>NetworkInterfacesContainer</cite>).</p>
</div></blockquote>
<p>Назначение:</p>
<ul class="simple">
<li><p>Предоставляет асинхронные методы для сборки унифицированных моделей сетевых интерфейсов (Ethernet/Wi-Fi), их IP-конфигураций, а также получения имени хоста. Используется API-слоем для визуализации и управления.</p></li>
</ul>
<p>Особенности:</p>
<ul class="simple">
<li><p>Фильтрация loopback и явно неактивных интерфейсов.</p></li>
<li><p>Адаптация данных D-Bus в pydantic-модели (<cite>NetworkInterface</cite>, <cite>WiFiDevice</cite>, <cite>NetworkInterfacesContainer</cite>).</p></li>
</ul>
<dl class="py class">
<dt class="sig sig-object py" id="services.network_service.NetworkService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.network_service.</span></span><span class="sig-name descname"><span class="pre">NetworkService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.network_service.</span></span><span class="sig-name descname"><span class="pre">NetworkService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для взаимодействия с NetworkManager через D-Bus.</p>
<p>Предоставляет асинхронные методы для получения информации о сетевых интерфейсах,
их конфигурациях IP, Wi-Fi и состояниях.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_activated_interfaces">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_activated_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.NetworkInterface" title="models.network.NetworkInterface"><span class="pre">NetworkInterface</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_activated_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_activated_interfaces" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_activated_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">NetworkInterface</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_activated_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает список активных сетевых интерфейсов.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>initial_positions</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>int</em><em>, </em><em>int</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – Словарь начальных
координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Список активных интерфейсов (state == “100”).</p>
</dd>
<dt>Returns:</dt><dd><p>List[NetworkInterface]: Список активных интерфейсов (state == “100”).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[NetworkInterface]</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_activated_interfaces_container">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_activated_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/network.html#models.network.NetworkInterfacesContainer" title="models.network.NetworkInterfacesContainer"><span class="pre">NetworkInterfacesContainer</span></a></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_activated_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_activated_interfaces_container" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_activated_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">NetworkInterfacesContainer</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_activated_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает объект, содержащий список активных интерфейсов и координаты контейнера.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>initial_positions</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>int</em><em>, </em><em>int</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – Словарь начальных
координат (x, y) для интерфейсов. По умолчанию None.</p></li>
<li><p><strong>container_x</strong> (<em>int</em><em>, </em><em>optional</em>) – Координата X контейнера. По умолчанию 0.</p></li>
<li><p><strong>container_y</strong> (<em>int</em><em>, </em><em>optional</em>) – Координата Y контейнера. По умолчанию 0.</p></li>
</ul>
</dd>
</dl>
<p>container_x (int, optional): Координата X контейнера. По умолчанию 0.
container_y (int, optional): Координата Y контейнера. По умолчанию 0.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с активными интерфейсами и координатами.</p>
</dd>
<dt>Returns:</dt><dd><p>NetworkInterfacesContainer: Объект с активными интерфейсами и координатами.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>NetworkInterfacesContainer</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_connection_name">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_connection_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_connection_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_connection_name" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_connection_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_connection_name"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Извлекает имя соединения (GENERAL.CONNECTION) для устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>device (NetworkDeviceGeneric): Объект устройства NetworkManager.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>device</strong> (<em>NetworkDeviceGeneric</em>) – Объект устройства NetworkManager.</p>
</dd>
<dt>Returns:</dt><dd><p>str: Имя соединения или “unknown” в случае ошибки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Имя соединения или “unknown” в случае ошибки.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении настроек соединения.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при получении настроек соединения.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_deactivated_interfaces">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_deactivated_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.NetworkInterface" title="models.network.NetworkInterface"><span class="pre">NetworkInterface</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_deactivated_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_deactivated_interfaces" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_deactivated_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">NetworkInterface</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_deactivated_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает список неактивных сетевых интерфейсов.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>initial_positions</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>int</em><em>, </em><em>int</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – Словарь начальных
координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Список интерфейсов с state != “100”.</p>
</dd>
<dt>Returns:</dt><dd><p>List[NetworkInterface]: Список интерфейсов с state != “100”.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[NetworkInterface]</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_deactivated_interfaces_container">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_deactivated_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/network.html#models.network.NetworkInterfacesContainer" title="models.network.NetworkInterfacesContainer"><span class="pre">NetworkInterfacesContainer</span></a></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_deactivated_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_deactivated_interfaces_container" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_deactivated_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">NetworkInterfacesContainer</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_deactivated_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает объект, содержащий список неактивных интерфейсов и координаты контейнера.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>initial_positions</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>int</em><em>, </em><em>int</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – Словарь начальных
координат (x, y) для интерфейсов. По умолчанию None.</p></li>
<li><p><strong>container_x</strong> (<em>int</em><em>, </em><em>optional</em>) – Координата X контейнера. По умолчанию 0.</p></li>
<li><p><strong>container_y</strong> (<em>int</em><em>, </em><em>optional</em>) – Координата Y контейнера. По умолчанию 0.</p></li>
</ul>
</dd>
</dl>
<p>container_x (int, optional): Координата X контейнера. По умолчанию 0.
container_y (int, optional): Координата Y контейнера. По умолчанию 0.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с неактивными интерфейсами и координатами.</p>
</dd>
<dt>Returns:</dt><dd><p>NetworkInterfacesContainer: Объект с неактивными интерфейсами и координатами.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>NetworkInterfacesContainer</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_hostname">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_hostname</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_hostname"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_hostname" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_hostname</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_hostname"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает имя хоста из команды hostname в формате JSON.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>Dict[str, str]: Словарь с ключом “hostname” и значением имени хоста.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Словарь с ключом “hostname” и значением имени хоста.</p>
</dd>
<dt>Raises:</dt><dd><dl class="simple">
<dt>RuntimeError: Если произошла ошибка при выполнении команды hostname</dt><dd><p>или обработке вывода.</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>Dict[str, str]</p>
</dd>
</dl>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>RuntimeError</strong> – Если произошла ошибка при выполнении команды hostname
или обработке вывода.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_interfaces_by_state">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_interfaces_by_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.NetworkInterface" title="models.network.NetworkInterface"><span class="pre">NetworkInterface</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_interfaces_by_state"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_interfaces_by_state" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_interfaces_by_state</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">NetworkInterface</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_interfaces_by_state"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает список интерфейсов по указанному состоянию.</p>
<dl>
<dt>Args:</dt><dd><p>state (str): Состояние интерфейса (например, “100” для активных).
initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</p>
<blockquote>
<div><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
</div></blockquote>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> (<em>str</em>) – Состояние интерфейса (например, “100” для активных).</p></li>
<li><p><strong>initial_positions</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>int</em><em>, </em><em>int</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – Словарь начальных
координат (x, y) для интерфейсов. По умолчанию None.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>List[NetworkInterface]: Список интерфейсов с указанным состоянием.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Список интерфейсов с указанным состоянием.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[NetworkInterface]</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_interfaces_container">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/network.html#models.network.NetworkInterfacesContainer" title="models.network.NetworkInterfacesContainer"><span class="pre">NetworkInterfacesContainer</span></a></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_interfaces_container" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">state</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_x</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">container_y</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">0</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">NetworkInterfacesContainer</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает объект, содержащий список интерфейсов и координаты контейнера.</p>
<dl>
<dt>Args:</dt><dd><dl class="simple">
<dt>state (Optional[str], optional): Состояние интерфейсов (например, “100”).</dt><dd><p>По умолчанию None (все интерфейсы).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>state</strong> (<em>Optional</em><em>[</em><em>str</em><em>]</em><em>, </em><em>optional</em>) – Состояние интерфейсов (например, “100”).
По умолчанию None (все интерфейсы).</p></li>
<li><p><strong>initial_positions</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>int</em><em>, </em><em>int</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – Словарь начальных
координат (x, y) для интерфейсов. По умолчанию None.</p></li>
<li><p><strong>container_x</strong> (<em>int</em><em>, </em><em>optional</em>) – Координата X контейнера. По умолчанию 0.</p></li>
<li><p><strong>container_y</strong> (<em>int</em><em>, </em><em>optional</em>) – Координата Y контейнера. По умолчанию 0.</p></li>
</ul>
</dd>
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с интерфейсами и координатами контейнера.</p>
</dd>
</dl>
<p>container_x (int, optional): Координата X контейнера. По умолчанию 0.
container_y (int, optional): Координата Y контейнера. По умолчанию 0.</p>
</dd>
<dt>Returns:</dt><dd><p>NetworkInterfacesContainer: Объект с интерфейсами и координатами контейнера.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>NetworkInterfacesContainer</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_ip_config">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ip_version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.IndividualIPConfig" title="models.network.IndividualIPConfig"><span class="pre">IndividualIPConfig</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_ip_config" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_ip_config</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ip_version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">IndividualIPConfig</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_ip_config"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает конфигурацию IP для устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>device (NetworkDeviceGeneric): Объект устройства NetworkManager.
ip_version (str): Версия IP (“4” или “6”).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>device</strong> (<em>NetworkDeviceGeneric</em>) – Объект устройства NetworkManager.</p></li>
<li><p><strong>ip_version</strong> (<em>str</em>) – Версия IP (“4” или “6”).</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>List[IndividualIPConfig]: Список конфигураций IP, включая адреса и маршруты.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Список конфигураций IP, включая адреса и маршруты.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении данных IP.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[IndividualIPConfig]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при получении данных IP.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_ip_method">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_ip_method</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ip_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_ip_method"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_ip_method" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_ip_method</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceGeneric</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ip_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_ip_method"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает метод IP (например, “auto”, “manual”) для указанного устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>device (NetworkDeviceGeneric): Объект устройства NetworkManager.
ip_type (str): Тип IP (например, “ipv4” или “ipv6”).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>device</strong> (<em>NetworkDeviceGeneric</em>) – Объект устройства NetworkManager.</p></li>
<li><p><strong>ip_type</strong> (<em>str</em>) – Тип IP (например, “ipv4” или “ipv6”).</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>str: Метод IP или “unknown” в случае ошибки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Метод IP или “unknown” в случае ошибки.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении настроек соединения.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при получении настроек соединения.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_network_interfaces">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_network_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/network.html#models.network.NetworkInterface" title="models.network.NetworkInterface"><span class="pre">NetworkInterface</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><a class="reference internal" href="../models/network.html#models.network.WiFiDevice" title="models.network.WiFiDevice"><span class="pre">WiFiDevice</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_network_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_network_interfaces" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_network_interfaces</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">NetworkInterface</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">WiFiDevice</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_network_interfaces"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает список сетевых интерфейсов.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Dict[str, Tuple[int, int]], optional): Словарь начальных</dt><dd><p>координат (x, y) для интерфейсов. По умолчанию None (используются (100, 100)).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>initial_positions</strong> (<em>Dict</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>int</em><em>, </em><em>int</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – Словарь начальных
координат (x, y) для интерфейсов. По умолчанию None (используются (100, 100)).</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Список объектов интерфейсов,</dt><dd><p>включая Wi-Fi устройства.</p>
</dd>
</dl>
</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>List[Union[NetworkInterface, WiFiDevice]]: Список объектов интерфейсов,</dt><dd><p>включая Wi-Fi устройства.</p>
</dd>
</dl>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[Union[NetworkInterface, WiFiDevice]]</p>
</dd>
</dl>
<p>Исключает интерфейсы типа LOOPBACK и неактивные состояния (state == “10”).</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_network_interfaces_container">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_network_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/network.html#models.network.NetworkInterfacesContainer" title="models.network.NetworkInterfacesContainer"><span class="pre">NetworkInterfacesContainer</span></a></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_network_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_network_interfaces_container" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_network_interfaces_container</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_positions</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">NetworkInterfacesContainer</span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_network_interfaces_container"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает контейнер с сетевыми интерфейсами и координатами контейнера.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>initial_positions (Optional[Dict[str, Tuple[int, int]]], optional):</dt><dd><p>Словарь начальных координат (x, y) для интерфейсов. По умолчанию None.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>initial_positions</strong> (<em>Optional</em><em>[</em><em>Dict</em><em>[</em><em>str</em><em>, </em><em>Tuple</em><em>[</em><em>int</em><em>, </em><em>int</em><em>]</em><em>]</em><em>]</em><em>, </em><em>optional</em>) – Словарь начальных координат (x, y) для интерфейсов. По умолчанию None.</p>
</dd>
</dl>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с интерфейсами и координатами (0, 0).</p>
</dd>
<dt>Returns:</dt><dd><p>NetworkInterfacesContainer: Объект с интерфейсами и координатами (0, 0).</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>NetworkInterfacesContainer</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.network_service.NetworkService.get_wifi_info">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_wifi_info</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">wifi_device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceWireless</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_wifi_info"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.network_service.NetworkService.get_wifi_info" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">get_wifi_info</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">wifi_device</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">sdbus_async.networkmanager.NetworkDeviceWireless</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/network_service.html#NetworkService.get_wifi_info"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает информацию о Wi-Fi устройстве.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>wifi_device (NetworkDeviceWireless): Объект Wi-Fi устройства NetworkManager.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>wifi_device</strong> (<em>NetworkDeviceWireless</em>) – Объект Wi-Fi устройства NetworkManager.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Dict[str, Optional[Union[str, int]]]: Словарь с данными Wi-Fi (SSID, BSSID,</dt><dd><p>bitrate, strength, frequency, mode), где значения могут быть None.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с данными Wi-Fi (SSID, BSSID,</dt><dd><p>bitrate, strength, frequency, mode), где значения могут быть None.</p>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при получении данных точки доступа.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Dict[str, Optional[Union[str, int]]]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при получении данных точки доступа.</p>
</dd>
</dl>
</dd></dl>
@ -559,43 +620,9 @@ ip_type (str): Тип IP (например, “ipv4” или “ipv6”).</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Network Service</a><ul>
<li><a class="reference internal" href="#services.network_service.NetworkService"><code class="docutils literal notranslate"><span class="pre">NetworkService</span></code></a><ul>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_activated_interfaces"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_activated_interfaces()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_activated_interfaces_container"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_activated_interfaces_container()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_connection_name"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_connection_name()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_deactivated_interfaces"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_deactivated_interfaces()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_deactivated_interfaces_container"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_deactivated_interfaces_container()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_hostname"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_hostname()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_interfaces_by_state"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_interfaces_by_state()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_interfaces_container"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_interfaces_container()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_ip_config"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_ip_config()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_ip_method"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_ip_method()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_network_interfaces"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_network_interfaces()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_network_interfaces_container"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_network_interfaces_container()</span></code></a></li>
<li><a class="reference internal" href="#services.network_service.NetworkService.get_wifi_info"><code class="docutils literal notranslate"><span class="pre">NetworkService.get_wifi_info()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,55 +276,69 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.settings_service">
<span id="settings-service"></span><h1>Settings Service<a class="headerlink" href="#module-services.settings_service" title="Link to this heading"></a></h1>
<section id="settings-service">
<h1>Settings Service<a class="headerlink" href="#settings-service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.settings_service.SettingsService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.settings_service.</span></span><span class="sig-name descname"><span class="pre">SettingsService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.settings_service.SettingsService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.settings_service.</span></span><span class="sig-name descname"><span class="pre">SettingsService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для управления настройками и очистки данных сети.</p>
<dl class="py method">
<dt class="sig sig-object py" id="services.settings_service.SettingsService.clear_all_data">
<span class="sig-name descname"><span class="pre">clear_all_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_all_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.settings_service.SettingsService.clear_all_data" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">clear_all_data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_all_data"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Очищает данные узлов всех подсетей и точек доступа Wi-Fi.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>bool: True, если очистка успешна.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>True, если очистка успешна.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при записи в один из файлов.</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>bool</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>Exception</strong> – Если произошла ошибка при записи в один из файлов.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.settings_service.SettingsService.clear_subnet">
<span class="sig-name descname"><span class="pre">clear_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.settings_service.SettingsService.clear_subnet" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">clear_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Очищает данные узлов подсети в указанном файле или во всех файлах.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>subnet (Optional[str]): Подсеть в формате CIDR (например, “10.1.1.0/24”).</dt><dd><p>Если None, очищает все подсети.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subnet</strong> (<em>Optional</em><em>[</em><em>str</em><em>]</em>) – Подсеть в формате CIDR (например, “10.1.1.0/24”).
Если None, очищает все подсети.</p>
</dd>
</dl>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>True, если очистка успешна.</p>
</dd>
<dt>Returns:</dt><dd><p>bool: True, если очистка успешна.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при записи в файл.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при записи в файл.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.settings_service.SettingsService.clear_wifi">
<span class="sig-name descname"><span class="pre">clear_wifi</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.settings_service.SettingsService.clear_wifi" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">clear_wifi</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/settings_service.html#SettingsService.clear_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Очищает данные точек доступа Wi-Fi в файле wifi.json.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>bool: True, если очистка успешна.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>True, если очистка успешна.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при записи в файл.</p>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>bool</p>
</dd>
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>Exception</strong> – Если произошла ошибка при записи в файл.</p>
</dd>
</dl>
</dd></dl>
@ -376,33 +390,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Settings Service</a><ul>
<li><a class="reference internal" href="#services.settings_service.SettingsService"><code class="docutils literal notranslate"><span class="pre">SettingsService</span></code></a><ul>
<li><a class="reference internal" href="#services.settings_service.SettingsService.clear_all_data"><code class="docutils literal notranslate"><span class="pre">SettingsService.clear_all_data()</span></code></a></li>
<li><a class="reference internal" href="#services.settings_service.SettingsService.clear_subnet"><code class="docutils literal notranslate"><span class="pre">SettingsService.clear_subnet()</span></code></a></li>
<li><a class="reference internal" href="#services.settings_service.SettingsService.clear_wifi"><code class="docutils literal notranslate"><span class="pre">SettingsService.clear_wifi()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,16 +276,16 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.subnet_service">
<span id="subnet-service"></span><h1>Subnet Service<a class="headerlink" href="#module-services.subnet_service" title="Link to this heading"></a></h1>
<section id="subnet-service">
<h1>Subnet Service<a class="headerlink" href="#subnet-service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.DeviceInfoCollector">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">DeviceInfoCollector</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceInfoCollector" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">DeviceInfoCollector</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для сбора информации об устройствах, включая вендоров и хостнеймы.</p>
<dl class="simple">
@ -303,38 +303,49 @@
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceInfoCollector.get_hostname">
<span class="sig-name descname"><span class="pre">get_hostname</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.get_hostname"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceInfoCollector.get_hostname" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_hostname</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.get_hostname"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает хостнейм для указанного IP-адреса.</p>
<p>Пробует сначала DNS, затем NetBIOS.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ip (str): IP-адрес устройства.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>ip</strong> (<em>str</em>) – IP-адрес устройства.</p>
</dd>
<dt>Returns:</dt><dd><p>Optional[str]: Хостнейм или None, если не удалось определить.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Хостнейм или None, если не удалось определить.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Optional[str]</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceInfoCollector.get_vendor">
<span class="sig-name descname"><span class="pre">get_vendor</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.get_vendor"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceInfoCollector.get_vendor" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_vendor</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.get_vendor"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает вендора устройства по MAC-адресу.</p>
<p>Использует кэширование для повышения производительности.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>mac</strong> (<em>str</em>) – MAC-адрес устройства.</p>
</dd>
<dt>Returns:</dt><dd><p>str: Название вендора или “Неизвестный” в случае ошибки.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Название вендора или “Неизвестный” в случае ошибки.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceInfoCollector.scan_nbtscan">
<span class="sig-name descname"><span class="pre">scan_nbtscan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.scan_nbtscan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceInfoCollector.scan_nbtscan" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">scan_nbtscan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceInfoCollector.scan_nbtscan"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сканирует подсеть с помощью nbtscan для получения хостнеймов.</p>
<p>Сохраняет результаты в кэш и логирует процесс.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subnet</strong> (<em>str</em>) – Подсеть в формате CIDR.</p>
</dd>
</dl>
</dd></dl>
@ -342,60 +353,71 @@
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.DeviceStorage">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">DeviceStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'storage/subnets'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceStorage" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">DeviceStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'storage/subnets'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для хранения и управления данными об устройствах.</p>
<dl>
<dt>Формат файла подсети:</dt><dd><p>JSON-структура вида
{</p>
<blockquote>
<div><p>“devices”: [Device, …]</p>
</div></blockquote>
<p>}</p>
</dd>
<dt>Политика очистки:</dt><dd><ul class="simple">
<li><p>Метод <cite>_clean_old_devices</cite> удаляет оффлайн-устройства, не наблюдавшиеся
более 7 дней, чтобы поддерживать актуальность списка.</p></li>
<p>Формат файла подсети:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s2">&quot;devices&quot;</span><span class="p">:</span> <span class="p">[</span><span class="n">Device</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Политика очистки:</p>
<ul class="simple">
<li><p>Метод <cite>_clean_old_devices</cite> удаляет оффлайн-устройства, не наблюдавшиеся более 7 дней,
чтобы поддерживать актуальность списка.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceStorage.get_subnet_file">
<span class="sig-name descname"><span class="pre">get_subnet_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Path</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.get_subnet_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceStorage.get_subnet_file" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_subnet_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Path</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.get_subnet_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Возвращает путь к файлу для конкретной подсети.</p>
<p>Заменяет символы ‘/’ на ‘_’ для корректного имени файла.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subnet</strong> (<em>str</em>) – Подсеть в формате CIDR.</p>
</dd>
<dt>Returns:</dt><dd><p>Path: Путь к файлу.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Путь к файлу.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Path</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceStorage.load_devices">
<span class="sig-name descname"><span class="pre">load_devices</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><a class="reference internal" href="../models/subnet.html#models.subnet.Device" title="models.subnet.Device"><span class="pre">Device</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.load_devices"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceStorage.load_devices" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">load_devices</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Device</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.load_devices"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Загружает устройства для указанной подсети.</p>
<p>Читает данные из JSON-файла и фильтрует устаревшие устройства.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subnet</strong> (<em>str</em>) – Подсеть в формате CIDR.</p>
</dd>
<dt>Returns:</dt><dd><p>Dict[str, Device]: Словарь устройств с MAC как ключом.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь устройств с MAC как ключом.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Dict[str, Device]</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.DeviceStorage.save_devices">
<span class="sig-name descname"><span class="pre">save_devices</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">devices</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/subnet.html#models.subnet.Device" title="models.subnet.Device"><span class="pre">Device</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.save_devices"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.DeviceStorage.save_devices" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">save_devices</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">devices</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Device</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#DeviceStorage.save_devices"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сохраняет устройства для указанной подсети.</p>
<p>Записывает данные в JSON-файл.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR.
devices (List[Device]): Список устройств для сохранения.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>subnet</strong> (<em>str</em>) – Подсеть в формате CIDR.</p></li>
<li><p><strong>devices</strong> (<em>List</em><em>[</em><em>Device</em><em>]</em>) – Список устройств для сохранения.</p></li>
</ul>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при сохранении.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при сохранении.</p>
</dd>
</dl>
</dd></dl>
@ -403,8 +425,8 @@ devices (List[Device]): Список устройств для сохранен
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.NetworkScanner">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">NetworkScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#NetworkScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.NetworkScanner" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">NetworkScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#NetworkScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для сканирования подсети с использованием ARP-запросов.</p>
<dl class="simple">
@ -426,17 +448,23 @@ ARP-запросы по указанной подсети и собирая от
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.NetworkScanner.scan">
<span class="sig-name descname"><span class="pre">scan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#NetworkScanner.scan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.NetworkScanner.scan" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">scan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#NetworkScanner.scan"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сканирует подсеть с использованием ARP-запросов.</p>
<p>Отправляет ARP-пакеты для обнаружения активных устройств и возвращает
список кортежей (IP, MAC).</p>
<dl class="simple">
<dt>Args:</dt><dd><p>subnet (str): Подсеть в формате CIDR (например, “10.1.1.0/24”).</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subnet</strong> (<em>str</em>) – Подсеть в формате CIDR (например, “10.1.1.0/24”).</p>
</dd>
<dt>Returns:</dt><dd><p>List[Tuple[str, str]]: Список кортежей (IP-адрес, MAC-адрес) обнаруженных устройств.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Список кортежей (IP-адрес, MAC-адрес) обнаруженных устройств.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка сканирования.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[Tuple[str, str]]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка сканирования.</p>
</dd>
</dl>
</dd></dl>
@ -444,8 +472,8 @@ ARP-запросы по указанной подсети и собирая от
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.PortScanner">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">PortScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#PortScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.PortScanner" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">PortScanner</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">interface</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#PortScanner"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для сканирования открытых портов на устройствах.</p>
<dl class="simple">
@ -460,14 +488,19 @@ ARP-запросы по указанной подсети и собирая от
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.PortScanner.scan">
<span class="sig-name descname"><span class="pre">scan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#PortScanner.scan"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.PortScanner.scan" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">scan</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ip</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#PortScanner.scan"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сканирует открытые порты на указанном IP-адресе.</p>
<p>Пока возвращает пустой список, так как функциональность не реализована.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>ip (str): IP-адрес устройства для сканирования.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>ip</strong> (<em>str</em>) – IP-адрес устройства для сканирования.</p>
</dd>
<dt>Returns:</dt><dd><p>List[str]: Список открытых портов (пока пустой).</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Список открытых портов (пока пустой).</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>List[str]</p>
</dd>
</dl>
</dd></dl>
@ -475,8 +508,8 @@ ARP-запросы по указанной подсети и собирая от
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">SubnetService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">SubnetService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для сканирования подсетей и управления устройствами.</p>
<dl class="simple">
@ -496,75 +529,104 @@ ARP-запросы по указанной подсети и собирая от
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService.add_note">
<span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.add_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService.add_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.add_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет заметку для устройства по MAC-адресу.</p>
<p>Привязывает заметку к устройству, если оно существует.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
note (str): Текст заметки.
translations (Translations): Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mac</strong> (<em>str</em>) – MAC-адрес устройства.</p></li>
<li><p><strong>note</strong> (<em>str</em>) – Текст заметки.</p></li>
<li><p><strong>translations</strong> (<em>Translations</em>) – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[Tuple[str, Dict]]]: Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Tuple[bool, Optional[Tuple[str, Dict]]]</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService.delete_note">
<span class="sig-name descname"><span class="pre">delete_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.delete_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService.delete_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">delete_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.delete_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Удаляет заметку для устройства по MAC-адресу.</p>
<p>Удаляет привязанную заметку, если она существует.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
translations (Translations): Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mac</strong> (<em>str</em>) – MAC-адрес устройства.</p></li>
<li><p><strong>translations</strong> (<em>Translations</em>) – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[Tuple[str, Dict]]]: Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Tuple[bool, Optional[Tuple[str, Dict]]]</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService.scan_subnet">
<span class="sig-name descname"><span class="pre">scan_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/subnet.html#models.subnet.SubnetScanResult" title="models.subnet.SubnetScanResult"><span class="pre">SubnetScanResult</span></a></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.scan_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService.scan_subnet" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">scan_subnet</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">subnet</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">SubnetScanResult</span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.scan_subnet"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сканирует указанную подсеть и возвращает результаты.</p>
<p>Выполняет ARP-сканирование, собирает информацию о устройствах и сохраняет данные.</p>
<dl class="simple">
<dt>Args:</dt><dd><dl class="simple">
<dt>subnet (Optional[str]): Подсеть в формате CIDR (например, “10.1.1.0/24”).</dt><dd><p>Если None или пустая строка, определяется автоматически.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>subnet</strong> (<em>Optional</em><em>[</em><em>str</em><em>]</em>) – Подсеть в формате CIDR (например, “10.1.1.0/24”).
Если None или пустая строка, определяется автоматически.</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Объект с результатами сканирования, содержащий список</dt><dd><p>устройств или сообщение об ошибке.</p>
</dd>
</dl>
</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>SubnetScanResult: Объект с результатами сканирования, содержащий список</dt><dd><p>устройств или сообщение об ошибке.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>SubnetScanResult</p>
</dd>
</dl>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка сканирования.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка сканирования.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.subnet_service.SubnetService.update_note">
<span class="sig-name descname"><span class="pre">update_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.update_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.SubnetService.update_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">update_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/subnet_service.html#SubnetService.update_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Обновляет заметку для устройства по MAC-адресу.</p>
<p>Изменяет существующую заметку, если она есть.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>mac (str): MAC-адрес устройства.
note (str): Новый текст заметки.
translations (Translations): Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>mac</strong> (<em>str</em>) – MAC-адрес устройства.</p></li>
<li><p><strong>note</strong> (<em>str</em>) – Новый текст заметки.</p></li>
<li><p><strong>translations</strong> (<em>Translations</em>) – Объект переводов для текущего языка.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Tuple[bool, Optional[Tuple[str, Dict]]]: Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Кортеж (успех, результат),</dt><dd><p>где результат содержит код ошибки/успеха и данные.</p>
</dd>
</dl>
</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Tuple[bool, Optional[Tuple[str, Dict]]]</p>
</dd>
</dl>
</dd></dl>
@ -572,15 +634,20 @@ translations (Translations): Объект переводов для текуще
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="services.subnet_service.get_subnet_service">
<span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">get_subnet_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#get_subnet_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.subnet_service.get_subnet_service" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">services.subnet_service.</span></span><span class="sig-name descname"><span class="pre">get_subnet_service</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/subnet_service.html#get_subnet_service"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Фабричная функция для создания экземпляра SubnetService.</p>
<p>Использует зависимости FastAPI для получения объекта переводов и возвращает
экземпляр SubnetService с текущей локализацией.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>translations (Translations): Объект переводов для текущего языка.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>translations</strong> (<em>Translations</em>) – Объект переводов для текущего языка.</p>
</dd>
<dt>Returns:</dt><dd><p>SubnetService: Экземпляр сервиса для работы с подсетями.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Экземпляр сервиса для работы с подсетями.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>SubnetService</p>
</dd>
</dl>
</dd></dl>
@ -630,55 +697,9 @@ translations (Translations): Объект переводов для текуще
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Subnet Service</a><ul>
<li><a class="reference internal" href="#services.subnet_service.DeviceInfoCollector"><code class="docutils literal notranslate"><span class="pre">DeviceInfoCollector</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.DeviceInfoCollector.get_hostname"><code class="docutils literal notranslate"><span class="pre">DeviceInfoCollector.get_hostname()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.DeviceInfoCollector.get_vendor"><code class="docutils literal notranslate"><span class="pre">DeviceInfoCollector.get_vendor()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.DeviceInfoCollector.scan_nbtscan"><code class="docutils literal notranslate"><span class="pre">DeviceInfoCollector.scan_nbtscan()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.DeviceStorage"><code class="docutils literal notranslate"><span class="pre">DeviceStorage</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.DeviceStorage.get_subnet_file"><code class="docutils literal notranslate"><span class="pre">DeviceStorage.get_subnet_file()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.DeviceStorage.load_devices"><code class="docutils literal notranslate"><span class="pre">DeviceStorage.load_devices()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.DeviceStorage.save_devices"><code class="docutils literal notranslate"><span class="pre">DeviceStorage.save_devices()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.NetworkScanner"><code class="docutils literal notranslate"><span class="pre">NetworkScanner</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.NetworkScanner.scan"><code class="docutils literal notranslate"><span class="pre">NetworkScanner.scan()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.PortScanner"><code class="docutils literal notranslate"><span class="pre">PortScanner</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.PortScanner.scan"><code class="docutils literal notranslate"><span class="pre">PortScanner.scan()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.SubnetService"><code class="docutils literal notranslate"><span class="pre">SubnetService</span></code></a><ul>
<li><a class="reference internal" href="#services.subnet_service.SubnetService.add_note"><code class="docutils literal notranslate"><span class="pre">SubnetService.add_note()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.SubnetService.delete_note"><code class="docutils literal notranslate"><span class="pre">SubnetService.delete_note()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.SubnetService.scan_subnet"><code class="docutils literal notranslate"><span class="pre">SubnetService.scan_subnet()</span></code></a></li>
<li><a class="reference internal" href="#services.subnet_service.SubnetService.update_note"><code class="docutils literal notranslate"><span class="pre">SubnetService.update_note()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.subnet_service.get_subnet_service"><code class="docutils literal notranslate"><span class="pre">get_subnet_service()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,16 +276,16 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.ufw_service">
<span id="ufw-service"></span><h1>UFW Service<a class="headerlink" href="#module-services.ufw_service" title="Link to this heading"></a></h1>
<section id="ufw-service">
<h1>UFW Service<a class="headerlink" href="#ufw-service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.ufw_service.UFWService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.ufw_service.</span></span><span class="sig-name descname"><span class="pre">UFWService</span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.ufw_service.</span></span><span class="sig-name descname"><span class="pre">UFWService</span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис взаимодействия с UFW (Uncomplicated Firewall).</p>
<dl class="simple">
@ -302,102 +302,145 @@
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.add_rules">
<span class="sig-name descname"><span class="pre">add_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.add_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">UFWRule</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет правила UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules: Список правил для добавления</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rules</strong> – Список правил для добавления</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Результат добавления правил</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Результат добавления правил</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.add_rules_base">
<span class="sig-name descname"><span class="pre">add_rules_base</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">direction</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_rules_base"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.add_rules_base" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_rules_base</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">UFWRule</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">direction</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">''</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_rules_base"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Базовый метод для добавления правил UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules: Список правил для добавления
direction: Направление трафика (“in” или “out”)</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>rules</strong> – Список правил для добавления</p></li>
<li><p><strong>direction</strong> – Направление трафика (“in” или “out”)</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>bool: True если все правила были успешно добавлены, False в противном случае</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>True если все правила были успешно добавлены, False в противном случае</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.add_ufw_in_rules">
<span class="sig-name descname"><span class="pre">add_ufw_in_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_ufw_in_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.add_ufw_in_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_ufw_in_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">UFWRule</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_ufw_in_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет входящие (in) правила UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules (List[UFWRule]): Список правил для добавления</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rules</strong> (<em>List</em><em>[</em><em>UFWRule</em><em>]</em>) – Список правил для добавления</p>
</dd>
<dt>Returns:</dt><dd><p>bool: True если все правила были успешно добавлены, False в противном случае</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>True если все правила были успешно добавлены, False в противном случае</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.add_ufw_out_rules">
<span class="sig-name descname"><span class="pre">add_ufw_out_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRule" title="models.ufw.UFWRule"><span class="pre">UFWRule</span></a><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_ufw_out_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.add_ufw_out_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_ufw_out_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rules</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">UFWRule</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.add_ufw_out_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет исходящие (out) правила UFW.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rules (List[UFWRule]): Список правил для добавления</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rules</strong> (<em>List</em><em>[</em><em>UFWRule</em><em>]</em>) – Список правил для добавления</p>
</dd>
<dt>Returns:</dt><dd><p>bool: True если все правила были успешно добавлены, False в противном случае</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>True если все правила были успешно добавлены, False в противном случае</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.delete_rules">
<span class="sig-name descname"><span class="pre">delete_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rule_numbers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.delete_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.delete_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">delete_rules</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">rule_numbers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.delete_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Удаляет правила UFW по их номерам.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>rule_numbers (List[int]): Список номеров правил для удаления</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>rule_numbers</strong> (<em>List</em><em>[</em><em>int</em><em>]</em>) – Список номеров правил для удаления</p>
</dd>
<dt>Returns:</dt><dd><p>dict: Результат операции удаления</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Результат операции удаления</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>dict</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.disable_ufw">
<span class="sig-name descname"><span class="pre">disable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.disable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.disable_ufw" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">disable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.disable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Выключает UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>bool: True если успешно выключен, False в противном случае</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>True если успешно выключен, False в противном случае</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.enable_ufw">
<span class="sig-name descname"><span class="pre">enable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.enable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.enable_ufw" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">enable_ufw</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.enable_ufw"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Включает UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>bool: True если успешно включен, False в противном случае</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>True если успешно включен, False в противном случае</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.get_ufw_rules">
<span class="sig-name descname"><span class="pre">get_ufw_rules</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/ufw.html#models.ufw.UFWRulesResponse" title="models.ufw.UFWRulesResponse"><span class="pre">UFWRulesResponse</span></a></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.get_ufw_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.get_ufw_rules" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_ufw_rules</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">UFWRulesResponse</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.get_ufw_rules"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает список правил UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>UFWRulesResponse: Объект, содержащий статус UFW и список правил</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Объект, содержащий статус UFW и список правил</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>UFWRulesResponse</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.ufw_service.UFWService.get_ufw_status">
<span class="sig-name descname"><span class="pre">get_ufw_status</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/ufw.html#models.ufw.UFWStatus" title="models.ufw.UFWStatus"><span class="pre">UFWStatus</span></a></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.get_ufw_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.ufw_service.UFWService.get_ufw_status" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_ufw_status</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">UFWStatus</span></span></span><a class="reference internal" href="../../_modules/services/ufw_service.html#UFWService.get_ufw_status"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет статус UFW.</p>
<dl class="simple">
<dt>Returns:</dt><dd><p>UFWStatus: Объект с информацией о статусе UFW</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>Объект с информацией о статусе UFW</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>UFWStatus</p>
</dd>
</dl>
</dd></dl>
@ -449,39 +492,9 @@ direction: Направление трафика (“in” или “out”)</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">UFW Service</a><ul>
<li><a class="reference internal" href="#services.ufw_service.UFWService"><code class="docutils literal notranslate"><span class="pre">UFWService</span></code></a><ul>
<li><a class="reference internal" href="#services.ufw_service.UFWService.add_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.add_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.add_rules_base"><code class="docutils literal notranslate"><span class="pre">UFWService.add_rules_base()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.add_ufw_in_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.add_ufw_in_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.add_ufw_out_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.add_ufw_out_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.delete_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.delete_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.disable_ufw"><code class="docutils literal notranslate"><span class="pre">UFWService.disable_ufw()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.enable_ufw"><code class="docutils literal notranslate"><span class="pre">UFWService.enable_ufw()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.get_ufw_rules"><code class="docutils literal notranslate"><span class="pre">UFWService.get_ufw_rules()</span></code></a></li>
<li><a class="reference internal" href="#services.ufw_service.UFWService.get_ufw_status"><code class="docutils literal notranslate"><span class="pre">UFWService.get_ufw_status()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,16 +276,16 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-services.wifi_service">
<span id="wifi-service"></span><h1>Wifi Service<a class="headerlink" href="#module-services.wifi_service" title="Link to this heading"></a></h1>
<section id="wifi-service">
<h1>Wifi Service<a class="headerlink" href="#wifi-service" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="services.wifi_service.WifiService">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.wifi_service.</span></span><span class="sig-name descname"><span class="pre">WifiService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.wifi_service.</span></span><span class="sig-name descname"><span class="pre">WifiService</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Сервис для сканирования текущих Wi-Fi точек доступа и заметок.</p>
<dl class="simple">
@ -303,64 +303,62 @@
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.add_note">
<span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.add_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.add_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.add_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Добавляет заметку к сети Wi-Fi по SSID.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.delete_note">
<span class="sig-name descname"><span class="pre">delete_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.delete_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.delete_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">delete_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.delete_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Удаляет заметку сети Wi-Fi по SSID.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.get_vendor">
<span class="sig-name descname"><span class="pre">get_vendor</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.get_vendor"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.get_vendor" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_vendor</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">mac</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.get_vendor"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Определяет вендора по MAC-адресу с использованием кэширования.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.scan_wifi">
<span class="sig-name descname"><span class="pre">scan_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">30</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/wifi.html#models.wifi.WifiScanResult" title="models.wifi.WifiScanResult"><span class="pre">WifiScanResult</span></a></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.scan_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.scan_wifi" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">scan_wifi</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">30</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">WifiScanResult</span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.scan_wifi"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сканирует текущие Wi-Fi точки доступа.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiService.update_note">
<span class="sig-name descname"><span class="pre">update_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.update_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiService.update_note" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">update_note</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ssid</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">note</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bool</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiService.update_note"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Обновляет заметку сети Wi-Fi по SSID.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="services.wifi_service.WifiStorage">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.wifi_service.</span></span><span class="sig-name descname"><span class="pre">WifiStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">storage_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'storage/wifi/wifi.json'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiStorage" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">services.wifi_service.</span></span><span class="sig-name descname"><span class="pre">WifiStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">storage_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'storage/wifi/wifi.json'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">translations</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Translations</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">Depends(translations_dependency)</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Класс для хранения данных о Wi-Fi сетях и их заметках по SSID.</p>
<dl>
<dt>Формат:</dt><dd><dl class="simple">
<dt>{</dt><dd><p>“networks”: [{“ssid”: str, “note”: Optional[str]}]</p>
</dd>
</dl>
<p>}</p>
</dd>
<dt>Поведение:</dt><dd><ul class="simple">
<p>Формат:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s2">&quot;networks&quot;</span><span class="p">:</span> <span class="p">[{</span><span class="s2">&quot;ssid&quot;</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="s2">&quot;note&quot;</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]}]</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Поведение:</p>
<ul class="simple">
<li><p>Создаёт директорию хранения при инициализации, ведёт логирование путей.</p></li>
<li><p>Валидация структуры при чтении, безопасная запись с Unicode и отступами.</p></li>
<li><p>Валидирует структуру при чтении и безопасно записывает JSON с Unicode и отступами.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiStorage.load_notes">
<span class="sig-name descname"><span class="pre">load_notes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage.load_notes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiStorage.load_notes" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">load_notes</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage.load_notes"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Загружает заметки по SSID из файла хранения.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="services.wifi_service.WifiStorage.save_notes">
<span class="sig-name descname"><span class="pre">save_notes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">notes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage.save_notes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#services.wifi_service.WifiStorage.save_notes" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">save_notes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">notes</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/services/wifi_service.html#WifiStorage.save_notes"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Сохраняет заметки по SSID в файл.</p>
</dd></dl>
@ -411,40 +409,9 @@
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Wifi Service</a><ul>
<li><a class="reference internal" href="#services.wifi_service.WifiService"><code class="docutils literal notranslate"><span class="pre">WifiService</span></code></a><ul>
<li><a class="reference internal" href="#services.wifi_service.WifiService.add_note"><code class="docutils literal notranslate"><span class="pre">WifiService.add_note()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiService.delete_note"><code class="docutils literal notranslate"><span class="pre">WifiService.delete_note()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiService.get_vendor"><code class="docutils literal notranslate"><span class="pre">WifiService.get_vendor()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiService.scan_wifi"><code class="docutils literal notranslate"><span class="pre">WifiService.scan_wifi()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiService.update_note"><code class="docutils literal notranslate"><span class="pre">WifiService.update_note()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#services.wifi_service.WifiStorage"><code class="docutils literal notranslate"><span class="pre">WifiStorage</span></code></a><ul>
<li><a class="reference internal" href="#services.wifi_service.WifiStorage.load_notes"><code class="docutils literal notranslate"><span class="pre">WifiStorage.load_notes()</span></code></a></li>
<li><a class="reference internal" href="#services.wifi_service.WifiStorage.save_notes"><code class="docutils literal notranslate"><span class="pre">WifiStorage.save_notes()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,86 +276,102 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-storage.json_storage">
<span id="storage-json-storage"></span><h1>storage.json_storage<a class="headerlink" href="#module-storage.json_storage" title="Link to this heading"></a></h1>
<section id="storage-json-storage">
<h1>storage.json_storage<a class="headerlink" href="#storage-json-storage" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="storage.json_storage.JsonStorage">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">storage.json_storage.</span></span><span class="sig-name descname"><span class="pre">JsonStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'/etc/gonets/users.json'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/storage/json_storage.html#JsonStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.json_storage.JsonStorage" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">storage.json_storage.</span></span><span class="sig-name descname"><span class="pre">JsonStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/storage/json_storage.html#JsonStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Хранилище пользователей в JSON-файле.</p>
<dl>
<dt>Назначение:</dt><dd><p>Обеспечивает простое файловое хранилище для учетных записей пользователей
без полноценной СУБД. Подходит для встраиваемых окружений и сценариев,
где важна минимальная зависимость от внешних сервисов.</p>
<p>Назначение:</p>
<ul class="simple">
<li><p>Обеспечивает простое файловое хранилище учетных записей без полноценной СУБД.</p></li>
<li><p>Подходит для встраиваемых окружений, где критична минимальная зависимость от внешних сервисов.</p></li>
</ul>
<p>Формат данных:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s2">&quot;users&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span><span class="s2">&quot;id&quot;</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="s2">&quot;username&quot;</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="s2">&quot;password_hash&quot;</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="s2">&quot;is_admin&quot;</span><span class="p">:</span> <span class="nb">bool</span><span class="p">},</span>
<span class="o">...</span>
<span class="p">],</span>
<span class="s2">&quot;next_id&quot;</span><span class="p">:</span> <span class="nb">int</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Безопасность:</p>
<ul class="simple">
<li><p>Пароли никогда не сохраняются в открытом виде: используется <cite>passlib.context.CryptContext</cite> со схемой <cite>bcrypt</cite>.</p></li>
<li><p>Файл создаётся с правами доступа <code class="docutils literal notranslate"><span class="pre">0o600</span></code> (чтение/запись только владельцу).</p></li>
</ul>
<p>Ограничения:</p>
<ul class="simple">
<li><p>Нет блокировок для конкурентного доступа — в многопроцессной среде требуется внешняя синхронизация.</p></li>
<li><p>Значение пути по умолчанию <code class="docutils literal notranslate"><span class="pre">/etc/gonets/users.json</span></code> предполагает наличие прав на запись и предварительную настройку окружения.</p></li>
</ul>
<dl class="py method">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">create_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">UserCreate</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">UserResponse</span></span></span><a class="reference internal" href="../../_modules/storage/json_storage.html#JsonStorage.create_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Создаёт нового пользователя с хешированием пароля.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>user</strong> (<em>UserCreate</em>) – Объект с данными нового пользователя (username, password, is_admin).</p>
</dd>
<dt>Формат данных:</dt><dd><p>JSON-структура вида:
{</p>
<blockquote>
<div><dl class="simple">
<dt>“users”: [</dt><dd><p>{“id”: int, “username”: str, “password_hash”: str, “is_admin”: bool},
…</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Объект с данными созданного пользователя (id, username, is_admin).</p>
</dd>
</dl>
<p>],
“next_id”: int</p>
</div></blockquote>
<p>}</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>UserResponse</p>
</dd>
<dt>Безопасность:</dt><dd><p>Пароли никогда не сохраняются в открытом виде. Для хеширования используется
<cite>passlib.context.CryptContext</cite> со схемой <cite>bcrypt</cite>. Файл создаётся с правами
доступа <cite>0o600</cite> (только владелец).</p>
</dd>
<dt>Ограничения и замечания:</dt><dd><ul class="simple">
<li><p>Отсутствует конкурентный доступ/блокировки файла — при использовании в
многопроцессной среде может потребоваться внешняя синхронизация.</p></li>
<li><p>Имя файла и каталог по умолчанию <cite>/etc/gonets/users.json</cite> предполагают
наличие прав на запись и предварительную подготовку окружения.</p></li>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><ul class="simple">
<li><p><strong>ValueError</strong> – Если пользователь с таким именем уже существует.</p></li>
<li><p><strong>Exception</strong> – Если произошла ошибка при записи данных.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="storage.json_storage.JsonStorage.create_user">
<span class="sig-name descname"><span class="pre">create_user</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">user</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../models/auth.html#models.auth.UserCreate" title="models.auth.UserCreate"><span class="pre">UserCreate</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="../models/auth.html#models.auth.UserResponse" title="models.auth.UserResponse"><span class="pre">UserResponse</span></a></span></span><a class="reference internal" href="../../_modules/storage/json_storage.html#JsonStorage.create_user"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.json_storage.JsonStorage.create_user" title="Link to this definition"></a></dt>
<dd><p>Создаёт нового пользователя с хешированием пароля.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>user (UserCreate): Объект с данными нового пользователя (username, password, is_admin).</p>
</dd>
<dt>Returns:</dt><dd><p>UserResponse: Объект с данными созданного пользователя (id, username, is_admin).</p>
</dd>
<dt>Raises:</dt><dd><p>ValueError: Если пользователь с таким именем уже существует.
Exception: Если произошла ошибка при записи данных.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="storage.json_storage.JsonStorage.get_user_by_username">
<span class="sig-name descname"><span class="pre">get_user_by_username</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/storage/json_storage.html#JsonStorage.get_user_by_username"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.json_storage.JsonStorage.get_user_by_username" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_user_by_username</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/storage/json_storage.html#JsonStorage.get_user_by_username"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает данные пользователя по имени.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>username (str): Имя пользователя для поиска.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>username</strong> (<em>str</em>) – Имя пользователя для поиска.</p>
</dd>
<dt>Returns:</dt><dd><p>Optional[dict]: Словарь с данными пользователя или None, если пользователь не найден.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Словарь с данными пользователя или None, если пользователь не найден.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при чтении файла.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Optional[dict]</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при чтении файла.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="storage.json_storage.JsonStorage.verify_password">
<span class="sig-name descname"><span class="pre">verify_password</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">plain_password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hashed_password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/storage/json_storage.html#JsonStorage.verify_password"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.json_storage.JsonStorage.verify_password" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">verify_password</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">plain_password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hashed_password</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="reference internal" href="../../_modules/storage/json_storage.html#JsonStorage.verify_password"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Проверяет соответствие введённого пароля хэшированному.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>plain_password (str): Введённый пользователем пароль.
hashed_password (str): Хэшированный пароль из хранилища.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>plain_password</strong> (<em>str</em>) – Введённый пользователем пароль.</p></li>
<li><p><strong>hashed_password</strong> (<em>str</em>) – Хэшированный пароль из хранилища.</p></li>
</ul>
</dd>
<dt>Returns:</dt><dd><p>bool: True, если пароль верен, False в противном случае.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>True, если пароль верен, False в противном случае.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
@ -407,33 +423,9 @@ hashed_password (str): Хэшированный пароль из хранили
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">storage.json_storage</a><ul>
<li><a class="reference internal" href="#storage.json_storage.JsonStorage"><code class="docutils literal notranslate"><span class="pre">JsonStorage</span></code></a><ul>
<li><a class="reference internal" href="#storage.json_storage.JsonStorage.create_user"><code class="docutils literal notranslate"><span class="pre">JsonStorage.create_user()</span></code></a></li>
<li><a class="reference internal" href="#storage.json_storage.JsonStorage.get_user_by_username"><code class="docutils literal notranslate"><span class="pre">JsonStorage.get_user_by_username()</span></code></a></li>
<li><a class="reference internal" href="#storage.json_storage.JsonStorage.verify_password"><code class="docutils literal notranslate"><span class="pre">JsonStorage.verify_password()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,114 +276,137 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-storage.session_storage">
<span id="storage-session-storage"></span><h1>storage.session_storage<a class="headerlink" href="#module-storage.session_storage" title="Link to this heading"></a></h1>
<section id="storage-session-storage">
<h1>storage.session_storage<a class="headerlink" href="#storage-session-storage" title="Link to this heading"></a></h1>
<dl class="py class">
<dt class="sig sig-object py" id="storage.session_storage.SessionStorage">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">storage.session_storage.</span></span><span class="sig-name descname"><span class="pre">SessionStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'/etc/gonets/sessions.json'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.session_storage.SessionStorage" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">storage.session_storage.</span></span><span class="sig-name descname"><span class="pre">SessionStorage</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Хранилище сессий пользователей в JSON-файле.</p>
<dl>
<dt>Назначение:</dt><dd><p>Лёгкое файловое хранилище для сессионных токенов, сопоставленных с
<cite>client_id</cite> (например, IP клиента). Предназначено для сред без БД и
persistent-кэшей. Обеспечивает базовые операции и авто-очистку протухших
сессий.</p>
</dd>
<dt>Формат данных:</dt><dd><dl>
<dt>{</dt><dd><dl class="simple">
<dt>“sessions”: {</dt><dd><dl class="simple">
<dt>“&lt;session_id&gt;”: {</dt><dd><p>“username”: str,
“token”: str,
“client_id”: str,
“created_at”: ISO8601 str,
“expiry”: ISO8601 str</p>
<p>Назначение:</p>
<ul class="simple">
<li><p>Лёгкое файловое хранилище сессионных токенов, сопоставленных с <code class="docutils literal notranslate"><span class="pre">client_id</span></code> (например, IP клиента).</p></li>
<li><p>Предназначено для сред без БД и persistent-кэшей; обеспечивает простые операции и автоочистку истёкших сессий.</p></li>
</ul>
<p>Формат данных:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s2">&quot;sessions&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;&lt;session_id&gt;&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="s2">&quot;username&quot;</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="s2">&quot;token&quot;</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="s2">&quot;client_id&quot;</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="s2">&quot;created_at&quot;</span><span class="p">:</span> <span class="n">ISO8601</span> <span class="nb">str</span><span class="p">,</span>
<span class="s2">&quot;expiry&quot;</span><span class="p">:</span> <span class="n">ISO8601</span> <span class="nb">str</span>
<span class="p">},</span>
<span class="o">...</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Политика TTL:</p>
<ul class="simple">
<li><p>Каждая сессия действует 30 минут; метод <code class="docutils literal notranslate"><span class="pre">clean_expired_sessions</span></code> удаляет записи с истёкшим сроком.</p></li>
</ul>
<p>Ограничения:</p>
<ul class="simple">
<li><p>Отсутствуют файловые блокировки — в многопроцессной среде возможны гонки.</p></li>
<li><p>Путь по умолчанию <code class="docutils literal notranslate"><span class="pre">/etc/gonets/sessions.json</span></code> требует прав на запись.</p></li>
</ul>
<dl class="py method">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">clean_expired_sessions</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage.clean_expired_sessions"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Удаляет все истекшие сессии из хранилища.</p>
<dl class="field-list simple">
<dt class="field-odd">Raises<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>Exception</strong> – Если произошла ошибка при чтении или записи данных.</p>
</dd>
</dl>
</dd>
</dl>
<p>}</p>
</dd>
</dl>
<p>}</p>
</dd>
<dt>Политика TTL:</dt><dd><p>Каждая сессия действует 30 минут. При создании/чтении/удалении вызывается
<cite>clean_expired_sessions()</cite> для удаления протухших записей.</p>
</dd>
<dt>Ограничения:</dt><dd><ul class="simple">
<li><p>Нет файловых блокировок: в многопроцессных конфигурациях возможны гонки.</p></li>
<li><p>Размещение по умолчанию <cite>/etc/gonets/sessions.json</cite> требует прав на запись.</p></li>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Проверяет срок действия каждой сессии и удаляет те, что истекли,
записывая обновлённые данные.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">create_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage.create_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Создаёт новую сессию и возвращает уникальный session_id.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>username</strong> (<em>str</em>) – Имя пользователя, для которого создаётся сессия.</p></li>
<li><p><strong>token</strong> (<em>str</em>) – Токен аутентификации.</p></li>
<li><p><strong>client_id</strong> (<em>str</em>) – Идентификатор клиента.</p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="storage.session_storage.SessionStorage.clean_expired_sessions">
<span class="sig-name descname"><span class="pre">clean_expired_sessions</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage.clean_expired_sessions"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.session_storage.SessionStorage.clean_expired_sessions" title="Link to this definition"></a></dt>
<dd><p>Удаляет все истекшие сессии из хранилища.</p>
<dl class="simple">
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при чтении или записи данных.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Уникальный идентификатор сессии (session_id).</p>
</dd>
<dt>Note:</dt><dd><p>Проверяет срок действия каждой сессии и удаляет те, что истекли,
записывая обновлённые данные.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>str</p>
</dd>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при создании или записи сессии.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="storage.session_storage.SessionStorage.create_session">
<span class="sig-name descname"><span class="pre">create_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">username</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">token</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage.create_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.session_storage.SessionStorage.create_session" title="Link to this definition"></a></dt>
<dd><p>Создаёт новую сессию и возвращает уникальный session_id.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>username (str): Имя пользователя, для которого создаётся сессия.
token (str): Токен аутентификации.
client_id (str): Идентификатор клиента.</p>
</dd>
<dt>Returns:</dt><dd><p>str: Уникальный идентификатор сессии (session_id).</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при создании или записи сессии.</p>
</dd>
<dt>Note:</dt><dd><p>Удаляет истекшие сессии перед созданием новой и устанавливает срок
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Удаляет истекшие сессии перед созданием новой и устанавливает срок
действия 30 минут.</p>
</dd>
</dl>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="storage.session_storage.SessionStorage.delete_session">
<span class="sig-name descname"><span class="pre">delete_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">session_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage.delete_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.session_storage.SessionStorage.delete_session" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">delete_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">session_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage.delete_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Удаляет сессию по указанному session_id.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>session_id (str): Уникальный идентификатор сессии.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>session_id</strong> (<em>str</em>) – Уникальный идентификатор сессии.</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при чтении или записи данных.</p>
</dd>
<dt>Note:</dt><dd><p>Очищает истекшие сессии перед удалением.</p>
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при чтении или записи данных.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Очищает истекшие сессии перед удалением.</p>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="storage.session_storage.SessionStorage.get_latest_session">
<span class="sig-name descname"><span class="pre">get_latest_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage.get_latest_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#storage.session_storage.SessionStorage.get_latest_session" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-name descname"><span class="pre">get_latest_session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">Dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></span><a class="reference internal" href="../../_modules/storage/session_storage.html#SessionStorage.get_latest_session"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Получает последнюю активную сессию для указанного client_id.</p>
<dl class="simple">
<dt>Args:</dt><dd><p>client_id (str): Идентификатор клиента.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>client_id</strong> (<em>str</em>) – Идентификатор клиента.</p>
</dd>
<dt>Returns:</dt><dd><dl class="simple">
<dt>Optional[Dict]: Словарь с данными последней активной сессии, включая</dt><dd><p>“session_id”, или None, если сессия не найдена.</p>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p><dl class="simple">
<dt>Словарь с данными последней активной сессии, включая</dt><dd><p>”session_id”, или None, если сессия не найдена.</p>
</dd>
</dl>
</p>
</dd>
<dt>Raises:</dt><dd><p>Exception: Если произошла ошибка при чтении или обработке данных.</p>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Optional[Dict]</p>
</dd>
<dt>Note:</dt><dd><p>Очищает истекшие сессии перед поиском и возвращает сессию с самым
<dt class="field-even">Raises<span class="colon">:</span></dt>
<dd class="field-even"><p><strong>Exception</strong> – Если произошла ошибка при чтении или обработке данных.</p>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Очищает истекшие сессии перед поиском и возвращает сессию с самым
поздним временем создания.</p>
</dd>
</dl>
</div>
</dd></dl>
</dd></dl>
@ -433,34 +456,9 @@ client_id (str): Идентификатор клиента.</p>
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">storage.session_storage</a><ul>
<li><a class="reference internal" href="#storage.session_storage.SessionStorage"><code class="docutils literal notranslate"><span class="pre">SessionStorage</span></code></a><ul>
<li><a class="reference internal" href="#storage.session_storage.SessionStorage.clean_expired_sessions"><code class="docutils literal notranslate"><span class="pre">SessionStorage.clean_expired_sessions()</span></code></a></li>
<li><a class="reference internal" href="#storage.session_storage.SessionStorage.create_session"><code class="docutils literal notranslate"><span class="pre">SessionStorage.create_session()</span></code></a></li>
<li><a class="reference internal" href="#storage.session_storage.SessionStorage.delete_session"><code class="docutils literal notranslate"><span class="pre">SessionStorage.delete_session()</span></code></a></li>
<li><a class="reference internal" href="#storage.session_storage.SessionStorage.get_latest_session"><code class="docutils literal notranslate"><span class="pre">SessionStorage.get_latest_session()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

View file

@ -172,7 +172,7 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<label class="toc-overlay-icon toc-header-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
@ -276,13 +276,13 @@
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<label class="toc-overlay-icon toc-content-icon no-toc" for="__toc">
<span class="icon"><svg><use href="#svg-toc"></use></svg></span>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="module-utils.i18n">
<span id="utils-i18n"></span><h1>utils.i18n<a class="headerlink" href="#module-utils.i18n" title="Link to this heading"></a></h1>
<section id="utils-i18n">
<h1>utils.i18n<a class="headerlink" href="#utils-i18n" title="Link to this heading"></a></h1>
<p>Утилиты локализации и зависимости переводов для FastAPI.</p>
<dl class="simple">
<dt>Содержимое модуля:</dt><dd><ul class="simple">
@ -304,8 +304,8 @@ query-параметра <cite>locale</cite>, cookie <cite>locale</cite> или
</dd>
</dl>
<dl class="py function">
<dt class="sig sig-object py" id="utils.i18n.get_translations">
<span class="sig-prename descclassname"><span class="pre">utils.i18n.</span></span><span class="sig-name descname"><span class="pre">get_translations</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">callable</span></span></span><a class="reference internal" href="../../_modules/utils/i18n.html#get_translations"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#utils.i18n.get_translations" title="Link to this definition"></a></dt>
<dt class="sig sig-object py">
<span class="sig-prename descclassname"><span class="pre">utils.i18n.</span></span><span class="sig-name descname"><span class="pre">get_translations</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">callable</span></span></span><a class="reference internal" href="../../_modules/utils/i18n.html#get_translations"><span class="viewcode-link"><span class="pre">[source]</span></span></a></dt>
<dd><p>Создаёт зависимость для загрузки переводов на основе заголовка Accept-Language
или параметра запроса ‘locale’. По умолчанию используется русский язык.</p>
</dd></dl>
@ -347,28 +347,9 @@ query-параметра <cite>locale</cite>, cookie <cite>locale</cite> или
</footer>
</div>
<aside class="toc-drawer">
<aside class="toc-drawer no-toc">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">utils.i18n</a><ul>
<li><a class="reference internal" href="#utils.i18n.get_translations"><code class="docutils literal notranslate"><span class="pre">get_translations()</span></code></a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>

File diff suppressed because it is too large Load diff

View file

@ -22,7 +22,7 @@
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #703737;
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}

Binary file not shown.

File diff suppressed because one or more lines are too long