Add message callbacks to client admin functions.
This commit is contained in:
@@ -789,6 +789,39 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
|
||||
break;
|
||||
}
|
||||
client->GetCallback().SignalNetClientMsgBox(msgCode);
|
||||
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_AdminRemoveGameAckMessage) {
|
||||
const AdminRemoveGameAckMessage &netRemoveAck = tmpPacket->GetMsg()->adminremovegameackmessage();
|
||||
unsigned msgCode;
|
||||
switch (netRemoveAck.removegameresult()) {
|
||||
case AdminRemoveGameAckMessage::gameRemoveAccepted:
|
||||
msgCode = MSG_NET_ADMIN_REMOVE_GAME_ACCEPTED;
|
||||
break;
|
||||
default:
|
||||
msgCode = MSG_NET_ADMIN_REMOVE_GAME_REJECTED;
|
||||
break;
|
||||
}
|
||||
client->GetCallback().SignalNetClientMsgBox(msgCode);
|
||||
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_AdminBanPlayerAckMessage) {
|
||||
const AdminBanPlayerAckMessage &netBanAck = tmpPacket->GetMsg()->adminbanplayerackmessage();
|
||||
unsigned msgCode;
|
||||
switch (netBanAck.banplayerresult()) {
|
||||
case AdminBanPlayerAckMessage::banPlayerAccepted:
|
||||
msgCode = MSG_NET_ADMIN_BAN_PLAYER_ACCEPTED;
|
||||
break;
|
||||
case AdminBanPlayerAckMessage::banPlayerPending:
|
||||
msgCode = MSG_NET_ADMIN_BAN_PLAYER_PENDING;
|
||||
break;
|
||||
case AdminBanPlayerAckMessage::banPlayerNoDB:
|
||||
msgCode = MSG_NET_ADMIN_BAN_PLAYER_NODB;
|
||||
break;
|
||||
case AdminBanPlayerAckMessage::banPlayerDBError:
|
||||
msgCode = MSG_NET_ADMIN_BAN_PLAYER_DBERROR;
|
||||
break;
|
||||
default:
|
||||
msgCode = MSG_NET_ADMIN_BAN_PLAYER_REJECTED;
|
||||
break;
|
||||
}
|
||||
client->GetCallback().SignalNetClientMsgBox(msgCode);
|
||||
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_StatisticsMessage) {
|
||||
const StatisticsMessage &netStatistics = tmpPacket->GetMsg()->statisticsmessage();
|
||||
|
||||
|
||||
@@ -199,10 +199,18 @@ public:
|
||||
m_server.SendReportGameResult(requestId, replyId, false);
|
||||
}
|
||||
|
||||
virtual void PlayerAdminList(unsigned requestId, std::list<DB_id> adminList) {
|
||||
virtual void PlayerAdminList(unsigned /*requestId*/, std::list<DB_id> adminList) {
|
||||
m_server.GetBanManager().SetAdminPlayerIds(adminList);
|
||||
}
|
||||
|
||||
virtual void BlockPlayerSuccess(unsigned requestId, unsigned replyId) {
|
||||
m_server.SendAdminBanPlayerResult(requestId, replyId, true);
|
||||
}
|
||||
|
||||
virtual void BlockPlayerFailed(unsigned requestId, unsigned replyId) {
|
||||
m_server.SendAdminBanPlayerResult(requestId, replyId, false);
|
||||
}
|
||||
|
||||
private:
|
||||
ServerLobbyThread &m_server;
|
||||
};
|
||||
@@ -1511,6 +1519,41 @@ ServerLobbyThread::HandleNetPacketAdminRemoveGame(boost::shared_ptr<SessionData>
|
||||
void
|
||||
ServerLobbyThread::HandleNetPacketAdminBanPlayer(boost::shared_ptr<SessionData> session, const AdminBanPlayerMessage &banPlayer)
|
||||
{
|
||||
// Create Ack-Packet.
|
||||
boost::shared_ptr<NetPacket> packet(new NetPacket);
|
||||
packet->GetMsg()->set_messagetype(PokerTHMessage::Type_AdminBanPlayerAckMessage);
|
||||
AdminBanPlayerAckMessage *netBanAck = packet->GetMsg()->mutable_adminbanplayerackmessage();
|
||||
netBanAck->set_banplayerid(banPlayer.banplayerid());
|
||||
|
||||
if (session && session->GetPlayerData() && GetBanManager().IsAdminPlayer(session->GetPlayerData()->GetDBId())) {
|
||||
|
||||
boost::shared_ptr<SessionData> tmpSession = m_sessionManager.GetSessionByUniquePlayerId(banPlayer.banplayerid());
|
||||
if (!tmpSession) {
|
||||
tmpSession = m_gameSessionManager.GetSessionByUniquePlayerId(banPlayer.banplayerid());
|
||||
}
|
||||
boost::shared_ptr<PlayerData> tmpPlayer;
|
||||
if (tmpSession) {
|
||||
tmpPlayer = tmpSession->GetPlayerData();
|
||||
}
|
||||
if (tmpPlayer && !GetBanManager().IsAdminPlayer(tmpPlayer->GetDBId())) {
|
||||
// Ban the player's IP address for 24 hours.
|
||||
GetBanManager().BanIPAddress(tmpSession->GetClientAddr(), 24);
|
||||
// Kick the player.
|
||||
RemovePlayer(tmpPlayer->GetUniqueId(), ERR_NET_PLAYER_KICKED);
|
||||
// Permanently ban the player in the database.
|
||||
if (tmpPlayer->GetDBId() != DB_ID_INVALID) {
|
||||
GetDatabase()->AsyncBlockPlayer(session->GetPlayerData()->GetUniqueId(), tmpPlayer->GetUniqueId(), tmpPlayer->GetDBId(), 0, 4);
|
||||
netBanAck->set_banplayerresult(AdminBanPlayerAckMessage::banPlayerPending);
|
||||
} else {
|
||||
netBanAck->set_banplayerresult(AdminBanPlayerAckMessage::banPlayerNoDB);
|
||||
}
|
||||
} else {
|
||||
netBanAck->set_banplayerresult(AdminBanPlayerAckMessage::banPlayerInvalid);
|
||||
}
|
||||
} else {
|
||||
netBanAck->set_banplayerresult(AdminBanPlayerAckMessage::banPlayerInvalid);
|
||||
}
|
||||
GetSender().Send(session, packet);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1702,6 +1745,22 @@ ServerLobbyThread::SendReportGameResult(unsigned byPlayerId, unsigned reportedGa
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ServerLobbyThread::SendAdminBanPlayerResult(unsigned byPlayerId, unsigned reportedPlayerId, bool success)
|
||||
{
|
||||
boost::shared_ptr<SessionData> session = m_sessionManager.GetSessionByUniquePlayerId(byPlayerId);
|
||||
if (!session)
|
||||
session = m_gameSessionManager.GetSessionByUniquePlayerId(byPlayerId);
|
||||
if (session) {
|
||||
boost::shared_ptr<NetPacket> packet(new NetPacket);
|
||||
packet->GetMsg()->set_messagetype(PokerTHMessage::Type_AdminBanPlayerAckMessage);
|
||||
AdminBanPlayerAckMessage *netBanAck = packet->GetMsg()->mutable_adminbanplayerackmessage();
|
||||
netBanAck->set_banplayerid(reportedPlayerId);
|
||||
netBanAck->set_banplayerresult(success ? AdminBanPlayerAckMessage::banPlayerAccepted : AdminBanPlayerAckMessage::banPlayerDBError);
|
||||
GetSender().Send(session, packet);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ServerLobbyThread::UserBlocked(unsigned playerId)
|
||||
{
|
||||
|
||||
@@ -174,6 +174,7 @@ protected:
|
||||
|
||||
void SendReportAvatarResult(unsigned byPlayerId, unsigned reportedPlayerId, bool success);
|
||||
void SendReportGameResult(unsigned byPlayerId, unsigned reportedGameId, bool success);
|
||||
void SendAdminBanPlayerResult(unsigned byPlayerId, unsigned reportedPlayerId, bool success);
|
||||
void RequestPlayerAvatar(boost::shared_ptr<SessionData> session);
|
||||
void TimerRemoveGame(const boost::system::error_code &ec);
|
||||
void TimerRemovePlayer(const boost::system::error_code &ec);
|
||||
|
||||
+11
-4
@@ -167,12 +167,19 @@
|
||||
#define MSG_NET_LIMIT_GAME MSG_NET_GAME_SERVER_END
|
||||
|
||||
// Some messages which are displayed in the GUI
|
||||
#define MSG_NET_AVATAR_REPORT_ACCEPTED MSG_NET_LIMIT_GAME + 1
|
||||
#define MSG_NET_AVATAR_REPORT_DUP MSG_NET_LIMIT_GAME + 2
|
||||
#define MSG_NET_AVATAR_REPORT_REJECTED MSG_NET_LIMIT_GAME + 3
|
||||
#define MSG_NET_AVATAR_REPORT_ACCEPTED MSG_NET_LIMIT_GAME + 1
|
||||
#define MSG_NET_AVATAR_REPORT_DUP MSG_NET_LIMIT_GAME + 2
|
||||
#define MSG_NET_AVATAR_REPORT_REJECTED MSG_NET_LIMIT_GAME + 3
|
||||
#define MSG_NET_GAMENAME_REPORT_ACCEPTED MSG_NET_LIMIT_GAME + 4
|
||||
#define MSG_NET_GAMENAME_REPORT_DUP MSG_NET_LIMIT_GAME + 5
|
||||
#define MSG_NET_GAMENAME_REPORT_DUP MSG_NET_LIMIT_GAME + 5
|
||||
#define MSG_NET_GAMENAME_REPORT_REJECTED MSG_NET_LIMIT_GAME + 6
|
||||
#define MSG_NET_ADMIN_REMOVE_GAME_ACCEPTED MSG_NET_LIMIT_GAME + 7
|
||||
#define MSG_NET_ADMIN_REMOVE_GAME_REJECTED MSG_NET_LIMIT_GAME + 8
|
||||
#define MSG_NET_ADMIN_BAN_PLAYER_ACCEPTED MSG_NET_LIMIT_GAME + 9
|
||||
#define MSG_NET_ADMIN_BAN_PLAYER_PENDING MSG_NET_LIMIT_GAME + 10
|
||||
#define MSG_NET_ADMIN_BAN_PLAYER_NODB MSG_NET_LIMIT_GAME + 11
|
||||
#define MSG_NET_ADMIN_BAN_PLAYER_DBERROR MSG_NET_LIMIT_GAME + 12
|
||||
#define MSG_NET_ADMIN_BAN_PLAYER_REJECTED MSG_NET_LIMIT_GAME + 13
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user