Compare commits

..

9 Commits

Author SHA1 Message Date
WowInceptionGood
c53c3cd195 Документация 2026-03-27 17:34:24 +03:00
Alexey Polyakov
77da4a1b61 И так тоже будет лучше 2026-03-22 08:41:49 +03:00
WowInceptionGood
f9b6b2c75e README: Думаю так лучше 2026-03-22 00:07:10 +03:00
WowInceptionGood
930a95453f Документация будет перенесена в другой репозиторий в ближайшее время
+ Обновил README ещё.
2026-03-22 00:06:19 +03:00
relyay
2776051b17 Grammar fix in readme.md (#27) 2026-03-16 18:59:08 +03:00
WowInceptionGood
1d4cb2d248 Из-за недавних ошибок 2026-03-16 00:12:27 +03:00
WowInceptionGood
ba6191d7e3 faq: Используйте сторонние сервера на свой страх и риск 2026-03-15 21:36:13 +03:00
Alexey Polyakov
48c74153ec Update server link format in faq/servers.md 2026-03-15 21:32:29 +03:00
Alexey Polyakov
ea9e4761bc Add mox.nyako.tk server information 2026-03-15 21:28:38 +03:00
8 changed files with 23 additions and 58 deletions

View File

@@ -1 +0,0 @@
TODO

View File

@@ -1,29 +0,0 @@
# Описание протокола TamTam по Websocket
## Основная информация
В веб версии мессенджера ТамТам используется протокол, работающий поверх Websocket.
Пакеты в этом протоколе являются текстовыми JSON данными.
Структура пакета:
```
{
ver: int,
cmd: int,
seq: int,
opcode: int,
payload: {}
}
```
* ver - версия протокола
* cmd - определяет, от кого отправлен пакет. клиент - 0, сервер - 1
* seq - порядковый номер пакета (сервер дублирует его из запроса клиента)
* opcode - команда
* payload - полезная нагрузка команды
## Команды протокола
### PING (1)
Клиент периодически отправляет пакет с командой PING и пустой нагрузкой серверу.
Сервер отвечает ему тем же.

View File

@@ -1,8 +1,8 @@
# Навигация по faq # Навигация по faq
## Работа с сервером ## Работа с сервером
[Установка сервера](install.md) - [Установка сервера](install.md)
## Патчинг клиентов ## Патчинг клиентов
[Патч мобильного клиента для Android](patch_apk.md) - [Патч мобильного клиента для Android](patch_apk.md)
[Патч мобильного клиента для IOS](patch_ipa.md) - [Патч мобильного клиента для IOS](patch_ipa.md)

View File

@@ -1,3 +1,11 @@
> [!Caution]
>
> На данной странице представлены инстансы от сторонних разработчиков.
>
> Используйте на свой страх и риск
>
# Открытые сервера # Открытые сервера
* [JustMAX](https://t.me/justmax_official) * [JustMAX](https://t.me/justmax_official)
* [mox.nyako.tk](https://t.me/opengrame/296), порт 443 (регистрация по реальному номеру)

View File

@@ -1,6 +1,6 @@
> [!Caution] > [!Caution]
> >
> Проект находится на ранней стадии разработки и вероятно полон багов. > Проект находится на ранней стадии разработки и, вероятно, полон багов.
> >
> Использование в профессиональных средах не рекомендовано. > Использование в профессиональных средах не рекомендовано.
> >
@@ -13,7 +13,7 @@ https://t.me/openmax_alerts
# Требования # Требования
- Python 3.12+ (поддержка версий ниже не гарантирована) - Python 3.12+ (поддержка версий ниже не гарантирована)
- MariaDB, MySQL или SQLite - MariaDB, MySQL или SQLite (использование последнего не рекомендуется, так как поддержка ещё в разработке)
- Уметь патчить клиент MAX или собирать Komet из исходного кода (естественно с заменой сервера) - Уметь патчить клиент MAX или собирать Komet из исходного кода (естественно с заменой сервера)
- Сертификат и приватный ключ X.509 (для тестирования сервера можно сгенерировать самоподписанный: ```openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365```) - Сертификат и приватный ключ X.509 (для тестирования сервера можно сгенерировать самоподписанный: ```openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365```)
@@ -22,5 +22,6 @@ https://t.me/openmax_alerts
Клиент может быть практически любым, главное условие - чтобы он был совместим с официальным сервером (`api.oneme.ru` / `api.tamtam.chat`). Клиент может быть практически любым, главное условие - чтобы он был совместим с официальным сервером (`api.oneme.ru` / `api.tamtam.chat`).
# Дополнительная информация # Дополнительная информация
[Faq](faq/readme.md) - [FAQ](faq/readme.md)
[Открытые сервера](faq/servers.md) - [Документация проекта](https://github.com/openmax-server/docs)
- [Публичные сервера](faq/servers.md)

View File

@@ -44,8 +44,4 @@ class ServerConfig:
### Telegram bot ### Telegram bot
telegram_bot_token = os.getenv("telegram_bot_token") or "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ" telegram_bot_token = os.getenv("telegram_bot_token") or "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ"
telegram_bot_enabled = bool(os.getenv("telegram_bot_enabled")) or True telegram_bot_enabled = bool(os.getenv("telegram_bot_enabled")) or True
telegram_whitelist_enabled = bool(os.getenv("telegram_whitelist_enabled")) or False telegram_whitelist_ids = [x.strip() for x in os.getenv("telegram_whitelist_ids", "").split(",") if x.strip()]
telegram_blacklist_enabled = bool(os.getenv("telegram_blacklist_enabled")) or False
telegram_whitelist_ids = [x.strip() for x in os.getenv("telegram_whitelist_ids", "").split(",") if x.strip()]
telegram_blacklist_ids = [x.strip() for x in os.getenv("telegram_blacklist_ids", "").split(",") if x.strip()]

View File

@@ -23,7 +23,6 @@ class Static:
REGISTRATION_SUCCESS = "registration_success" REGISTRATION_SUCCESS = "registration_success"
ACCOUNT_ALREADY_EXISTS = "account_already_exists" ACCOUNT_ALREADY_EXISTS = "account_already_exists"
ID_NOT_WHITELISTED = "id_not_whitelisted" ID_NOT_WHITELISTED = "id_not_whitelisted"
ID_BLACKLISTED = "id_blacklisted"
INTERNAL_ERROR = "internal_error" INTERNAL_ERROR = "internal_error"
INCOMING_CODE = "incoming_code" INCOMING_CODE = "incoming_code"
@@ -105,9 +104,6 @@ class Static:
"id_not_whitelisted": """ "id_not_whitelisted": """
❌ Ваш ID не находится в белом списке. ❌ Ваш ID не находится в белом списке.
""", """,
"id_blacklisted": """
❌ Ваш ID заблокирован.
""",
"internal_error": """ "internal_error": """
❌ Ошибка при регистрации аккаунта. ❌ Ошибка при регистрации аккаунта.
""", """,

View File

@@ -13,7 +13,6 @@ class TelegramBot:
self.enabled = enabled self.enabled = enabled
self.db_pool = db_pool self.db_pool = db_pool
self.whitelist_ids = whitelist_ids if whitelist_ids is not None else [] self.whitelist_ids = whitelist_ids if whitelist_ids is not None else []
self.blacklist_ids = blacklist_ids if blacklist_ids is not None else []
self.logger = logging.getLogger(__name__) self.logger = logging.getLogger(__name__)
self.msg_types = Static().BotMessageTypes() self.msg_types = Static().BotMessageTypes()
@@ -47,16 +46,11 @@ class TelegramBot:
async def handle_register(message): async def handle_register(message):
tg_id = str(message.from_user.id) tg_id = str(message.from_user.id)
# Проверка ID на наличие в белом списке и в чёрном списке # Проверка ID на наличие в белом списке
if whitelist_enabled: if tg_id not in self.whitelist_ids:
if tg_id not in self.whitelist_ids: await self.bot.send_message(message.chat.id, self.get_bot_message(self.msg_types.ID_NOT_WHITELISTED))
await self.bot.send_message(message.chat.id, self.get_bot_message(self.msg_types.ID_NOT_WHITELISTED)) return
return
elif blacklist_enabled:
if tg_id in self.blacklist_ids:
await self.bot.send_message(message.chat.id, self.get_bot_message(self.msg_types.ID_BLACKLISTED))
return
async with self.db_pool.acquire() as conn: async with self.db_pool.acquire() as conn:
async with conn.cursor() as cursor: async with conn.cursor() as cursor:
# Проверка на существование # Проверка на существование
@@ -133,4 +127,4 @@ class TelegramBot:
chat_id, self.get_bot_message(self.msg_types.INCOMING_CODE).format(phone=phone, code=code) chat_id, self.get_bot_message(self.msg_types.INCOMING_CODE).format(phone=phone, code=code)
) )
except Exception as e: except Exception as e:
self.logger.error(f"Ошибка отправки кода в Telegram: {e}") self.logger.error(f"Ошибка отправки кода в Telegram: {e}")