Repair docs (html, md). Update docstrings
This commit is contained in:
parent
e264750187
commit
6a4ad48577
125 changed files with 3706 additions and 4913 deletions
|
|
@ -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">"""Модель запроса на удаление UFW правил.</span>
|
||||
|
||||
<span class="sd"> Атрибуты:</span>
|
||||
|
||||
<span class="sd"> - ``numbers`` (List[int]): Список номеров правил для удаления.</span>
|
||||
<span class="sd"> """</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">"Список номеров правил для удаления"</span><span class="p">)</span></div>
|
||||
|
||||
|
|
|
|||
40
SRV/docs/_build/html/_modules/models/auth.html
vendored
40
SRV/docs/_build/html/_modules/models/auth.html
vendored
|
|
@ -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">"""</span>
|
||||
<span class="sd"> Модель созданного пользователя</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель созданного пользователя.</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"> """</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">"""</span>
|
||||
<span class="sd"> Модель авторизации пользователя</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель авторизации пользователя.</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"> """</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">"""</span>
|
||||
<span class="sd"> Модель проверки наличия пользователя</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель, используемая при возврате сведений о пользователе.</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"> """</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">"""</span>
|
||||
<span class="sd"> Токен пользователя</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель 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"> """</span>
|
||||
|
||||
<span class="n">access_token</span><span class="p">:</span> <span class="nb">str</span>
|
||||
|
|
|
|||
122
SRV/docs/_build/html/_modules/models/network.html
vendored
122
SRV/docs/_build/html/_modules/models/network.html
vendored
|
|
@ -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">"""</span>
|
||||
<span class="sd"> Модель маршрута IPv4</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель маршрута 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"> """</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">"""</span>
|
||||
<span class="sd"> Модель маршрута IPv6</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель маршрута 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"> """</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">"""</span>
|
||||
<span class="sd"> Модель индивидуальной конфигурации IP-адреса</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель индивидуальной конфигурации 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"> """</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">"""</span>
|
||||
<span class="sd"> Модель конфигурации IP (IPv4/IPv6)</span>
|
||||
<span class="w"> </span><span class="sd">"""Групповая конфигурация 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"> """</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">"""</span>
|
||||
<span class="sd"> Модель базового сетевого интерфейса</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель базового сетевого интерфейса.</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"> """</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">"""</span>
|
||||
<span class="sd"> Модель Wi-Fi устройства (наследуется от NetworkInterface)</span>
|
||||
<span class="w"> </span><span class="sd">"""Расширенная модель 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"> """</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">"""</span>
|
||||
<span class="sd"> Контейнер для группы сетевых интерфейсов с координатами</span>
|
||||
<span class="w"> </span><span class="sd">"""Контейнер для набора сетевых интерфейсов.</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"> """</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">"""</span>
|
||||
<span class="sd"> Модель активированных интерфейсов</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель узла активных интерфейсов.</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"> """</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">"""</span>
|
||||
<span class="sd"> Модель отключенных интерфейсов</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель узла отключённых интерфейсов.</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"> """</span>
|
||||
|
||||
<span class="nb">id</span><span class="p">:</span> <span class="nb">int</span>
|
||||
|
|
|
|||
|
|
@ -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">"""</span>
|
||||
<span class="sd"> Модель добавления заметки к просканированному устройству</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель запроса на добавление заметки к устройству.</span>
|
||||
|
||||
<span class="sd"> Атрибуты:</span>
|
||||
<span class="sd"> note (str): Заметка устройства</span>
|
||||
|
||||
<span class="sd"> - ``note`` (str): Текст заметки.</span>
|
||||
<span class="sd"> """</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">"""</span>
|
||||
<span class="sd"> Модель для подключения к точке доступа Wi-Fi</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель запроса на подключение к 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"> """</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">"""</span>
|
||||
<span class="sd"> Модель для отключения от точки доступа Wi-Fi</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель запроса на отключение от Wi-Fi.</span>
|
||||
|
||||
<span class="sd"> Атрибуты:</span>
|
||||
<span class="sd"> ssid (str): Название точки доступа Wi-Fi</span>
|
||||
|
||||
<span class="sd"> - ``ssid`` (str): Название точки доступа.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">ssid</span><span class="p">:</span> <span class="nb">str</span></div>
|
||||
|
||||
|
|
|
|||
34
SRV/docs/_build/html/_modules/models/subnet.html
vendored
34
SRV/docs/_build/html/_modules/models/subnet.html
vendored
|
|
@ -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">"""</span>
|
||||
<span class="sd"> Сканируемое устройство в подсети</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель устройства, обнаруженного в подсети.</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"> """</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">"""</span>
|
||||
<span class="sd"> Результат сканирования устройств в подсети</span>
|
||||
<span class="w"> </span><span class="sd">"""Результат сканирования подсети.</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"> """</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">"""</span>
|
||||
<span class="sd"> Параметры для сканирования подсети</span>
|
||||
<span class="w"> </span><span class="sd">"""Параметры запроса на сканирование подсети.</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"> """</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>
|
||||
|
||||
|
|
|
|||
28
SRV/docs/_build/html/_modules/models/wifi.html
vendored
28
SRV/docs/_build/html/_modules/models/wifi.html
vendored
|
|
@ -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">"""</span>
|
||||
<span class="sd"> Модель точки доступа Wi-Fi</span>
|
||||
<span class="w"> </span><span class="sd">"""Модель 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"> """</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">"""</span>
|
||||
<span class="sd"> Результат сканирования Wi-Fi</span>
|
||||
<span class="w"> </span><span class="sd">"""Результат сканирования 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"> """</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>
|
||||
|
|
|
|||
|
|
@ -293,14 +293,26 @@
|
|||
|
||||
<span class="sd">- Для отправки ARP-кадров могут потребоваться повышенные привилегии или capability на сырой сокет.</span>
|
||||
<span class="sd">"""</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">"SPHINX_BUILD"</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">"scapy is unavailable during documentation build"</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"> """</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">"default"</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">"</span><span class="si">{</span><span class="n">ip</span><span class="p">[</span><span class="s1">'addr'</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">'netmask'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</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">"addr"</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">"default"</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">"Default gateway not found"</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">"</span><span class="si">{</span><span class="n">ip</span><span class="p">[</span><span class="s1">'addr'</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">'netmask'</span><span class="p">]</span><span class="si">}</span><span class="s2">"</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">"addr"</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">"SPHINX_BUILD"</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">"eth0"</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">"00:00:00:00:00:00"</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">"NetworkScanner falling back to mocked interface during documentation build: </span><span class="si">%s</span><span class="s2">"</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>
|
||||
|
|
|
|||
|
|
@ -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">"GONETS_CONFIG_PATH"</span><span class="p">,</span> <span class="s2">"/etc/gonets/config.ini"</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">"/etc/gonets/config.ini"</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">"Configuration file </span><span class="si">{</span><span class="n">config_path</span><span class="si">}</span><span class="s2"> not found"</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">"JWT"</span><span class="p">][</span><span class="s2">"secret_key"</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">"JWT"</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">"JWT"</span><span class="p">][</span><span class="s2">"secret_key"</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">"SPHINX_BUILD"</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">"JWT secret not found; using dummy value for documentation build"</span><span class="p">)</span>
|
||||
<span class="n">SECRET_KEY</span> <span class="o">=</span> <span class="s2">"sphinx-placeholder-secret"</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">"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"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">ALGORITHM</span> <span class="o">=</span> <span class="s2">"HS256"</span>
|
||||
<span class="n">ACCESS_TOKEN_EXPIRE_MINUTES</span> <span class="o">=</span> <span class="mi">30</span>
|
||||
|
|
|
|||
|
|
@ -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">"""Класс для хранения данных о Wi-Fi сетях и их заметках по SSID.</span>
|
||||
|
||||
<span class="sd"> Формат:</span>
|
||||
<span class="sd"> Формат::</span>
|
||||
|
||||
<span class="sd"> {</span>
|
||||
<span class="sd"> "networks": [{"ssid": str, "note": 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"> """</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">"storage/wifi/wifi.json"</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>
|
||||
|
|
|
|||
|
|
@ -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">"GONETS_DATA_DIR"</span><span class="p">,</span> <span class="s2">"/etc/gonets"</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">"GONETS_USERS_PATH"</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">"users.json"</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">"""Хранилище пользователей в 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"> "users": [</span>
|
||||
<span class="sd"> {"id": int, "username": str, "password_hash": str, "is_admin": 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"> """</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">"/etc/gonets/users.json"</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">"""Инициализирует хранилище пользователей.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
|
|
@ -327,7 +331,7 @@
|
|||
<span class="sd"> Создаёт объект CryptContext для хеширования паролей и проверяет/создаёт</span>
|
||||
<span class="sd"> файл, если он отсутствует.</span>
|
||||
<span class="sd"> """</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">"bcrypt"</span><span class="p">],</span> <span class="n">deprecated</span><span class="o">=</span><span class="s2">"auto"</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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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">"GONETS_DATA_DIR"</span><span class="p">,</span> <span class="s2">"/etc/gonets"</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">"GONETS_SESSIONS_PATH"</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">"sessions.json"</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">"""Хранилище сессий пользователей в 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"> "sessions": {</span>
|
||||
<span class="sd"> "<session_id>": {</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"> """</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">"/etc/gonets/sessions.json"</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">"""Инициализирует хранилище сессий.</span>
|
||||
|
||||
<span class="sd"> Args:</span>
|
||||
|
|
@ -328,7 +334,7 @@
|
|||
|
||||
<span class="sd"> Создаёт файл и директории, если они отсутствуют, с правами доступа 600.</span>
|
||||
<span class="sd"> """</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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue