Support report bad avatar function on server side.
This commit is contained in:
@@ -79,3 +79,9 @@ void
|
|||||||
ServerDBGeneric::EndGame(DB_id /*gameId*/)
|
ServerDBGeneric::EndGame(DB_id /*gameId*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ServerDBGeneric::AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id /*reportedPlayerId*/, const std::string &/*avatarHash*/, DB_id */*byPlayerId*/)
|
||||||
|
{
|
||||||
|
m_ioService->post(boost::bind(&ServerDBCallback::ReportAvatarFailed, &m_callback, requestId, replyId));
|
||||||
|
}
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ public:
|
|||||||
|
|
||||||
virtual void CreateGameSuccess(unsigned requestId, DB_id gameId) = 0;
|
virtual void CreateGameSuccess(unsigned requestId, DB_id gameId) = 0;
|
||||||
virtual void CreateGameFailed(unsigned requestId) = 0;
|
virtual void CreateGameFailed(unsigned requestId) = 0;
|
||||||
|
|
||||||
|
virtual void ReportAvatarSuccess(unsigned requestId, unsigned replyId) = 0;
|
||||||
|
virtual void ReportAvatarFailed(unsigned requestId, unsigned replyId) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ public:
|
|||||||
virtual void SetGamePlayerPlace(DB_id gameId, DB_id playerId, unsigned place);
|
virtual void SetGamePlayerPlace(DB_id gameId, DB_id playerId, unsigned place);
|
||||||
virtual void EndGame(DB_id gameId);
|
virtual void EndGame(DB_id gameId);
|
||||||
|
|
||||||
|
virtual void AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id reportedPlayerId, const std::string &avatarHash, DB_id *byPlayerId);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
boost::shared_ptr<boost::asio::io_service> m_ioService;
|
boost::shared_ptr<boost::asio::io_service> m_ioService;
|
||||||
ServerDBCallback &m_callback;
|
ServerDBCallback &m_callback;
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ public:
|
|||||||
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName) = 0;
|
virtual void AsyncCreateGame(unsigned requestId, const std::string &gameName) = 0;
|
||||||
virtual void SetGamePlayerPlace(DB_id gameId, DB_id playerId, unsigned place) = 0;
|
virtual void SetGamePlayerPlace(DB_id gameId, DB_id playerId, unsigned place) = 0;
|
||||||
virtual void EndGame(DB_id gameId) = 0;
|
virtual void EndGame(DB_id gameId) = 0;
|
||||||
|
|
||||||
|
virtual void AsyncReportAvatar(unsigned requestId, unsigned replyId, DB_id reportedPlayerId, const std::string &avatarHash, DB_id *byPlayerId) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ public:
|
|||||||
virtual void AsyncCreateGame(unsigned /*requestId*/, const std::string &/*gameName*/) {}
|
virtual void AsyncCreateGame(unsigned /*requestId*/, const std::string &/*gameName*/) {}
|
||||||
virtual void SetGamePlayerPlace(DB_id /*gameId*/, DB_id /*playerId*/, unsigned /*place*/) {}
|
virtual void SetGamePlayerPlace(DB_id /*gameId*/, DB_id /*playerId*/, unsigned /*place*/) {}
|
||||||
virtual void EndGame(DB_id /*gameId*/) {}
|
virtual void EndGame(DB_id /*gameId*/) {}
|
||||||
|
|
||||||
|
virtual void AsyncReportAvatar(unsigned /*requestId*/, unsigned /*replyId*/, DB_id /*reportedPlayerId*/, const std::string &/*avatarHash*/, DB_id */*byPlayerId*/) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _SERVERDBNOACTION_H_
|
#endif // _SERVERDBNOACTION_H_
|
||||||
|
|||||||
@@ -307,6 +307,30 @@ AbstractServerGameStateReceiving::ProcessPacket(boost::shared_ptr<ServerGame> se
|
|||||||
else if (packet->GetMsg()->present == PokerTHMessage_PR_reportAvatarMessage)
|
else if (packet->GetMsg()->present == PokerTHMessage_PR_reportAvatarMessage)
|
||||||
{
|
{
|
||||||
ReportAvatarMessage_t *netReport = &packet->GetMsg()->choice.reportAvatarMessage;
|
ReportAvatarMessage_t *netReport = &packet->GetMsg()->choice.reportAvatarMessage;
|
||||||
|
boost::shared_ptr<PlayerData> tmpPlayer = server->GetPlayerDataByUniqueId(netReport->reportedPlayerId);
|
||||||
|
MD5Buf tmpMD5;
|
||||||
|
memcpy(tmpMD5.GetData(), netReport->reportedAvatar.buf, MD5_DATA_SIZE);
|
||||||
|
if (tmpPlayer && tmpPlayer->GetDBId() && tmpPlayer->GetAvatarMD5() == tmpMD5)
|
||||||
|
{
|
||||||
|
DB_id myDBid = session.playerData->GetDBId();
|
||||||
|
// Do not use the "game" database object, but the global one.
|
||||||
|
server->GetLobbyThread().GetDatabase()->AsyncReportAvatar(
|
||||||
|
session.playerData->GetUniqueId(),
|
||||||
|
tmpPlayer->GetUniqueId(),
|
||||||
|
tmpPlayer->GetDBId(),
|
||||||
|
tmpPlayer->GetAvatarMD5().ToString(),
|
||||||
|
myDBid != 0 ? &myDBid : NULL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
boost::shared_ptr<NetPacket> packet(new NetPacket(NetPacket::Alloc));
|
||||||
|
packet->GetMsg()->present = PokerTHMessage_PR_reportAvatarAckMessage;
|
||||||
|
ReportAvatarAckMessage_t *netReportAck = &packet->GetMsg()->choice.reportAvatarAckMessage;
|
||||||
|
netReportAck->reportedPlayerId = netReport->reportedPlayerId;
|
||||||
|
netReportAck->reportResult = reportResult_avatarReportInvalid;
|
||||||
|
server->GetLobbyThread().GetSender().Send(session.sessionData, packet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -157,6 +157,16 @@ public:
|
|||||||
LOG_ERROR("DB create game failed for request " << requestId);
|
LOG_ERROR("DB create game failed for request " << requestId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void ReportAvatarSuccess(unsigned requestId, unsigned replyId)
|
||||||
|
{
|
||||||
|
m_server.SendReportAvatarResult(requestId, replyId, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void ReportAvatarFailed(unsigned requestId, unsigned replyId)
|
||||||
|
{
|
||||||
|
m_server.SendReportAvatarResult(requestId, replyId, false);
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ServerLobbyThread &m_server;
|
ServerLobbyThread &m_server;
|
||||||
};
|
};
|
||||||
@@ -1623,6 +1633,23 @@ ServerLobbyThread::UserInvalid(unsigned playerId)
|
|||||||
SessionError(m_sessionManager.GetSessionByUniquePlayerId(playerId, true), ERR_NET_INVALID_PASSWORD);
|
SessionError(m_sessionManager.GetSessionByUniquePlayerId(playerId, true), ERR_NET_INVALID_PASSWORD);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ServerLobbyThread::SendReportAvatarResult(unsigned byPlayerId, unsigned reportedPlayerId, bool success)
|
||||||
|
{
|
||||||
|
SessionWrapper session = m_sessionManager.GetSessionByUniquePlayerId(byPlayerId);
|
||||||
|
if (!session.sessionData)
|
||||||
|
session = m_gameSessionManager.GetSessionByUniquePlayerId(byPlayerId);
|
||||||
|
if (session.sessionData)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<NetPacket> packet(new NetPacket(NetPacket::Alloc));
|
||||||
|
packet->GetMsg()->present = PokerTHMessage_PR_reportAvatarAckMessage;
|
||||||
|
ReportAvatarAckMessage_t *netReportAck = &packet->GetMsg()->choice.reportAvatarAckMessage;
|
||||||
|
netReportAck->reportedPlayerId = reportedPlayerId;
|
||||||
|
netReportAck->reportResult = success ? reportResult_avatarReportAccepted : reportResult_avatarReportInvalid;
|
||||||
|
GetSender().Send(session.sessionData, packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServerLobbyThread::UserBlocked(unsigned playerId)
|
ServerLobbyThread::UserBlocked(unsigned playerId)
|
||||||
{
|
{
|
||||||
@@ -1632,7 +1659,7 @@ ServerLobbyThread::UserBlocked(unsigned playerId)
|
|||||||
void
|
void
|
||||||
ServerLobbyThread::RequestPlayerAvatar(SessionWrapper session)
|
ServerLobbyThread::RequestPlayerAvatar(SessionWrapper session)
|
||||||
{
|
{
|
||||||
if (!session.playerData.get())
|
if (!session.playerData)
|
||||||
throw ServerException(__FILE__, __LINE__, ERR_NET_INVALID_SESSION, 0);
|
throw ServerException(__FILE__, __LINE__, ERR_NET_INVALID_SESSION, 0);
|
||||||
// Ask the client to send its avatar.
|
// Ask the client to send its avatar.
|
||||||
boost::shared_ptr<NetPacket> packet(new NetPacket(NetPacket::Alloc));
|
boost::shared_ptr<NetPacket> packet(new NetPacket(NetPacket::Alloc));
|
||||||
|
|||||||
@@ -149,6 +149,7 @@ protected:
|
|||||||
void UserValid(unsigned playerId, const DBPlayerData &dbPlayerData);
|
void UserValid(unsigned playerId, const DBPlayerData &dbPlayerData);
|
||||||
void UserInvalid(unsigned playerId);
|
void UserInvalid(unsigned playerId);
|
||||||
void UserBlocked(unsigned playerId);
|
void UserBlocked(unsigned playerId);
|
||||||
|
void SendReportAvatarResult(unsigned byPlayerId, unsigned reportedPlayerId, bool success);
|
||||||
void RequestPlayerAvatar(SessionWrapper session);
|
void RequestPlayerAvatar(SessionWrapper session);
|
||||||
void TimerRemoveGame(const boost::system::error_code &ec);
|
void TimerRemoveGame(const boost::system::error_code &ec);
|
||||||
void TimerRemovePlayer(const boost::system::error_code &ec);
|
void TimerRemovePlayer(const boost::system::error_code &ec);
|
||||||
|
|||||||
Reference in New Issue
Block a user