Files
icq/BRIDGE-TELEGRAM.md
T

52 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Мост XMPP↔Telegram (Slidge/slidgram) — детали и задачи
> Вспомогательный файл для STATUS.md; обновлено: 2026-08-29
> Офлайн-доки: docs/slidgram/ (копия slidge.im)
## Статус: ПОДКЛЮЧЁН (2026-08-29)
- Prosody: `component_ports 5347` + `Component "telegram.nixg.ru"` с `component_secret`
(⚠️ В Prosody 0.11 секрет задаётся ТОЛЬКО в секции Component через `component_secret=`;
глобальная таблица `component_secrets` НЕ читается — была засада not-authorized).
- Образ: кастомный `slidgram-proxy:latest` = codeberg.org/slidge/slidgram:latest + патчи
telegram.py/gateway.py (прокидывают SOCKS5 из env `SLIDGRAM_PROXY` в Pyrogram) + pysocks.
- docker-compose: сервис `slidgram` (icq-slidgram), env `SLIDGE_JID/SECRET/SERVER/PORT`,
`SLIDGRAM_PROXY=socks5://172.27.0.1:1080`, том ./slidgram/data (uid 10000, иначе SQLite
«unable to open database file»).
- ✅ **Telegram App api_id/api_hash прописаны (2026-08-29)**: env `SLIDGE__SLIDGRAM_API_ID` и
`SLIDGE__SLIDGRAM_API_HASH` (значения в docker-compose.yml; ⚠️ префикс плагина = `SLIDGE__SLIDGRAM_`
с ДВОЙНЫМ подчёркиванием — вычисляется в main.py как `SLIDGE_` + `_SLIDGRAM_`; вариант
`SLIDGE_SLIDGRAM_*` НЕ работает). Подтверждено эмуляцией set_conf: API_ID/API_HASH читаются.
После правки env — пересоздать контейнер (`docker compose up -d --force-recreate --no-deps slidgram`),
простой restart НЕ подхватывает новые env.
- Трафик Telegram → SOCKS5 172.27.0.1:1080 (SSH-туннель VPS01) — проверено: SOCKS5→MTProto DC1 OK.
- ✅ **mod_privilege (XEP-0356)**: community-модуль → ./modules/mod_privilege.lua, включён в
modules_enabled + privileged_entities в VirtualHost для telegram.nixg.ru (roster sync, legacy carbons).
## Регистрация TG-аккаунта (ОЖИДАЕТ действий)
Осталось: admin@nixg.ru → команда `register` на telegram.nixg.ru (api_id/api_hash уже в конфиге,
формой спрашиваться не будут; вводится только номер телефона).
**Пошаговая инструкция: WALKTHROUGH.md → раздел 12** (оба способа: ad-hoc Register / сообщение
«register»; код/2FA — через MTProto по SOCKS5-туннелю, работает из РФ).
## ЗАДАЧА: аватары telegram-пользователей — загрузка таймаутит
- **Симптом**: аватары контактов/компонента не подтягиваются («загрузка аватаров/логотипа с
web.telegram.org таймаутит»).
- **Корень** (по коду в контейнере icq-slidgram): HTTP-часть slidge НЕ ходит через SOCKS5 —
`slidge/core/gateway.py:399` создаёт `aiohttp.ClientSession()` без `proxy=`, и
`slidge/db/avatar.py` (`self.http.get(url)`) качает 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`. Для SOCKS5 в docker-сети — `ALL_PROXY=socks5://172.27.0.1:1080`
+ `trust_env=True`, но aiohttp SOCKS5 работает только через aiohttp-socks (доп. зависимость).
2. Прогонять URL-аватары через nginx-прокси на bigbox (rewrite → туннель) — без правок кода.
3. Аватары личных фото уже качаются через Pyrogram `download_media()` (MTProto, через SOCKS5) —
убедиться, что эта ветка используется; прямая HTTP-загрузка нужна для URL-аватаров
(web.telegram.org и т.п.).
- ⚠️ Обмен сообщениями, файлы и стикеры НЕ затрагиваются — это косметика (аватарки в ростере).
## Известные мелочи
- Залипший localStorage браузера со старым JID admin@chat.nixg.ru → Converse шлёт host-unknown.
Лечится: localStorage.removeItem("conversejs-session-jid") или инкогнито.