docs: опыт 2026-08-29 — грабли mod_privilege на 0.11, миллион приглашений, flood wait, план сборки Prosody 0.12 (WALKTHROUGH §12.7-12.8, STATUS, BRIDGE-TELEGRAM)

This commit is contained in:
2026-08-29 18:20:50 +00:00
parent 770c9fa78f
commit 498d79e6df
3 changed files with 69 additions and 2 deletions
+42
View File
@@ -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).