mirror of
https://github.com/openmax-server/server.git
synced 2026-05-13 09:15:49 +00:00
fa0ed34adc1a4dade4bb01fa7fc052cf823d6180
Десктопный MAX подключается через TCP (mobile-протокол) и парсит
msgpack по фиксированной схеме. Если в сообщении выпадает любое из
полей — клиент молча обрывает соединение. После 87cfc19 как раз
такие условные `if elements: ...` / `if link: ...` (а link и
reaction_info там всегда были `{}`, то есть falsy) вырезали поля
из ответа CHAT_HISTORY и MSG_SEND, чем и сломали историю.
- src/common/tools.py: новый build_message_dict() — единая сборка
тела сообщения, где все поля (id, cid, time, type, sender, text,
attaches, elements, reactionInfo, link) присутствуют ВСЕГДА.
get_last_message переписан через него.
- src/oneme/processors/history.py: chat_history использует
build_message_dict вместо ручной логики с условными if-ками.
- src/oneme/processors/messages.py: msg_send.bodyMessage теперь
отдает cid / reactionInfo / link даже пустыми и приводит id
к int для mobile, str для web.
Цепная польза: auth.py LOGIN bootstrap (через generate_chats →
get_last_message) и search.py тоже теперь шлют корректную схему.
Caution
Проект находится на ранней стадии разработки и вероятно полон багов.
Использование в профессиональных средах не рекомендовано.
OpenMAX
Эмулятор сервера MAX и ТамТам
Требования
- Python 3.12+ (поддержка версий ниже не гарантирована)
- MariaDB, MySQL или SQLite
- Уметь патчить клиент MAX или собирать Komet из исходного кода (естественно с заменой сервера)
- Сертификат и приватный ключ X.509 (для тестирования сервера можно сгенерировать самоподписанный:
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365)
Требования к клиенту
Клиент может быть практически любым, главное условие - чтобы он был совместим с официальным сервером (api.oneme.ru / api.tamtam.chat).
Дополнительная информация
Description
Languages
Python
100%