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] class RuleNumbers(BaseModel): + """Модель запроса на удаление UFW правил. + + Атрибуты: + + - ``numbers`` (List[int]): Список номеров правил для удаления. + """ numbers: List[int] = Field( ..., description="Список номеров правил для удаления")
diff --git a/SRV/docs/_build/html/_modules/models/auth.html b/SRV/docs/_build/html/_modules/models/auth.html index 0005fc8..afe07e1 100644 --- a/SRV/docs/_build/html/_modules/models/auth.html +++ b/SRV/docs/_build/html/_modules/models/auth.html @@ -282,13 +282,13 @@
[docs] class UserCreate(BaseModel): - """ - Модель созданного пользователя + """Модель созданного пользователя. Атрибуты: - username (str): Имя пользователя - password (str): Пароль пользователя - is_admin (bool): Административный доступ + + - ``username`` (str): Имя пользователя. + - ``password`` (str): Пароль пользователя. + - ``is_admin`` (bool): Флаг административного доступа. """ username: str @@ -300,12 +300,12 @@
[docs] class UserLogin(BaseModel): - """ - Модель авторизации пользователя + """Модель авторизации пользователя. Атрибуты: - username (str): Имя пользователя - password (str): Пароль пользователя + + - ``username`` (str): Имя пользователя. + - ``password`` (str): Пароль пользователя. """ username: str @@ -316,13 +316,13 @@
[docs] class UserResponse(BaseModel): - """ - Модель проверки наличия пользователя + """Модель, используемая при возврате сведений о пользователе. Атрибуты: - id (int): Идентификатор - username (str): Имя пользователя - is_admin (bool): Административный доступ + + - ``id`` (int): Идентификатор пользователя. + - ``username`` (str): Имя пользователя. + - ``is_admin`` (bool): Флаг административного доступа. """ id: int @@ -334,14 +334,14 @@
[docs] class Token(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] class IPv4Route(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] class IPv6Route(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] class IndividualIPConfig(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] class IPConfig(BaseModel): - """ - Модель конфигурации IP (IPv4/IPv6) + """Групповая конфигурация IP-адресов. Атрибуты: - configurations (List[IndividualIPConfig]): Список индивидуальных IP-конфигураций + + - ``configurations`` (List[IndividualIPConfig]): Индивидуальные IP-конфигурации. """ configurations: List[IndividualIPConfig]
@@ -358,20 +358,20 @@
[docs] class NetworkInterface(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] class WiFiDevice(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] class NetworkInterfacesContainer(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] class Activation(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] class Deactivation(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] class NoteRequest(BaseModel): - """ - Модель добавления заметки к просканированному устройству + """Модель запроса на добавление заметки к устройству. Атрибуты: - note (str): Заметка устройства + + - ``note`` (str): Текст заметки. """ note: str
@@ -294,12 +294,12 @@
[docs] class WifiConnectRequest(BaseModel): - """ - Модель для подключения к точке доступа Wi-Fi + """Модель запроса на подключение к Wi-Fi. Атрибуты: - ssid (str): Название точки доступа Wi-Fi - password (str): Пароль точки доступа Wi-Fi + + - ``ssid`` (str): Название точки доступа. + - ``password`` (str): Пароль доступа. """ ssid: str password: str
@@ -308,11 +308,11 @@
[docs] class WifiDisconnectRequest(BaseModel): - """ - Модель для отключения от точки доступа Wi-Fi + """Модель запроса на отключение от Wi-Fi. Атрибуты: - ssid (str): Название точки доступа Wi-Fi + + - ``ssid`` (str): Название точки доступа. """ ssid: str
diff --git a/SRV/docs/_build/html/_modules/models/subnet.html b/SRV/docs/_build/html/_modules/models/subnet.html index e334dba..751d67c 100644 --- a/SRV/docs/_build/html/_modules/models/subnet.html +++ b/SRV/docs/_build/html/_modules/models/subnet.html @@ -281,18 +281,18 @@
[docs] class Device(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] class SubnetScanResult(BaseModel): - """ - Результат сканирования устройств в подсети + """Результат сканирования подсети. Атрибуты: - devices (List[Device]): Список просканированных устройств - error (Optional[str]): Сообщение об ошибке, если сканирование не удалось + + - ``devices`` (List[Device]): Найденные устройства. + - ``error`` (Optional[str]): Сообщение об ошибке сканирования. """ devices: List[Device] = [] @@ -323,11 +323,11 @@
[docs] class SubnetScanRequest(BaseModel): - """ - Параметры для сканирования подсети + """Параметры запроса на сканирование подсети. Атрибуты: - subnet (Optional[str]): Подсеть для сканирования (например 192.168.1.0/24), опционально + + - ``subnet`` (Optional[str]): CIDR подсети (например, ``192.168.1.0/24``). """ subnet: Optional[str] = None
diff --git a/SRV/docs/_build/html/_modules/models/wifi.html b/SRV/docs/_build/html/_modules/models/wifi.html index d5122c1..c68745a 100644 --- a/SRV/docs/_build/html/_modules/models/wifi.html +++ b/SRV/docs/_build/html/_modules/models/wifi.html @@ -282,19 +282,19 @@
[docs] class WifiAccessPoint(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] class WifiScanResult(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 на сырой сокет. """ +import os +import logging from fastapi import Depends -from scapy.layers.l2 import ARP, Ether -from scapy.sendrecv import srp import netifaces from netaddr import IPNetwork from utils.i18n import get_translations, _ from babel.support import Translations +try: + from scapy.layers.l2 import ARP, Ether + from scapy.sendrecv import srp +except Exception as exc: # pragma: no cover - fallback for doc builds + if os.getenv("SPHINX_BUILD"): + ARP = Ether = None # type: ignore + + def srp(*args, **kwargs): + raise RuntimeError("scapy is unavailable during documentation build") from exc + else: + raise +
[docs] class NetworkScanner: @@ -320,15 +332,34 @@ Инициализирует интерфейс, информацию об IP-адресах и локальный MAC-адрес. """ - self.interface = ( - interface or netifaces.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']}") for ip in self.ip_info - ] - self.local_mac = netifaces.ifaddresses( - self.interface)[netifaces.AF_LINK][0]["addr"] + try: + if interface: + self.interface = interface + else: + default_gateway = netifaces.gateways().get("default", {}).get( + netifaces.AF_INET) + if default_gateway: + self.interface = default_gateway[1] + else: + raise KeyError("Default gateway not found") + + self.ip_info = netifaces.ifaddresses(self.interface).get( + netifaces.AF_INET, []) + self.networks = [ + IPNetwork(f"{ip['addr']}/{ip['netmask']}") for ip in self.ip_info + ] + self.local_mac = netifaces.ifaddresses( + self.interface)[netifaces.AF_LINK][0]["addr"] + except Exception as exc: + if os.getenv("SPHINX_BUILD"): + self.interface = interface or "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: + raise self.translations = translations def _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" -if not os.path.exists(config_path): - raise RuntimeError(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" in config: + SECRET_KEY = config["JWT"]["secret_key"] +elif os.getenv("SPHINX_BUILD"): + logger.warning("JWT secret not found; using dummy value for documentation build") + SECRET_KEY = "sphinx-placeholder-secret" +else: + raise RuntimeError(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 @@ class WifiStorage: """Класс для хранения данных о 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] class JsonStorage: """Хранилище пользователей в 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_path or DEFAULT_USERS_PATH self.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] class SessionStorage: """Хранилище сессий пользователей в 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_path or DEFAULT_SESSIONS_PATH self._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 @@
-
@@ -276,13 +276,13 @@
-
-
-

