Files
icq/BRIDGE-TELEGRAM.md
T

46 lines
4.2 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 → 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»; api_id/api_hash с https://my.telegram.org/apps — HTTP открывается из РФ напрямую;
код/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") или инкогнито.