Repair docs (html, md). Update docstrings
This commit is contained in:
parent
e264750187
commit
6a4ad48577
125 changed files with 3706 additions and 4913 deletions
|
|
@ -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