config.cors

+
+

config.cors

Конфигурация CORS для FastAPI-приложения GONETS.

Модуль инкапсулирует добавление middleware CORSMiddleware со списком разрешённых источников (origins), характерных для локальной разработки и @@ -300,13 +300,13 @@ cors_config.add_cors_middleware()

-
-class config.cors.CORSMiddlewareConfig(app: FastAPI)[source]
+
+class config.cors.CORSMiddlewareConfig(app: FastAPI)[source]

Bases: object

Класс для настройки CORS политики в FastAPI

-
-add_cors_middleware() → None[source]
+
+add_cors_middleware() → None[source]

Добавляем CORS в приложение FastAPI

@@ -357,31 +357,9 @@ cors_config.add_cors_middleware()

-
diff --git a/SRV/docs/_build/html/api/config/ports.html b/SRV/docs/_build/html/api/config/ports.html index 7d5664c..6f52956 100644 --- a/SRV/docs/_build/html/api/config/ports.html +++ b/SRV/docs/_build/html/api/config/ports.html @@ -172,7 +172,7 @@
-
@@ -276,16 +276,16 @@
-
-
-

config.ports

+
+

config.ports

-
-class config.ports.PortConfig(custom_ports: Dict[int, str] = None)[source]
+
+class config.ports.PortConfig(custom_ports: Dict[int, str] = None)[source]

Bases: object

Конфигурация известных портов для сетевого анализа.

@@ -295,23 +295,26 @@
-
-get_port_name(port: int) → str[source]
+
+get_port_name(port: int) → str[source]

Возвращает название сервиса для указанного порта.

-
-
Args:

port: Номер порта.

+
+
Parameters:
+

port – Номер порта.

-
Returns:

Название сервиса или строка вида ‘Port-<port>’.

+
Returns:
+

Название сервиса или строка вида ‘Port-<port>’.

-
-get_ports() → List[int][source]
+
+get_ports() → List[int][source]

Возвращает список всех номеров портов.

-
-
Returns:

Список номеров портов.

+
+
Returns:
+

Список номеров портов.

@@ -363,32 +366,9 @@
-
diff --git a/SRV/docs/_build/html/api/core/cli_executor.html b/SRV/docs/_build/html/api/core/cli_executor.html index b54646d..454a5f3 100644 --- a/SRV/docs/_build/html/api/core/cli_executor.html +++ b/SRV/docs/_build/html/api/core/cli_executor.html @@ -172,7 +172,7 @@
-
@@ -276,16 +276,16 @@
-
-
-

core.cli_executor

+
+

core.cli_executor

-
-class core.cli_executor.CLIExecutor[source]
+
+class core.cli_executor.CLIExecutor[source]

Bases: object

Утилита для безопасного выполнения CLI-команд.

@@ -294,13 +294,18 @@
-
-static run(command: list) → Tuple[int, str][source]
+
+static run(command: list) → Tuple[int, str][source]

Выполняет команду в системе и возвращает код и вывод.

-
-
Args:

command (list): Список аргументов команды для выполнения.

+
+
Parameters:
+

command (list) – Список аргументов команды для выполнения.

-
Returns:

tuple: Код возврата и вывод команды.

+
Returns:
+

Код возврата и вывод команды.

+
+
Return type:
+

tuple

@@ -352,31 +357,9 @@
-
diff --git a/SRV/docs/_build/html/api/endpoints/auth.html b/SRV/docs/_build/html/api/endpoints/auth.html index 21fbe66..2bc2c38 100644 --- a/SRV/docs/_build/html/api/endpoints/auth.html +++ b/SRV/docs/_build/html/api/endpoints/auth.html @@ -172,7 +172,7 @@ -