mirror of
https://github.com/openmax-server/server.git
synced 2026-05-12 08:48:15 +00:00
MAX: исправление уязвимости с избранными
This commit is contained in:
@@ -204,21 +204,22 @@ class Tools:
|
||||
|
||||
if include_favourites:
|
||||
# Получаем последнее сообщение из избранного
|
||||
favouriteChatId = -senderId
|
||||
message, messageTime = await self.get_last_message(
|
||||
senderId, db_pool, protocol_type=protocol_type
|
||||
favouriteChatId, db_pool, protocol_type=protocol_type
|
||||
)
|
||||
|
||||
# ID избранного
|
||||
# ID избранного для клиента
|
||||
chatId = senderId ^ senderId
|
||||
|
||||
# Получаем последнюю активность участника (отправителя) в избранном
|
||||
# Получаем последнюю активность в избранном
|
||||
participants = await self.get_participant_last_activity(
|
||||
senderId, [senderId], db_pool
|
||||
favouriteChatId, [senderId], db_pool
|
||||
)
|
||||
|
||||
# Получаем ID предыдущего сообщения для избранного (чат ID = senderId)
|
||||
# Получаем ID предыдущего сообщения для избранного
|
||||
prevMessageId = await self.get_previous_message_id(
|
||||
senderId, db_pool, protocol_type=protocol_type
|
||||
favouriteChatId, db_pool, protocol_type=protocol_type
|
||||
)
|
||||
|
||||
# Хардкодим в лист чатов избранное
|
||||
|
||||
@@ -23,16 +23,17 @@ class HistoryProcessors(BaseProcessor):
|
||||
messages = []
|
||||
|
||||
# Если пользователь хочет получить историю из избранного,
|
||||
# то выставляем в качестве ID чата его ID
|
||||
if chatId == (senderId ^ senderId):
|
||||
chatId = senderId
|
||||
# то выставляем в качестве ID чата отрицательный ID отправителя
|
||||
isFavourite = chatId == (senderId ^ senderId)
|
||||
if isFavourite:
|
||||
chatId = -senderId
|
||||
|
||||
# Проверяем, существует ли чат
|
||||
async with self.db_pool.acquire() as conn:
|
||||
async with conn.cursor() as cursor:
|
||||
# Проверяем состоит ли пользователь в чате,
|
||||
# только в случае того, если это не избранное
|
||||
if chatId != senderId:
|
||||
if not isFavourite:
|
||||
await cursor.execute("SELECT * FROM chats WHERE id = %s", (chatId,))
|
||||
chat = await cursor.fetchone()
|
||||
|
||||
|
||||
@@ -88,9 +88,9 @@ class MessagesProcessors(BaseProcessor):
|
||||
chatId = userId ^ senderId
|
||||
|
||||
# Если клиент хочет отправить сообщение в избранное,
|
||||
# то выставляем в качестве ID чата ID отправителя
|
||||
# то выставляем в качестве ID чата отрицательный ID отправителя
|
||||
if chatId == (senderId ^ senderId):
|
||||
chatId = senderId
|
||||
chatId = -senderId
|
||||
participants = [senderId]
|
||||
else:
|
||||
# Если все таки клиент хочет отправить сообщение в нормальный чат,
|
||||
@@ -143,7 +143,7 @@ class MessagesProcessors(BaseProcessor):
|
||||
participant,
|
||||
{
|
||||
"eventType": "new_msg",
|
||||
"chatId": 0 if chatId == (senderId ^ senderId) else chatId,
|
||||
"chatId": 0 if chatId == -senderId else chatId,
|
||||
"message": bodyMessage,
|
||||
"prevMessageId": lastMessageId,
|
||||
"time": messageTime,
|
||||
@@ -153,7 +153,7 @@ class MessagesProcessors(BaseProcessor):
|
||||
|
||||
# Данные пакета
|
||||
payload = {
|
||||
"chatId": 0 if chatId == senderId else chatId,
|
||||
"chatId": 0 if chatId == -senderId else chatId,
|
||||
"message": bodyMessage,
|
||||
"unread": 0,
|
||||
"mark": messageTime
|
||||
|
||||
@@ -223,12 +223,12 @@ class SearchProcessors(BaseProcessor):
|
||||
)
|
||||
)
|
||||
else:
|
||||
# Получаем последнее сообщение из чата
|
||||
# Получаем последнее сообщение из избранного
|
||||
message, messageTime = await self.tools.get_last_message(
|
||||
senderId, self.db_pool, protocol_type=self.type
|
||||
-senderId, self.db_pool, protocol_type=self.type
|
||||
)
|
||||
|
||||
# ID избранного
|
||||
# ID избранного для клиента
|
||||
chatId = senderId ^ senderId
|
||||
|
||||
# Добавляем чат в список
|
||||
|
||||
@@ -135,7 +135,7 @@ class MessagesProcessors(BaseProcessor):
|
||||
participant,
|
||||
{
|
||||
"eventType": "new_msg",
|
||||
"chatId": 0 if chatId == senderId else chatId,
|
||||
"chatId": chatId,
|
||||
"message": bodyMessage,
|
||||
"prevMessageId": lastMessageId,
|
||||
"time": messageTime,
|
||||
@@ -145,7 +145,7 @@ class MessagesProcessors(BaseProcessor):
|
||||
|
||||
# Данные пакета
|
||||
payload = {
|
||||
"chatId": 0 if chatId == senderId else chatId,
|
||||
"chatId": chatId,
|
||||
"message": bodyMessage,
|
||||
"unread": 0,
|
||||
"mark": messageTime
|
||||
|
||||
Reference in New Issue
Block a user