diff --git a/BRIDGE-TELEGRAM.md b/BRIDGE-TELEGRAM.md index 9e05748..f72f483 100644 --- a/BRIDGE-TELEGRAM.md +++ b/BRIDGE-TELEGRAM.md @@ -21,6 +21,20 @@ - Трафик 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). + ⚠️ На Prosody 0.11.9 модуль из prosody-modules НЕ работает (зовёт API 0.12 `module:send_iq`). + Стоит стаб-ACK (коммит 770c9fa): модуль отвечает ACK, не падает, но bookmarks/MDS + через XEP-0356 не выполняются → слайдж шлёт приглашения в группы вручную (см. ниже). + Полное решение — апгрейд Prosody на 0.12 (нативный XEP-0356), задача в STATUS.md. + +## Наблюдения после регистрации (2026-08-29) +- **«Миллион запросов на подключение к чату» в Pidgin**: слайдж шлёт gateway-приглашение + на каждую группу (`always_invite_when_adding_bookmarks: true` + bookmarks не пишутся из-за + сломанного mod_privilege → fallback на ручные приглашения). Не баг как таковой; уйдёт после + апгрейда 0.12. Временно: `always_invite_when_adding_bookmarks: false` в preferences (SQLite user_account). +- **Flood wait при первом старте**: `WARNING:slidgram.telegram:Flood in get_chat(...) sleep for N sec` + при синхронизации большого аккаунта (1602 контакта). Норма; кэш заполнится — паузы уйдут. +- **Контакты «пропали» из ростера после рестарта**: рostер на сервере цел (проверено, 1602). + Клиент при переподключении сам запрашивает рostер; если в Pidgin пусто — Disable/Enable аккаунта. ## Регистрация TG-аккаунта — ВЫПОЛНЕНА (2026-08-29) - estorozhenko@nixg.ru → команда `register` (отправлена из Pidgin на адрес telegram.nixg.ru, diff --git a/STATUS.md b/STATUS.md index 58466f6..0b05f19 100644 --- a/STATUS.md +++ b/STATUS.md @@ -28,12 +28,23 @@ Self-hosted XMPP-мессенджер на **nixg.ru** (Prosody 0.11.9 + веб- - [ ] ~~**Регистрация TG-аккаунта в мосте**~~ — ВЫПОЛНЕНО 2026-08-29 (estorozhenko@nixg.ru) - [ ] **Аватары TG в мосте таймаутят** — HTTP-часть slidge не ходит через SOCKS5 (URL web.telegram.org недоступны из РФ). Косметика, на переписку не влияет. Разбор и варианты: BRIDGE-TELEGRAM.md. +- [ ] **Сборка Prosody 0.12.x (система сборки)** — ЗАПЛАНИРОВАНО (сделать позже): + официальный Docker-образ не имеет 0.12 (latest=0.11.9); сторонние nightly не годятся. + Собрать свой образ из исходников prosody-0.12.6.tar.gz (WALKTHROUGH §12.8). + Закроет: нативный XEP-0356 (mod_privilege больше не нужен → «миллион приглашений» + в Pidgin исчезнет, bookmarks заработают), push-уведомления (util.jwt), безопасность. - [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. (venv готов: /opt/icq/.venv) - [ ] Мост mautrix (WhatsApp) — Этап 4; нужен external component. [Telegram уже на Slidge] -- [ ] Push-уведомления — ОТЛОЖЕН: Prosody 0.11 не тянет mod_unified_push (нужен util.jwt из 0.12); - варианты (XEP-0357 mod_push / апгрейд до 0.12) — WALKTHROUGH §10.4 +- [ ] Push-уведомления — ОТЛОЖЕН до апгрейда 0.12 (нужен util.jwt); варианты — WALKTHROUGH §10.4 - [ ] MAM: ошибка при логине «max_items: not a number» — проверить настройку mod_mam (не мешает чату) +## Известные грабли (2026-08-29) +- mod_privilege (XEP-0356) сломан на 0.11.9 (module:send_iq — API 0.12). Стоит стаб-ACK (коммит 770c9fa): + Prosody стабилен, но bookmarks/MDS через XEP-0356 не работают → слайдж шлёт приглашения в группы вручную. + Полное решение — апгрейд 0.12. Детали: WALKTHROUGH §12.7. +- Рostер TG-контактов цел на сервере (1602). Если контакты «пропали» в Pidgin после рестарта — + Disable/Enable аккаунта (клиент сам скачает рostер). Не трогать сервер. + ## Быстрые команды ```bash cd /opt/icq && docker compose ps diff --git a/WALKTHROUGH.md b/WALKTHROUGH.md index 2c3cdfe..80e9e39 100644 --- a/WALKTHROUGH.md +++ b/WALKTHROUGH.md @@ -565,6 +565,48 @@ docker exec icq-prosody prosodyctl list 2>/dev/null # зарегистриро - **Аватары** могут не подтягиваться (URL-загрузка web.telegram.org не ходит через SOCKS5) — это отдельная задача в STATUS.md; на приём сообщений не влияет. +### 12.7 Засады 2026-08-29 (после регистрации estorozhenko@nixg.ru) +- **mod_privilege (XEP-0356) ломает Prosody 0.11.9**: community-модуль из prosody-modules + рассчитан на 0.12 и вызывает `module:send_iq()` (API 0.12), которого в 0.11 нет → + traceback `attempt to call method 'send_iq' (a nil value)` при каждом privileged IQ. + Последствия: слайдж висит на IqTimeout при создании MDS-узла / записи bookmarks, + после рестартов контакты TG пропадали из ростера (на сервере рostер цел, клиент + просто не получал push). +- **Фикс (0.11-совместимый стаб)**: в `/opt/icq/modules/mod_privilege.lua` вызов + `module:send_iq(wrapped_iq, newsession):next(...)` заменён на стаб-ACK — модуль + отвечает слайджу `st.reply(stanza)` (ACK) и НЕ пересылает IQ от имени юзера. + Prosody перестаёт падать, слайдж не перезапускается в цикле. Цена: bookmarks/MDS + через XEP-0356 не работают, слайдж шлёт приглашения в группы вручную. + Коммит: 770c9fa. +- **«Миллион запросов на подключение к чату» в Pidgin** — следствие двух вещей: + 1) `always_invite_when_adding_bookmarks: true` в preferences пользователя + (slidge шлёт gateway-приглашение на КАЖДУЮ группу при добавлении закладки); + 2) bookmarks не записываются (mod_privilege сломан) → слайдж падает в fallback + и шлёт приглашения вручную на каждый чат. + Временное решение: смириться до апгрейда на 0.12 (там XEP-0356 нативный); + альтернатива — `always_invite_when_adding_bookmarks: false` в preferences + (запись: slidge.core.session — user.preferences, изменение в SQLite `user_account`). +- **Flood wait от Telegram при первом старте**: слайдж с большим аккаунтом + (1602 контакта) при старте тянет инфу о каждом чате/контакте → Telegram банит + частые запросы (`WARNING:slidgram.telegram:Flood in get_chat(...), sleep for N seconds`). + Не баг: после кэширования паузы исчезают. Проверка БД: `docker exec icq-slidgram + python3 -c "import sqlite3;c=sqlite3.connect('/var/lib/slidge/slidge.sqlite');print(c.execute('select count(*) from contact').fetchone())"`. +- **Контакты «пропали» после рестарта сервера** — на самом деле рostер цел на сервере + (проверка: slixmpp roster get → 1602 telegram-контакта). Клиент (Pidgin) при + переподключении должен сам запросить рostер (Disable/Enable аккаунта). Если нет — + проблема в клиентском кэше, не в сервере. + +### 12.8 Планируется: апгрейд Prosody 0.11.9 → 0.12.x (система сборки) +- **Зачем**: 0.12 имеет нативный XEP-0356 (mod_privilege больше не нужен), util.jwt + (mod_unified_push → push-уведомления), исправления безопасности. +- **Проблема**: официальный Docker-образ `prosody/prosody` не обновлён до 0.12 + (latest = 0.11.9; теги только 0.9–0.11 + trunk). Стабильный 0.12.6 доступен + только исходниками: https://prosody.im/downloads/source/prosody-0.12.6.tar.gz +- **Сторонние образы**: `prosodyim/prosody:0.12` (nightly 236 от 2026-04-29) и + `prosodyim/prosody:13.0` (nightly 98 от 2026-06-07) — НЕ для продакшена. +- **Решение**: собрать свой образ из исходников 0.12.6 (Dockerfile на базе + prosody/prosody:0.11.9 + tar.gz 0.12.6). См. STATUS.md «Сборка Prosody 0.12». + ## 13. TODO (следующие шаги) - [x] ~~OMEMO (XEP-0384)~~ — ВЫПОЛНЕНО: раздел 9; скрипт scripts/omemo_check.py. - [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. venv уже создан (/opt/icq/.venv: aiohttp, slixmpp).