mirror of
https://gitverse.ru/kpa39l/icq.git
synced 2026-09-29 09:55:11 +00:00
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:
@@ -21,6 +21,20 @@
|
|||||||
- Трафик Telegram → SOCKS5 172.27.0.1:1080 (SSH-туннель VPS01) — проверено: SOCKS5→MTProto DC1 OK.
|
- Трафик Telegram → SOCKS5 172.27.0.1:1080 (SSH-туннель VPS01) — проверено: SOCKS5→MTProto DC1 OK.
|
||||||
- ✅ **mod_privilege (XEP-0356)**: community-модуль → ./modules/mod_privilege.lua, включён в
|
- ✅ **mod_privilege (XEP-0356)**: community-модуль → ./modules/mod_privilege.lua, включён в
|
||||||
modules_enabled + privileged_entities в VirtualHost для telegram.nixg.ru (roster sync, legacy carbons).
|
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)
|
## Регистрация TG-аккаунта — ВЫПОЛНЕНА (2026-08-29)
|
||||||
- estorozhenko@nixg.ru → команда `register` (отправлена из Pidgin на адрес telegram.nixg.ru,
|
- estorozhenko@nixg.ru → команда `register` (отправлена из Pidgin на адрес telegram.nixg.ru,
|
||||||
|
|||||||
@@ -28,12 +28,23 @@ Self-hosted XMPP-мессенджер на **nixg.ru** (Prosody 0.11.9 + веб-
|
|||||||
- [ ] ~~**Регистрация TG-аккаунта в мосте**~~ — ВЫПОЛНЕНО 2026-08-29 (estorozhenko@nixg.ru)
|
- [ ] ~~**Регистрация TG-аккаунта в мосте**~~ — ВЫПОЛНЕНО 2026-08-29 (estorozhenko@nixg.ru)
|
||||||
- [ ] **Аватары TG в мосте таймаутят** — HTTP-часть slidge не ходит через SOCKS5 (URL web.telegram.org
|
- [ ] **Аватары TG в мосте таймаутят** — HTTP-часть slidge не ходит через SOCKS5 (URL web.telegram.org
|
||||||
недоступны из РФ). Косметика, на переписку не влияет. Разбор и варианты: BRIDGE-TELEGRAM.md.
|
недоступны из РФ). Косметика, на переписку не влияет. Разбор и варианты: 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)
|
- [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. (venv готов: /opt/icq/.venv)
|
||||||
- [ ] Мост mautrix (WhatsApp) — Этап 4; нужен external component. [Telegram уже на Slidge]
|
- [ ] Мост mautrix (WhatsApp) — Этап 4; нужен external component. [Telegram уже на Slidge]
|
||||||
- [ ] Push-уведомления — ОТЛОЖЕН: Prosody 0.11 не тянет mod_unified_push (нужен util.jwt из 0.12);
|
- [ ] Push-уведомления — ОТЛОЖЕН до апгрейда 0.12 (нужен util.jwt); варианты — WALKTHROUGH §10.4
|
||||||
варианты (XEP-0357 mod_push / апгрейд до 0.12) — WALKTHROUGH §10.4
|
|
||||||
- [ ] MAM: ошибка при логине «max_items: not a number» — проверить настройку mod_mam (не мешает чату)
|
- [ ] 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
|
```bash
|
||||||
cd /opt/icq && docker compose ps
|
cd /opt/icq && docker compose ps
|
||||||
|
|||||||
@@ -565,6 +565,48 @@ docker exec icq-prosody prosodyctl list 2>/dev/null # зарегистриро
|
|||||||
- **Аватары** могут не подтягиваться (URL-загрузка web.telegram.org не ходит через SOCKS5) —
|
- **Аватары** могут не подтягиваться (URL-загрузка web.telegram.org не ходит через SOCKS5) —
|
||||||
это отдельная задача в STATUS.md; на приём сообщений не влияет.
|
это отдельная задача в 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 (следующие шаги)
|
## 13. TODO (следующие шаги)
|
||||||
- [x] ~~OMEMO (XEP-0384)~~ — ВЫПОЛНЕНО: раздел 9; скрипт scripts/omemo_check.py.
|
- [x] ~~OMEMO (XEP-0384)~~ — ВЫПОЛНЕНО: раздел 9; скрипт scripts/omemo_check.py.
|
||||||
- [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. venv уже создан (/opt/icq/.venv: aiohttp, slixmpp).
|
- [ ] Бот-книгоискатель (slixmpp + OPDS) — Этап 3 PRD. venv уже создан (/opt/icq/.venv: aiohttp, slixmpp).
|
||||||
|
|||||||
Reference in New Issue
Block a user