From 7ee5970901d3b5beac11e9fb992218097475288e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D0=B5=D0=B4=D0=BE=D1=80=D0=BE=D0=B2=20=D0=94=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D1=80=D0=B8=D0=B8=CC=86?= Date: Fri, 2 Oct 2026 17:06:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8F:=20TelegramAuth=20+=20TelegramAu?= =?UTF-8?q?thBot=20(=D0=B2=D1=85=D0=BE=D0=B4=20=D0=B2=20Lampa=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20Telegram)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README: пара Community-модулей, гейт (условия активации), конфиг, отличие от Tg-notify, состояние у нас (выключены, accsdb нет) - AGENT.md: правило 12 — механика, mutations_api_secret, не путать с Tg-notify --- AGENT.md | 6 ++++++ README.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/AGENT.md b/AGENT.md index 4937006..ed82983 100644 --- a/AGENT.md +++ b/AGENT.md @@ -120,3 +120,9 @@ docker exec lampac sh -c '...' # осмотр состояния в конте - Данные подписок: `database/tgnotify/{users.json,subscriptions.json}` (том `./database/`, в .gitignore). Не «чинить» вручную — это живые данные бота. - Диагностика: `GET /tg-notify.js` (200 без авторизации), `GET /api/tg/voices` (200), `/api/tg/*` остальной — требует `user_uid`. Озвучки могут не работать, если балансеры недоступны (проверить `GET /lite/mirage` — тело `disable`/ошибка, `/lite/collaps` — 503); тогда уведомления приходят только о выходе серий. - `kp_api_key` опционален: без него VideoHub резолвит `kinopoisk_id` только через мост `/externalids` (покрытие ~40%), иначе — молча пропускается, Mirage/Collaps работают. + +### 12. TelegramAuth / TelegramAuthBot (вход через Telegram) + +- Не путать с Tg-notify.bot (уведомления): эта пара — **аутентификация** (вход в Lampa через Telegram вместо пароля), группа Community, в образе выключена (`SkipModules` + `enable: false`). +- Гейт (`LampaWeb.telegramAuthGate`) активен только при `accsdb.enable: true` + `telegramAuthGate.enabled: true` + непустом `botUsername`, иначе тихий откат на `deny.js`. У нас `accsdb` не включён — связка неактуальна, включать только вместе с `accsdb`. +- `mutations_api_secret` одинаковый в обоих модулях, ненулевой в проде; `bot_token` — в `init.conf`, не коммитить (см. правило 10). diff --git a/README.md b/README.md index 25cfafa..c5c494a 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,40 @@ rm -rf cache/static/59 # bucket /extensions; либо rm -rf cache/static - `bot_token` **пуст** → long polling не работает (лог: `[TelegramBot] Установите bot_token…`); уведомления придут только после заполнения токена. - Трекинг озвучек зависит от балансиров: на текущий момент `GET /lite/mirage` → тело `disable`, `GET /lite/collaps` → `503` — до тех пор, пока они не будут доступны (или не включится `lampac_token` при защите), бот будет уведомлять только о выходе серий (TMDB/Trakt). +## TelegramAuth + TelegramAuthBot: вход в Lampa через Telegram + +Пара модулей из группы **Community** — замена пароля аккаунта подтверждением в Telegram (сценарий: ТВ, где вводить пароль неудобно). Не путать с Tg-notify.bot — тот только уведомляет о сериях. + +- **`TelegramAuth`** — серверная часть: хранение пользователей/устройств, HTTP API `/tg/auth/*`, синхронизация UID в `accsdb`; **Telegram Auth Gate** — вместо экрана `deny.js` (модалка пароля) показывает fullscreen-оверлей с UID, кнопкой «Открыть Telegram» и QR-кодом на крупных экранах. +- **`TelegramAuthBot`** — long-polling бот: пользователь открывает бота (`/start link_{uid}` или отправляет UID), бот сам вызывает `POST /tg/auth/bind/complete`; есть админ-команды. HTTP UI нет. + +Активация гейта — только при трёх условиях сразу: `accsdb.enable: true` + `LampaWeb.telegramAuthGate.enabled: true` + непустой `botUsername`. Иначе тихий откат на `deny.js`. + +Конфиг (по образцу `init.merge.example.json` модулей): + +```json +"TelegramAuth": { + "enable": true, + "mutations_api_secret": "SECRET" +}, +"TelegramAuthBot": { + "enable": true, + "bot_token": "ТОКЕН_ОТ_BOTFATHER", + "mutations_api_secret": "SECRET" +}, +"LampaWeb": { + "telegramAuthGate": { + "enabled": true, + "botUsername": "имя_бота_без_@", + "serviceName": "lampa" + } +} +``` + +`mutations_api_secret` должен совпадать в обоих модулях и быть ненулевым — защищает `bind/complete` и бот-админку; вместе с `bot_token` не публиковать. Оба модуля выключены в `base.conf` (`SkipModules`) и в манифестах (`enable: false`). + +**Состояние у нас:** выключены, `accsdb` в `init.conf` не включён → гейт неактивен, используем беззащитный доступ + root-пароль AdminPanel. Включать связку имеет смысл вместе с `accsdb` (защита сервера учётными записями). + ## Обновление Lampac ```bash