mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
4.9 KiB
4.9 KiB
Мост 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 из envSLIDGRAM_PROXYв Pyrogram) + pysocks. - docker-compose: сервис
slidgram(icq-slidgram), envSLIDGE_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)) уже ходит через прокси и работает. - Варианты решения (выбрать при реализации):
- Прокси в aiohttp-сессию: в
gateway.py:399aiohttp.ClientSession(proxy=...)(aiohttp — один прокси на сессию), либоClientSession(trust_env=True)+ envHTTP_PROXY/HTTPS_PROXY/ALL_PROXY. Для SOCKS5 в docker-сети —ALL_PROXY=socks5://172.27.0.1:1080trust_env=True, но aiohttp SOCKS5 работает только через aiohttp-socks (доп. зависимость).
- Прогонять URL-аватары через nginx-прокси на bigbox (rewrite → туннель) — без правок кода.
- Аватары личных фото уже качаются через Pyrogram
download_media()(MTProto, через SOCKS5) — убедиться, что эта ветка используется; прямая HTTP-загрузка нужна для URL-аватаров (web.telegram.org и т.п.).
- Прокси в aiohttp-сессию: в
- ⚠️ Обмен сообщениями, файлы и стикеры НЕ затрагиваются — это косметика (аватарки в ростере).
Известные мелочи
- Залипший localStorage браузера со старым JID admin@chat.nixg.ru → Converse шлёт host-unknown. Лечится: localStorage.removeItem("conversejs-session-jid") или инкогнито.