diff --git a/SRV/api/v1/ufw.py b/SRV/api/v1/ufw.py
index a1be1ce..06176af 100644
--- a/SRV/api/v1/ufw.py
+++ b/SRV/api/v1/ufw.py
@@ -9,6 +9,12 @@ router = APIRouter()
class RuleNumbers(BaseModel):
+ """Модель запроса на удаление UFW правил.
+
+ Атрибуты:
+
+ - ``numbers`` (List[int]): Список номеров правил для удаления.
+ """
numbers: List[int] = Field(
..., description="Список номеров правил для удаления")
diff --git a/SRV/config/init_config.py b/SRV/config/init_config.py
index 2606e08..647c7d2 100644
--- a/SRV/config/init_config.py
+++ b/SRV/config/init_config.py
@@ -8,17 +8,17 @@ logger = logging.getLogger(__name__)
def init_config():
-"""
-Инициализация конфигурации приложения (JWT SECRET_KEY).
+ """
+ Инициализация конфигурации приложения (JWT SECRET_KEY).
-Назначение:
-- Создаёт файл `/etc/gonets/config.ini` с секцией `[JWT]` и случайным
- `secret_key`, если он отсутствует. Устанавливает права `0o600`.
+ Назначение:
+ - Создаёт файл `/etc/gonets/config.ini` с секцией `[JWT]` и случайным
+ `secret_key`, если он отсутствует. Устанавливает права `0o600`.
-Замечания:
-- Функция предназначена для однократного запуска (в инсталляторе/скрипте
- подготовки окружения) и безопасно пропускает работу, если файл уже существует.
-"""
+ Замечания:
+ - Функция предназначена для однократного запуска (в инсталляторе/скрипте
+ подготовки окружения) и безопасно пропускает работу, если файл уже существует.
+ """
"""Создаёт конфигурационный файл с SECRET_KEY."""
config_path = "/etc/gonets/config.ini"
config_dir = os.path.dirname(config_path)
diff --git a/SRV/docs/_build/.sphinx_tmp/config.ini b/SRV/docs/_build/.sphinx_tmp/config.ini
new file mode 100644
index 0000000..1a159a0
--- /dev/null
+++ b/SRV/docs/_build/.sphinx_tmp/config.ini
@@ -0,0 +1,2 @@
+[JWT]
+secret_key = sphinx-docs-secret
diff --git a/SRV/docs/_build/.sphinx_tmp/sessions.json b/SRV/docs/_build/.sphinx_tmp/sessions.json
new file mode 100644
index 0000000..c00ff1a
--- /dev/null
+++ b/SRV/docs/_build/.sphinx_tmp/sessions.json
@@ -0,0 +1 @@
+{"sessions": {}}
\ No newline at end of file
diff --git a/SRV/docs/_build/.sphinx_tmp/users.json b/SRV/docs/_build/.sphinx_tmp/users.json
new file mode 100644
index 0000000..a045601
--- /dev/null
+++ b/SRV/docs/_build/.sphinx_tmp/users.json
@@ -0,0 +1 @@
+{"users": [], "next_id": 1}
\ No newline at end of file
diff --git a/SRV/docs/_build/html/.doctrees/api/config/cors.doctree b/SRV/docs/_build/html/.doctrees/api/config/cors.doctree
index cd76102..adbc8a8 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/config/cors.doctree and b/SRV/docs/_build/html/.doctrees/api/config/cors.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/config/ports.doctree b/SRV/docs/_build/html/.doctrees/api/config/ports.doctree
index f366042..2c9ca03 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/config/ports.doctree and b/SRV/docs/_build/html/.doctrees/api/config/ports.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/core/cli_executor.doctree b/SRV/docs/_build/html/.doctrees/api/core/cli_executor.doctree
index 78a1b56..63fadc9 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/core/cli_executor.doctree and b/SRV/docs/_build/html/.doctrees/api/core/cli_executor.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/endpoints/auth.doctree b/SRV/docs/_build/html/.doctrees/api/endpoints/auth.doctree
index 2acf773..058369f 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/endpoints/auth.doctree and b/SRV/docs/_build/html/.doctrees/api/endpoints/auth.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/endpoints/ip.doctree b/SRV/docs/_build/html/.doctrees/api/endpoints/ip.doctree
index 3114f7f..eb55312 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/endpoints/ip.doctree and b/SRV/docs/_build/html/.doctrees/api/endpoints/ip.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/endpoints/network.doctree b/SRV/docs/_build/html/.doctrees/api/endpoints/network.doctree
index 447259c..b0b711d 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/endpoints/network.doctree and b/SRV/docs/_build/html/.doctrees/api/endpoints/network.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/endpoints/settings.doctree b/SRV/docs/_build/html/.doctrees/api/endpoints/settings.doctree
index 5e9f187..568530a 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/endpoints/settings.doctree and b/SRV/docs/_build/html/.doctrees/api/endpoints/settings.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/endpoints/subnet.doctree b/SRV/docs/_build/html/.doctrees/api/endpoints/subnet.doctree
index 8b7b3ff..5de4fd5 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/endpoints/subnet.doctree and b/SRV/docs/_build/html/.doctrees/api/endpoints/subnet.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/endpoints/ufw.doctree b/SRV/docs/_build/html/.doctrees/api/endpoints/ufw.doctree
index 04cbc45..72e0601 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/endpoints/ufw.doctree and b/SRV/docs/_build/html/.doctrees/api/endpoints/ufw.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/endpoints/websocket.doctree b/SRV/docs/_build/html/.doctrees/api/endpoints/websocket.doctree
index dc7f44b..a9e651a 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/endpoints/websocket.doctree and b/SRV/docs/_build/html/.doctrees/api/endpoints/websocket.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/models/auth.doctree b/SRV/docs/_build/html/.doctrees/api/models/auth.doctree
index 25009fe..95449bf 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/models/auth.doctree and b/SRV/docs/_build/html/.doctrees/api/models/auth.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/models/network.doctree b/SRV/docs/_build/html/.doctrees/api/models/network.doctree
index 61a6b0b..68d0891 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/models/network.doctree and b/SRV/docs/_build/html/.doctrees/api/models/network.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/models/request.doctree b/SRV/docs/_build/html/.doctrees/api/models/request.doctree
index adfd588..b554977 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/models/request.doctree and b/SRV/docs/_build/html/.doctrees/api/models/request.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/models/subnet.doctree b/SRV/docs/_build/html/.doctrees/api/models/subnet.doctree
index 73f5f23..ef397d2 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/models/subnet.doctree and b/SRV/docs/_build/html/.doctrees/api/models/subnet.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/models/ufw.doctree b/SRV/docs/_build/html/.doctrees/api/models/ufw.doctree
index 922be77..ce999f4 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/models/ufw.doctree and b/SRV/docs/_build/html/.doctrees/api/models/ufw.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/models/wifi.doctree b/SRV/docs/_build/html/.doctrees/api/models/wifi.doctree
index 5452039..4fcaf7e 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/models/wifi.doctree and b/SRV/docs/_build/html/.doctrees/api/models/wifi.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services.doctree b/SRV/docs/_build/html/.doctrees/api/services.doctree
index d244ffd..05fe385 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services.doctree and b/SRV/docs/_build/html/.doctrees/api/services.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/arp_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/arp_service.doctree
index 18da1f5..423411b 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/arp_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/arp_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/auth_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/auth_service.doctree
index 422f7a2..3d69920 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/auth_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/auth_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/connect_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/connect_service.doctree
index 683552c..9102b38 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/connect_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/connect_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/firewalld_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/firewalld_service.doctree
index 1555a24..772c341 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/firewalld_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/firewalld_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/ip_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/ip_service.doctree
index 1f02980..84882fe 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/ip_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/ip_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/network_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/network_service.doctree
index f1d5b3c..b3d4bfd 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/network_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/network_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/settings_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/settings_service.doctree
index 231678f..e71df78 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/settings_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/settings_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/subnet_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/subnet_service.doctree
index 5dcb82b..66a0b81 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/subnet_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/subnet_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/ufw_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/ufw_service.doctree
index 38523e8..eff61ba 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/ufw_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/ufw_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/services/wifi_service.doctree b/SRV/docs/_build/html/.doctrees/api/services/wifi_service.doctree
index 76e125e..f3dacae 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/services/wifi_service.doctree and b/SRV/docs/_build/html/.doctrees/api/services/wifi_service.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/storage/json_storage.doctree b/SRV/docs/_build/html/.doctrees/api/storage/json_storage.doctree
index b06a716..9155e6d 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/storage/json_storage.doctree and b/SRV/docs/_build/html/.doctrees/api/storage/json_storage.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/storage/session_storage.doctree b/SRV/docs/_build/html/.doctrees/api/storage/session_storage.doctree
index 299c80b..811b851 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/storage/session_storage.doctree and b/SRV/docs/_build/html/.doctrees/api/storage/session_storage.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/api/utils/i18n.doctree b/SRV/docs/_build/html/.doctrees/api/utils/i18n.doctree
index 78bae8c..4960a5b 100644
Binary files a/SRV/docs/_build/html/.doctrees/api/utils/i18n.doctree and b/SRV/docs/_build/html/.doctrees/api/utils/i18n.doctree differ
diff --git a/SRV/docs/_build/html/.doctrees/environment.pickle b/SRV/docs/_build/html/.doctrees/environment.pickle
index 592e9fc..8a91c31 100644
Binary files a/SRV/docs/_build/html/.doctrees/environment.pickle and b/SRV/docs/_build/html/.doctrees/environment.pickle differ
diff --git a/SRV/docs/_build/html/.doctrees/index.doctree b/SRV/docs/_build/html/.doctrees/index.doctree
index 82be9c3..f79457a 100644
Binary files a/SRV/docs/_build/html/.doctrees/index.doctree and b/SRV/docs/_build/html/.doctrees/index.doctree differ
diff --git a/SRV/docs/_build/html/_modules/api/v1/ufw.html b/SRV/docs/_build/html/_modules/api/v1/ufw.html
index 71382f2..edb6aa6 100644
--- a/SRV/docs/_build/html/_modules/api/v1/ufw.html
+++ b/SRV/docs/_build/html/_modules/api/v1/ufw.html
@@ -288,6 +288,12 @@
[docs]classRuleNumbers(BaseModel):
+"""Модель запроса на удаление UFW правил.
+
+ Атрибуты:
+
+ - ``numbers`` (List[int]): Список номеров правил для удаления.
+ """numbers:List[int]=Field(...,description="Список номеров правил для удаления")
[docs]classUserResponse(BaseModel):
-"""
- Модель проверки наличия пользователя
+"""Модель, используемая при возврате сведений о пользователе. Атрибуты:
- id (int): Идентификатор
- username (str): Имя пользователя
- is_admin (bool): Административный доступ
+
+ - ``id`` (int): Идентификатор пользователя.
+ - ``username`` (str): Имя пользователя.
+ - ``is_admin`` (bool): Флаг административного доступа. """id:int
@@ -334,14 +334,14 @@
[docs]classToken(BaseModel):
-"""
- Токен пользователя
+"""Модель JWT-токена. Атрибуты:
- access_token (str): Токен пользователя (захэширован)
- token_type (str): Тип токена
- session_id (Optional[str]): Идентификатор сессии
- user (Optional[UserResponse]): Пользователь на основе проверки наличия пользователя
+
+ - ``access_token`` (str): Значение токена (в формате JWT).
+ - ``token_type`` (str): Тип токена (обычно ``bearer``).
+ - ``session_id`` (Optional[str]): Идентификатор сессии.
+ - ``user`` (Optional[UserResponse]): Данные пользователя, если включены в ответ. """access_token:str
diff --git a/SRV/docs/_build/html/_modules/models/network.html b/SRV/docs/_build/html/_modules/models/network.html
index 7ad1813..58d8e9e 100644
--- a/SRV/docs/_build/html/_modules/models/network.html
+++ b/SRV/docs/_build/html/_modules/models/network.html
@@ -282,14 +282,14 @@
[docs]classIPv4Route(BaseModel):
-"""
- Модель маршрута IPv4
+"""Модель маршрута IPv4. Атрибуты:
- destination (str): IP-адрес назначения
- prefix (int): Префикс подсети в формате CIDR
- next_hop (str): Адрес следующего узла (маршрутизатор)
- metric (int): Метрика маршрута
+
+ - ``destination`` (str): IP-адрес назначения.
+ - ``prefix`` (int): Префикс подсети в формате CIDR.
+ - ``next_hop`` (str): Адрес следующего узла (маршрутизатор).
+ - ``metric`` (int): Метрика маршрута. """destination:str
@@ -302,14 +302,14 @@
[docs]classIPv6Route(BaseModel):
-"""
- Модель маршрута IPv6
+"""Модель маршрута IPv6. Атрибуты:
- destination (str): IP-адрес назначения
- prefix (int): Префикс подсети (CIDR)
- next_hop (str): Адрес следующего узла (маршрутизатор)
- metric (int): Метрика маршрута
+
+ - ``destination`` (str): IP-адрес назначения.
+ - ``prefix`` (int): Префикс подсети в формате CIDR.
+ - ``next_hop`` (str): Адрес следующего узла.
+ - ``metric`` (int): Метрика маршрута. """destination:str
@@ -322,15 +322,15 @@
[docs]classIndividualIPConfig(BaseModel):
-"""
- Модель индивидуальной конфигурации IP-адреса
+"""Модель индивидуальной конфигурации IP-адреса. Атрибуты:
- address (str): IP-адрес интерфейса
- routes (List[Union[IPv4Route, IPv6Route]]): Список маршрутов (IPv4/IPv6)
- method (Optional[str]): Метод назначения IP
- gateway (str): Основной шлюз по умолчанию
- dns (List[str]): Список DNS-серверов
+
+ - ``address`` (str): IP-адрес интерфейса.
+ - ``routes`` (List[Union[IPv4Route, IPv6Route]]): Список маршрутов.
+ - ``method`` (Optional[str]): Метод назначения IP.
+ - ``gateway`` (str): Шлюз по умолчанию.
+ - ``dns`` (List[str]): Список DNS-серверов. """address:str
@@ -344,11 +344,11 @@
[docs]classIPConfig(BaseModel):
-"""
- Модель конфигурации IP (IPv4/IPv6)
+"""Групповая конфигурация IP-адресов. Атрибуты:
- configurations (List[IndividualIPConfig]): Список индивидуальных IP-конфигураций
+
+ - ``configurations`` (List[IndividualIPConfig]): Индивидуальные IP-конфигурации. """configurations:List[IndividualIPConfig]
@@ -358,20 +358,20 @@
[docs]classNetworkInterface(BaseModel):
-"""
- Модель базового сетевого интерфейса
+"""Модель базового сетевого интерфейса. Атрибуты:
- name (str): Название интерфейса
- type (str): Тип интерфейса
- mac_address (str): MAC-адрес устройства
- device_state (str): Состояние устройства
- active_connection (str): Название активного соединения
- device_mtu (str): MTU устройства
- ipv4 (IPConfig): Конфигурация IPv4
- ipv6 (IPConfig): Конфигурация IPv6
- container_x (int): Положение по X на холсте
- container_y (int): Положение по Y на холсте
+
+ - ``name`` (str): Название интерфейса.
+ - ``type`` (str): Тип устройства.
+ - ``mac_address`` (str): MAC-адрес.
+ - ``device_state`` (str): Текущее состояние.
+ - ``active_connection`` (str): Название активного соединения.
+ - ``device_mtu`` (str): MTU устройства.
+ - ``ipv4`` (IPConfig): IPv4-конфигурация.
+ - ``ipv6`` (IPConfig): IPv6-конфигурация.
+ - ``container_x`` (int): Положение по оси X на холсте.
+ - ``container_y`` (int): Положение по оси Y на холсте. """name:str
@@ -390,16 +390,16 @@
[docs]classWiFiDevice(NetworkInterface):
-"""
- Модель Wi-Fi устройства (наследуется от NetworkInterface)
+"""Расширенная модель Wi-Fi устройства. Атрибуты:
- ssid (Optional[str]): Название Wi-Fi сети
- bssid (Optional[str]): MAC-адрес точки доступа
- bitrate (Optional[int]): Скорость соединения
- strength (Optional[int]): Уровень сигнала
- frequency (Optional[float]): Частота
- mode (Union[str, int]): Режим работы
+
+ - ``ssid`` (Optional[str]): Название Wi-Fi сети.
+ - ``bssid`` (Optional[str]): MAC-адрес точки доступа.
+ - ``bitrate`` (Optional[int]): Скорость соединения.
+ - ``strength`` (Optional[int]): Уровень сигнала.
+ - ``frequency`` (Optional[float]): Рабочая частота.
+ - ``mode`` (Union[str, int]): Режим работы. """ssid:Optional[str]=None
@@ -414,13 +414,13 @@
[docs]classNetworkInterfacesContainer(BaseModel):
-"""
- Контейнер для группы сетевых интерфейсов с координатами
+"""Контейнер для набора сетевых интерфейсов. Атрибуты:
- interfaces (List[Union[NetworkInterface, WiFiDevice]]): Список интерфейсов
- container_x (int): Положение по оси X
- container_y (int): Положение по оси Y
+
+ - ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Список интерфейсов.
+ - ``container_x`` (int): Положение по оси X.
+ - ``container_y`` (int): Положение по оси Y. """interfaces:List[Union[NetworkInterface,WiFiDevice]]
@@ -432,15 +432,15 @@
[docs]classActivation(BaseModel):
-"""
- Модель активированных интерфейсов
+"""Модель узла активных интерфейсов. Атрибуты:
- id (int): Идентификатор ноды активированных интерфейсов
- interfaces (List[Union[NetworkInterface, WiFiDevice]]): Активированные интерфейсы
- container_x (int): Положение по X на холсте
- container_y (int): Положение по Y на холсте
- isOpen (bool): Флаг скрытия ноды на холсте
+
+ - ``id`` (int): Идентификатор ноды.
+ - ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Активные интерфейсы.
+ - ``container_x`` (int): Координата X на холсте.
+ - ``container_y`` (int): Координата Y на холсте.
+ - ``isOpen`` (bool): Флаг отображения узла на холсте. """id:int
@@ -454,15 +454,15 @@
[docs]classDeactivation(BaseModel):
-"""
- Модель отключенных интерфейсов
+"""Модель узла отключённых интерфейсов. Атрибуты:
- id (int): Идентификатор ноды отключенных интерфейсов
- interfaces (List[Union[NetworkInterface, WiFiDevice]]): Отключенные интерфейсы
- container_x (int): Положение по X на холсте
- container_y (int): Положение по Y на холсте
- isOpen (bool): Флаг скрытия ноды на холсте
+
+ - ``id`` (int): Идентификатор ноды.
+ - ``interfaces`` (List[Union[NetworkInterface, WiFiDevice]]): Список отключённых интерфейсов.
+ - ``container_x`` (int): Координата X на холсте.
+ - ``container_y`` (int): Координата Y на холсте.
+ - ``isOpen`` (bool): Флаг отображения узла на холсте. """id:int
diff --git a/SRV/docs/_build/html/_modules/models/request.html b/SRV/docs/_build/html/_modules/models/request.html
index f72b1e3..ea70831 100644
--- a/SRV/docs/_build/html/_modules/models/request.html
+++ b/SRV/docs/_build/html/_modules/models/request.html
@@ -281,11 +281,11 @@
[docs]classNoteRequest(BaseModel):
-"""
- Модель добавления заметки к просканированному устройству
+"""Модель запроса на добавление заметки к устройству. Атрибуты:
- note (str): Заметка устройства
+
+ - ``note`` (str): Текст заметки. """note:str
@@ -294,12 +294,12 @@
[docs]classWifiConnectRequest(BaseModel):
-"""
- Модель для подключения к точке доступа Wi-Fi
+"""Модель запроса на подключение к Wi-Fi. Атрибуты:
- ssid (str): Название точки доступа Wi-Fi
- password (str): Пароль точки доступа Wi-Fi
+
+ - ``ssid`` (str): Название точки доступа.
+ - ``password`` (str): Пароль доступа. """ssid:strpassword:str
@@ -308,11 +308,11 @@
[docs]classWifiDisconnectRequest(BaseModel):
-"""
- Модель для отключения от точки доступа Wi-Fi
+"""Модель запроса на отключение от Wi-Fi. Атрибуты:
- ssid (str): Название точки доступа Wi-Fi
+
+ - ``ssid`` (str): Название точки доступа. """ssid:str
[docs]classDevice(BaseModel):
-"""
- Сканируемое устройство в подсети
+"""Модель устройства, обнаруженного в подсети. Атрибуты:
- 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]): Заметка устройства
+
+ - ``ip`` (str): IP-адрес устройства.
+ - ``mac`` (Optional[str]): MAC-адрес устройства.
+ - ``hostname`` (Optional[str]): Имя хоста.
+ - ``vendor`` (Optional[str]): Производитель оборудования.
+ - ``open_ports`` (List[str]): Открытые порты.
+ - ``status`` (str): Состояние устройства (online/offline).
+ - ``last_seen`` (Optional[str]): Время последнего обнаружения.
+ - ``note`` (Optional[str]): Пользовательская заметка. """ip:str
@@ -308,12 +308,12 @@
[docs]classSubnetScanResult(BaseModel):
-"""
- Результат сканирования устройств в подсети
+"""Результат сканирования подсети. Атрибуты:
- devices (List[Device]): Список просканированных устройств
- error (Optional[str]): Сообщение об ошибке, если сканирование не удалось
+
+ - ``devices`` (List[Device]): Найденные устройства.
+ - ``error`` (Optional[str]): Сообщение об ошибке сканирования. """devices:List[Device]=[]
@@ -323,11 +323,11 @@
[docs]classSubnetScanRequest(BaseModel):
-"""
- Параметры для сканирования подсети
+"""Параметры запроса на сканирование подсети. Атрибуты:
- subnet (Optional[str]): Подсеть для сканирования (например 192.168.1.0/24), опционально
+
+ - ``subnet`` (Optional[str]): CIDR подсети (например, ``192.168.1.0/24``). """subnet:Optional[str]=None
[docs]classWifiAccessPoint(BaseModel):
-"""
- Модель точки доступа Wi-Fi
+"""Модель Wi-Fi точки доступа. Атрибуты:
- 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]): Заметка для точки доступа
+
+ - ``ssid`` (Optional[str]): Название сети (может быть скрытым).
+ - ``bssid`` (str): Уникальный идентификатор точки доступа.
+ - ``channel`` (Optional[int]): Номер канала.
+ - ``signal`` (Optional[int]): Уровень сигнала в dBm.
+ - ``encryption`` (Optional[str]): Тип шифрования (WPA/WPA2/WPA3/открытая).
+ - ``frequency`` (Optional[str]): Диапазон частот (2.4/5 ГГц).
+ - ``vendor`` (Optional[str]): Производитель оборудования.
+ - ``hidden`` (bool): Флаг скрытого SSID.
+ - ``note`` (Optional[str]): Пользовательская заметка. """ssid:Optional[str]=None
@@ -312,11 +312,11 @@
[docs]classWifiScanResult(BaseModel):
-"""
- Результат сканирования Wi-Fi
+"""Результат сканирования Wi-Fi. Атрибуты:
- access_points (List[WifiAccessPoint]): Список найденных Wi-Fi точек доступа
+
+ - ``access_points`` (List[WifiAccessPoint]): Найденные точки доступа. """access_points:List[WifiAccessPoint]
diff --git a/SRV/docs/_build/html/_modules/services/arp_service.html b/SRV/docs/_build/html/_modules/services/arp_service.html
index 266ec4a..af965d1 100644
--- a/SRV/docs/_build/html/_modules/services/arp_service.html
+++ b/SRV/docs/_build/html/_modules/services/arp_service.html
@@ -293,14 +293,26 @@
- Для отправки ARP-кадров могут потребоваться повышенные привилегии или capability на сырой сокет."""
+importos
+importloggingfromfastapiimportDepends
-fromscapy.layers.l2importARP,Ether
-fromscapy.sendrecvimportsrpimportnetifacesfromnetaddrimportIPNetworkfromutils.i18nimportget_translations,_frombabel.supportimportTranslations
+try:
+ fromscapy.layers.l2importARP,Ether
+ fromscapy.sendrecvimportsrp
+exceptExceptionasexc:# pragma: no cover - fallback for doc builds
+ ifos.getenv("SPHINX_BUILD"):
+ ARP=Ether=None# type: ignore
+
+ defsrp(*args,**kwargs):
+ raiseRuntimeError("scapy is unavailable during documentation build")fromexc
+ else:
+ raise
+
[docs]classNetworkScanner:
@@ -320,15 +332,34 @@
Инициализирует интерфейс, информацию об IP-адресах и локальный MAC-адрес. """
- self.interface=(
- interfaceornetifaces.gateways()["default"][netifaces.AF_INET][1])
- self.ip_info=netifaces.ifaddresses(self.interface).get(
- netifaces.AF_INET,[])
- self.networks=[
- IPNetwork(f"{ip['addr']}/{ip['netmask']}")foripinself.ip_info
- ]
- self.local_mac=netifaces.ifaddresses(
- self.interface)[netifaces.AF_LINK][0]["addr"]
+ try:
+ ifinterface:
+ self.interface=interface
+ else:
+ default_gateway=netifaces.gateways().get("default",{}).get(
+ netifaces.AF_INET)
+ ifdefault_gateway:
+ self.interface=default_gateway[1]
+ else:
+ raiseKeyError("Default gateway not found")
+
+ self.ip_info=netifaces.ifaddresses(self.interface).get(
+ netifaces.AF_INET,[])
+ self.networks=[
+ IPNetwork(f"{ip['addr']}/{ip['netmask']}")foripinself.ip_info
+ ]
+ self.local_mac=netifaces.ifaddresses(
+ self.interface)[netifaces.AF_LINK][0]["addr"]
+ exceptExceptionasexc:
+ ifos.getenv("SPHINX_BUILD"):
+ self.interface=interfaceor"eth0"
+ self.ip_info=[]
+ self.networks=[]
+ self.local_mac="00:00:00:00:00:00"
+ logger=logging.getLogger(__name__)
+ logger.warning("NetworkScanner falling back to mocked interface during documentation build: %s",exc)
+ else:
+ raiseself.translations=translationsdef_create_arp_packet(self,target_ip):
diff --git a/SRV/docs/_build/html/_modules/services/auth_service.html b/SRV/docs/_build/html/_modules/services/auth_service.html
index 84cb13b..34e4d34 100644
--- a/SRV/docs/_build/html/_modules/services/auth_service.html
+++ b/SRV/docs/_build/html/_modules/services/auth_service.html
@@ -292,12 +292,17 @@
logging.basicConfig(level=logging.INFO)logger=logging.getLogger(__name__)
+CONFIG_PATH=os.getenv("GONETS_CONFIG_PATH","/etc/gonets/config.ini")config=configparser.ConfigParser()
-config_path="/etc/gonets/config.ini"
-ifnotos.path.exists(config_path):
- raiseRuntimeError(f"Configuration file {config_path} not found")
-config.read(config_path)
-SECRET_KEY=config["JWT"]["secret_key"]
+read_files=config.read(CONFIG_PATH)
+
+if"JWT"inconfig:
+ SECRET_KEY=config["JWT"]["secret_key"]
+elifos.getenv("SPHINX_BUILD"):
+ logger.warning("JWT secret not found; using dummy value for documentation build")
+ SECRET_KEY="sphinx-placeholder-secret"
+else:
+ raiseRuntimeError(f"Configuration file {CONFIG_PATH} not found or missing [JWT] section")ALGORITHM="HS256"ACCESS_TOKEN_EXPIRE_MINUTES=30
diff --git a/SRV/docs/_build/html/_modules/services/wifi_service.html b/SRV/docs/_build/html/_modules/services/wifi_service.html
index 2d432f8..7c26610 100644
--- a/SRV/docs/_build/html/_modules/services/wifi_service.html
+++ b/SRV/docs/_build/html/_modules/services/wifi_service.html
@@ -302,14 +302,16 @@
classWifiStorage:"""Класс для хранения данных о Wi-Fi сетях и их заметках по SSID.
- Формат:
+ Формат::
+
{ "networks": [{"ssid": str, "note": Optional[str]}] } Поведение:
- - Создаёт директорию хранения при инициализации, ведёт логирование путей.
- - Валидация структуры при чтении, безопасная запись с Unicode и отступами.
+
+ - Создаёт директорию хранения при инициализации, ведёт логирование путей.
+ - Валидирует структуру при чтении и безопасно записывает JSON с Unicode и отступами. """def__init__(self,storage_path:str="storage/wifi/wifi.json",translations:Translations=Depends(get_translations())):self.storage_file=Path(storage_path)
diff --git a/SRV/docs/_build/html/_modules/storage/json_storage.html b/SRV/docs/_build/html/_modules/storage/json_storage.html
index 8c24acc..c47b992 100644
--- a/SRV/docs/_build/html/_modules/storage/json_storage.html
+++ b/SRV/docs/_build/html/_modules/storage/json_storage.html
@@ -285,18 +285,23 @@
logging.basicConfig(level=logging.INFO)logger=logging.getLogger(__name__)
+DATA_DIR=os.getenv("GONETS_DATA_DIR","/etc/gonets")
+DEFAULT_USERS_PATH=os.getenv("GONETS_USERS_PATH",
+ os.path.join(DATA_DIR,"users.json"))
+
+
[docs]classJsonStorage:"""Хранилище пользователей в JSON-файле. Назначение:
- Обеспечивает простое файловое хранилище для учетных записей пользователей
- без полноценной СУБД. Подходит для встраиваемых окружений и сценариев,
- где важна минимальная зависимость от внешних сервисов.
- Формат данных:
- JSON-структура вида:
+ - Обеспечивает простое файловое хранилище учетных записей без полноценной СУБД.
+ - Подходит для встраиваемых окружений, где критична минимальная зависимость от внешних сервисов.
+
+ Формат данных::
+
{ "users": [ {"id": int, "username": str, "password_hash": str, "is_admin": bool},
@@ -306,18 +311,17 @@
} Безопасность:
- Пароли никогда не сохраняются в открытом виде. Для хеширования используется
- `passlib.context.CryptContext` со схемой `bcrypt`. Файл создаётся с правами
- доступа `0o600` (только владелец).
- Ограничения и замечания:
- - Отсутствует конкурентный доступ/блокировки файла — при использовании в
- многопроцессной среде может потребоваться внешняя синхронизация.
- - Имя файла и каталог по умолчанию `/etc/gonets/users.json` предполагают
- наличие прав на запись и предварительную подготовку окружения.
+ - Пароли никогда не сохраняются в открытом виде: используется `passlib.context.CryptContext` со схемой `bcrypt`.
+ - Файл создаётся с правами доступа ``0o600`` (чтение/запись только владельцу).
+
+ Ограничения:
+
+ - Нет блокировок для конкурентного доступа — в многопроцессной среде требуется внешняя синхронизация.
+ - Значение пути по умолчанию ``/etc/gonets/users.json`` предполагает наличие прав на запись и предварительную настройку окружения. """
- def__init__(self,file_path:str="/etc/gonets/users.json"):
+ def__init__(self,file_path:Optional[str]=None):"""Инициализирует хранилище пользователей. Args:
@@ -327,7 +331,7 @@
Создаёт объект CryptContext для хеширования паролей и проверяет/создаёт файл, если он отсутствует. """
- self.file_path=file_path
+ self.file_path=file_pathorDEFAULT_USERS_PATHself.pwd_context=CryptContext(schemes=["bcrypt"],deprecated="auto")self._ensure_file_exists()
diff --git a/SRV/docs/_build/html/_modules/storage/session_storage.html b/SRV/docs/_build/html/_modules/storage/session_storage.html
index 1f63918..c007ef2 100644
--- a/SRV/docs/_build/html/_modules/storage/session_storage.html
+++ b/SRV/docs/_build/html/_modules/storage/session_storage.html
@@ -285,18 +285,23 @@
logging.basicConfig(level=logging.INFO)logger=logging.getLogger(__name__)
+DATA_DIR=os.getenv("GONETS_DATA_DIR","/etc/gonets")
+DEFAULT_SESSIONS_PATH=os.getenv("GONETS_SESSIONS_PATH",
+ os.path.join(DATA_DIR,"sessions.json"))
+
+
[docs]classSessionStorage:"""Хранилище сессий пользователей в JSON-файле. Назначение:
- Лёгкое файловое хранилище для сессионных токенов, сопоставленных с
- `client_id` (например, IP клиента). Предназначено для сред без БД и
- persistent-кэшей. Обеспечивает базовые операции и авто-очистку протухших
- сессий.
- Формат данных:
+ - Лёгкое файловое хранилище сессионных токенов, сопоставленных с ``client_id`` (например, IP клиента).
+ - Предназначено для сред без БД и persistent-кэшей; обеспечивает простые операции и автоочистку истёкших сессий.
+
+ Формат данных::
+
{ "sessions": { "<session_id>": {
@@ -311,15 +316,16 @@
} Политика TTL:
- Каждая сессия действует 30 минут. При создании/чтении/удалении вызывается
- `clean_expired_sessions()` для удаления протухших записей.
+
+ - Каждая сессия действует 30 минут; метод ``clean_expired_sessions`` удаляет записи с истёкшим сроком. Ограничения:
- - Нет файловых блокировок: в многопроцессных конфигурациях возможны гонки.
- - Размещение по умолчанию `/etc/gonets/sessions.json` требует прав на запись.
+
+ - Отсутствуют файловые блокировки — в многопроцессной среде возможны гонки.
+ - Путь по умолчанию ``/etc/gonets/sessions.json`` требует прав на запись. """
- def__init__(self,file_path:str="/etc/gonets/sessions.json"):
+ def__init__(self,file_path:Optional[str]=None):"""Инициализирует хранилище сессий. Args:
@@ -328,7 +334,7 @@
Создаёт файл и директории, если они отсутствуют, с правами доступа 600. """
- self.file_path=file_path
+ self.file_path=file_pathorDEFAULT_SESSIONS_PATHself._ensure_file_exists()def_ensure_file_exists(self):
diff --git a/SRV/docs/_build/html/_sources/index.rst.txt b/SRV/docs/_build/html/_sources/index.rst.txt
index 003a09a..4887d9d 100644
--- a/SRV/docs/_build/html/_sources/index.rst.txt
+++ b/SRV/docs/_build/html/_sources/index.rst.txt
@@ -4,7 +4,7 @@ GONETS SRV Documentation
Добро пожаловать в документацию серверной части GONETS (SRV).
Содержание
----------
+----------
.. toctree::
:maxdepth: 2
diff --git a/SRV/docs/_build/html/api/config/cors.html b/SRV/docs/_build/html/api/config/cors.html
index 087a164..866319c 100644
--- a/SRV/docs/_build/html/api/config/cors.html
+++ b/SRV/docs/_build/html/api/config/cors.html
@@ -172,7 +172,7 @@
Модуль инкапсулирует добавление middleware CORSMiddleware со списком
разрешённых источников (origins), характерных для локальной разработки и
@@ -300,13 +300,13 @@ cors_config.add_cors_middleware()
Проверяет учетные данные пользователя и возвращает токен и session_id для
последующей авторизации.
-
-
Args:
user (UserLogin): Объект с данными для входа (username, password).
-request (Request): Объект запроса для получения client_id (IP-адрес клиента).
-translations: Объект переводов для текущего языка.
+
+
Parameters:
+
+
user (UserLogin) – Объект с данными для входа (username, password).
+
request (Request) – Объект запроса для получения client_id (IP-адрес клиента).
+
translations – Объект переводов для текущего языка.
+
-
Returns:
Token: Объект с access_token и session_id для авторизации.
+
Returns:
+
Объект с access_token и session_id для авторизации.
-
Raises:
-
HTTPException: Если учетные данные неверны (status_code=401) или произошла
внутренняя ошибка (status_code=500).
+
Return type:
+
Token
-
+
Raises:
+
HTTPException – Если учетные данные неверны (status_code=401) или произошла
+ внутренняя ошибка (status_code=500).