mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
docs: задача по аватарам TG в мосте (HTTP не через SOCKS5) + инструкция регистрации slidgram (WALKTHROUGH 12)
This commit is contained in:
@@ -31,7 +31,11 @@
|
|||||||
- Образ `slidgram-proxy:latest` = codeberg.org/slidge/slidgram + SOCKS5-патч (env `SLIDGRAM_PROXY`).
|
- Образ `slidgram-proxy:latest` = codeberg.org/slidge/slidgram + SOCKS5-патч (env `SLIDGRAM_PROXY`).
|
||||||
- **Трафик Telegram идёт через SOCKS5 172.27.0.1:1080** (SSH-туннель VPS01, вне РФ) — работает при блокировке Telegram в РФ.
|
- **Трафик Telegram идёт через SOCKS5 172.27.0.1:1080** (SSH-туннель VPS01, вне РФ) — работает при блокировке Telegram в РФ.
|
||||||
- Данные сессий: `./slidgram/data/` (том, uid 10000).
|
- Данные сессий: `./slidgram/data/` (том, uid 10000).
|
||||||
- Регистрация TG-аккаунта: из XMPP-клиента написать «register» на `telegram.nixg.ru`.
|
- Регистрация TG-аккаунта: из XMPP-клиента написать «register» на `telegram.nixg.ru`
|
||||||
|
(или ad-hoc команда Register) — **пошагово: WALKTHROUGH.md раздел 12**. Нужен api_id/api_hash
|
||||||
|
с https://my.telegram.org/apps.
|
||||||
|
- ⚠️ Известное ограничение: **URL-аватары** (web.telegram.org) качаются HTTP-клиентом slidge
|
||||||
|
напрямую (не через SOCKS5) → в РФ таймаутят. Задача в STATUS.md. На обмен сообщениями не влияет.
|
||||||
- Офлайн-доки: `docs/slidgram/` (копия slidge.im).
|
- Офлайн-доки: `docs/slidgram/` (копия slidge.im).
|
||||||
|
|
||||||
## Состав (после клонирования)
|
## Состав (после клонирования)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# ICQ XMPP — ТЕКУЩИЙ СТАТУС И ПЛАН (точка входа для новой сессии)
|
# ICQ XMPP — ТЕКУЩИЙ СТАТУС И ПЛАН (точка входа для новой сессии)
|
||||||
|
|
||||||
> Обновлено: 2026-08-29 · Сессия: bigbox (/opt/icq)
|
> Обновлено: 2026-08-29 (вечер) · Сессия: bigbox (/opt/icq)
|
||||||
> ⚠️ МИГРАЦИЯ НА nixg.ru (2026-08-28): JID юзеров теперь `user@nixg.ru`, веб-клиент остаётся на chat.nixg.ru, WS → wss://xmpp.nixg.ru. См. MIGRATION.md.
|
> ⚠️ МИГРАЦИЯ НА nixg.ru (2026-08-28): JID юзеров теперь `user@nixg.ru`, веб-клиент остаётся на chat.nixg.ru, WS → wss://xmpp.nixg.ru. См. MIGRATION.md.
|
||||||
> ✅ Документация полная и актуальная: [WALKTHROUGH.md](WALKTHROUGH.md) (все этапы, команды, засады, TLS, HTTP Upload) · [PRD.md](PRD.md) (требования/архитектура) · [MIGRATION.md](MIGRATION.md) (переезд).
|
> ✅ Документация полная и актуальная: [WALKTHROUGH.md](WALKTHROUGH.md) (все этапы, команды, засады, TLS, HTTP Upload) · [PRD.md](PRD.md) (требования/архитектура) · [MIGRATION.md](MIGRATION.md) (переезд).
|
||||||
|
|
||||||
@@ -162,6 +162,26 @@ chromium --headless --no-sandbox --disable-gpu --enable-logging=stderr --virtual
|
|||||||
- ✅ **Аудит XEP-функций** (2026-08-29) → **XEP-AUDIT.md**: MUC/PubSub/HTTP Upload/MAM/Carbons/PEP ✅;
|
- ✅ **Аудит XEP-функций** (2026-08-29) → **XEP-AUDIT.md**: MUC/PubSub/HTTP Upload/MAM/Carbons/PEP ✅;
|
||||||
OMEMO/WebRTC — клиент-сайд (норма для 0.11); Bookmarks — через PEP; mod_pubsub включён в modules_enabled.
|
OMEMO/WebRTC — клиент-сайд (норма для 0.11); Bookmarks — через PEP; mod_pubsub включён в modules_enabled.
|
||||||
- ОЖИДАЕТ: регистрацию TG-аккаунта (admin@nixg.ru → команда register на telegram.nixg.ru) + api_id/api_hash.
|
- ОЖИДАЕТ: регистрацию TG-аккаунта (admin@nixg.ru → команда register на telegram.nixg.ru) + api_id/api_hash.
|
||||||
|
- 📖 **Регистрация в slidgram — ПОШАГОВАЯ ИНСТРУКЦИЯ:** см. **WALKTHROUGH.md → раздел «Slidgram: регистрация telegram-аккаунта»** (нужен api_id/api_hash с my.telegram.org/apps; команда `register` с telegram.nixg.ru; код → на ваш TG; 2FA → пароль). Процесс общается с Telegram ТОЛЬКО через MTProto (SOCKS5-туннель) — HTTP my.telegram.org для получения api_id/hash придётся открыть в обычном браузере на вашей машине.
|
||||||
|
- [ ] **Аватары telegram-пользователей в мосте: загрузка таймаутит (2026-08-29)** — слабое место, требует починки после регистрации:
|
||||||
|
- Симптом: аватары контактов/компонента не подтягиваются; в прошлой сессии зафиксировано
|
||||||
|
«загрузка аватаров/логотипа с web.telegram.org таймаутит».
|
||||||
|
- Корень (найдено по коду в контейнере icq-slidgram): HTTP-часть slidge НЕ ходит через SOCKS5:
|
||||||
|
`slidge/core/gateway.py:399` создаёт `aiohttp.ClientSession()` без `proxy=`, и
|
||||||
|
`slidge/db/avatar.py:112` (`self.http.get(url)`) качает аватары напрямую — из РФ прямой
|
||||||
|
доступ к web.telegram.org/photo-URL'ам заблокирован → таймаут. MTProto-часть
|
||||||
|
(`slidgram/telegram.py` → `Client(proxy=_proxy)`) уже ходит через прокси и работает.
|
||||||
|
- Варианты решения (выбрать при реализации):
|
||||||
|
(1) Задать прокси в aiohttp-сессию: в `gateway.py:399` `aiohttp.ClientSession(proxy=...)` — но aiohttp умеет
|
||||||
|
только один прокси на сессию; либо патчить `ClientSession(trust_env=True)` + env
|
||||||
|
`HTTP_PROXY/HTTPS_PROXY/ALL_PROXY` (aiohttp читает их при trust_env). Если в docker-сети
|
||||||
|
нужен хостовый SOCKS5 — задать `ALL_PROXY=socks5://172.27.0.1:1080` и `trust_env=True`;
|
||||||
|
но aiohttp SOCKS5 поддерживается только через aiohttp-socks (доп. зависимость).
|
||||||
|
(2) Пройти все URL-аватары через nginx-прокси на bigbox (rewrite → туннель) — без правок кода;
|
||||||
|
(3) в slidgram/telegram.py аватары уже качаются через Pyrogram `download_media()` (MTProto,
|
||||||
|
через наш SOCKS5). Убедиться, что часть аватаров (личные фото юзеров этой веткой) идёт
|
||||||
|
именно так; прямая HTTP-загрузка нужна для URL-аватаров (web.telegram.org и т.п.).
|
||||||
|
- ⚠️ Обмен сообщениями, файлы и стикеры НЕ затрагиваются — это косметика (аватарки в ростере).
|
||||||
- [ ] Мосты mautrix (WhatsApp) — Этап 4; нужен external component (mod_component). [Telegram-мост уже на Slidge]
|
- [ ] Мосты mautrix (WhatsApp) — Этап 4; нужен external component (mod_component). [Telegram-мост уже на Slidge]
|
||||||
- [ ] Push-уведомления (APNs/FCM) — ОТЛОЖЕН (нет особой потребности; см. WALKTHROUGH раздел 10.4 «Варианты»).
|
- [ ] Push-уведомления (APNs/FCM) — ОТЛОЖЕН (нет особой потребности; см. WALKTHROUGH раздел 10.4 «Варианты»).
|
||||||
Пробовал (2026-08-29): mod_unified_push из apt-prosody-modules НЕ подходит — требует util.jwt (API 0.12), а контейнер на 0.11.9.
|
Пробовал (2026-08-29): mod_unified_push из apt-prosody-modules НЕ подходит — требует util.jwt (API 0.12), а контейнер на 0.11.9.
|
||||||
|
|||||||
+54
-2
@@ -513,9 +513,61 @@ python3 -c "import socket,ssl; ..." # см. раздел 8
|
|||||||
curl -sS https://upload.nixg.ru/upload
|
curl -sS https://upload.nixg.ru/upload
|
||||||
```
|
```
|
||||||
|
|
||||||
## 12. TODO (следующие шаги)
|
## 12. Slidgram: регистрация telegram-аккаунта (пошагово)
|
||||||
|
|
||||||
|
> Мост уже подключён к Prosody (внешний компонент telegram.nixg.ru, трафик TG → SOCKS5
|
||||||
|
> 172.27.0.1:1080 → VPS01). Осталось привязать аккаунт. Вся механика — из кода slidgram
|
||||||
|
> (в контейнере icq-slidgram: /venv/.../slidgram/gateway.py) и офлайн-доков docs/slidgram/.
|
||||||
|
|
||||||
|
### 12.1 Что понадобится
|
||||||
|
- **api_id и api_hash** — свои, с https://my.telegram.org/apps (завести приложение Telegram).
|
||||||
|
⚠️ HTTP my.telegram.org из РФ открывается в обычном браузере на вашей машине (туннель для этого не нужен).
|
||||||
|
- XMPP-клиент под `admin@nixg.ru`: веб-чат **https://chat.nixg.ru** (Converse) или Gajim.
|
||||||
|
Converse поддерживает ad-hoc команды; либо просто отправить сообщение `register` — оба способа ниже.
|
||||||
|
|
||||||
|
### 12.2 Способ A: ad-hoc команда «Register» (Converse/Gajim)
|
||||||
|
1. Открыть https://chat.nixg.ru, войти как admin@nixg.ru.
|
||||||
|
2. Начать чат с контактом **telegram.nixg.ru** (JID компонента — без @ и логина).
|
||||||
|
3. В Converse: открыть карточку контакта (info) → там пункт «Команды» (adhoc) → выбрать **Register**.
|
||||||
|
В Gajim: Правка → Команды (или иконка) → Register.
|
||||||
|
4. Заполнить форму: **phone** (в международном формате `+7...`), **api_id**, **api_hash**.
|
||||||
|
5. На ваш Telegram придёт SMS/код подтверждения → ввести его в форму (поле «Confirmation code»).
|
||||||
|
6. Если у TG-аккаунта включён 2FA-пароль — мост спросит пароль (поле password).
|
||||||
|
|
||||||
|
### 12.3 Способ B: текстовое сообщение «register» (Conversations и др.)
|
||||||
|
1. Отправить сообщение `register` на адрес **telegram.nixg.ru**.
|
||||||
|
2. Мост ответит формой-запросом: ввести номер телефона, api_id, api_hash (и код).
|
||||||
|
3. Далее как в способе A: код из SMS + (опционально) 2FA-пароль.
|
||||||
|
|
||||||
|
### 12.4 Что происходит под капотом (для диагностики)
|
||||||
|
- Мост сначала `Client.connect()` — если уже залогинен, сообщает «two factor» / завершает;
|
||||||
|
- затем `send_code(phone)` → возвращает `phone_code_hash` (80 сек на ввод кода,
|
||||||
|
`REGISTRATION_AUTH_CODE_TIMEOUT` в slidgram/config.py);
|
||||||
|
- `sign_in(phone, code_hash, code)` — при 2FA ловит `SessionPasswordNeeded` → запрашивает пароль;
|
||||||
|
- после успеха аккаунт привязан: контакты появляются в ростере XMPP как
|
||||||
|
`123456789@telegram.nixg.ru` (puppet-JID), сообщения Telegram дублируются в XMPP.
|
||||||
|
- Всё это идёт через **MTProto поверх нашего SOCKS5** (SLIDGRAM_PROXY) — из РФ работает.
|
||||||
|
|
||||||
|
### 12.5 Проверка после регистрации
|
||||||
|
```bash
|
||||||
|
docker logs icq-slidgram --since 10m | grep -iE 'register|login|session|avatar|error'
|
||||||
|
docker exec icq-prosody prosodyctl list 2>/dev/null # зарегистрированные XMPP-аккаунты
|
||||||
|
```
|
||||||
|
- В Converse после входа появится список контактов Telegram (появятся с задержкой синхронизации ростера).
|
||||||
|
- Переписка: сообщения, пришедшие в Telegram, будут дублироваться в XMPP-диалог с puppet-контактом.
|
||||||
|
|
||||||
|
### 12.6 Известные грабли
|
||||||
|
- **Код/пароль 2FA** — вводить быстро: таймаут ввода кода 60 сек (по умолчанию).
|
||||||
|
- **api_id/api_hash** нельзя «забыть» ввести: без них мост сам запросит их в форме
|
||||||
|
(если не заданы в конфиге `API_ID`/`API_HASH`).
|
||||||
|
- **На одном номере** — только один аккаунт на сервер (при повторной регистрации с тем же
|
||||||
|
номером мост ответит «Someone is already using this phone number on this server»).
|
||||||
|
- **Аватары** могут не подтягиваться (URL-загрузка web.telegram.org не ходит через SOCKS5) —
|
||||||
|
это отдельная задача в STATUS.md; на приём сообщений не влияет.
|
||||||
|
|
||||||
|
## 13. TODO (следующие шаги)
|
||||||
- [x] ~~OMEMO (XEP-0384)~~ — ВЫПОЛНЕНО: раздел 9; скрипт scripts/omemo_check.py.
|
- [x] ~~OMEMO (XEP-0384)~~ — ВЫПОЛНЕНО: раздел 9; скрипт scripts/omemo_check.py.
|
||||||
- [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. venv уже создан (/opt/icq/.venv: aiohttp, slixmpp).
|
- [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. venv уже создан (/opt/icq/.venv: aiohttp, slixmpp).
|
||||||
- [ ] Мосты mautrix-telegram / mautrix-whatsapp — Этап 4 (нужен Prosody mod_component / external component).
|
- [ ] Мосты mautrix-whatsapp — Этап 4 (нужен Prosody mod_component / external component). [Telegram уже на Slidge]
|
||||||
- [ ] Push-уведомления APNs/FCM — ОТЛОЖЕНО, варианты в разделе 10.4.
|
- [ ] Push-уведомления APNs/FCM — ОТЛОЖЕНО, варианты в разделе 10.4.
|
||||||
- [ ] Продление LE-серта nixg.ru — 2026-10-15 10:00 (cron Hermes, job ca2a23a34905); процедура в разделе 4.
|
- [ ] Продление LE-серта nixg.ru — 2026-10-15 10:00 (cron Hermes, job ca2a23a34905); процедура в разделе 4.
|
||||||
Reference in New Issue
Block a user