Add message callbacks to client admin functions.

This commit is contained in:
lotodore
2013-02-26 23:15:33 +01:00
parent 70f6a1ae78
commit 2aba7cf7ed
13 changed files with 129 additions and 18 deletions
+2 -1
View File
@@ -713,9 +713,10 @@ message AdminBanPlayerAckMessage {
required uint32 banPlayerId = 1;
enum AdminBanPlayerResult {
banPlayerAccepted = 0;
banPlayerInvalid = 1;
banPlayerPending = 1;
banPlayerNoDB = 2;
banPlayerDBError = 3;
banPlayerInvalid = 4;
}
required AdminBanPlayerResult banPlayerResult = 2;
}
+1 -1
View File
@@ -116,7 +116,7 @@ ServerDBGeneric::AsyncQueryAdminPlayers(unsigned /*requestId*/)
}
void
ServerDBGeneric::AsyncBlockPlayer(unsigned /*requestId*/, DB_id /*playerId*/, int /*valid*/, int /*active*/)
ServerDBGeneric::AsyncBlockPlayer(unsigned /*requestId*/, unsigned /*replyId*/, DB_id /*playerId*/, int /*valid*/, int /*active*/)
{
}
+3
View File
@@ -67,6 +67,9 @@ public:
virtual void ReportGameFailed(unsigned requestId, unsigned replyId) = 0;
virtual void PlayerAdminList(unsigned requestId, std::list<DB_id> adminList) = 0;
virtual void BlockPlayerSuccess(unsigned requestId, unsigned replyId) = 0;
virtual void BlockPlayerFailed(unsigned requestId, unsigned replyId) = 0;
};
#endif
+1 -1
View File
@@ -63,7 +63,7 @@ public:
virtual void AsyncReportGame(unsigned requestId, unsigned replyId, DB_id *creatorPlayerId, unsigned gameId, const std::string &gameName, DB_id *byPlayerId);
virtual void AsyncQueryAdminPlayers(unsigned requestId);
virtual void AsyncBlockPlayer(unsigned requestId, DB_id playerId, int valid, int active);
virtual void AsyncBlockPlayer(unsigned requestId, unsigned replyId, DB_id playerId, int valid, int active);
private:
boost::shared_ptr<boost::asio::io_service> m_ioService;
+1 -1
View File
@@ -63,7 +63,7 @@ public:
virtual void AsyncReportGame(unsigned requestId, unsigned replyId, DB_id *creatorPlayerId, unsigned gameId, const std::string &gameName, DB_id *byPlayerId) = 0;
virtual void AsyncQueryAdminPlayers(unsigned requestId) = 0;
virtual void AsyncBlockPlayer(unsigned requestId, DB_id playerId, int valid, int active) = 0;
virtual void AsyncBlockPlayer(unsigned requestId, unsigned replyId, DB_id playerId, int valid, int active) = 0;
};
#endif
+1 -1
View File
@@ -61,7 +61,7 @@ public:
virtual void AsyncReportGame(unsigned /*requestId*/, unsigned /*replyId*/, DB_id * /*creatorPlayerId*/, unsigned /*gameId*/, const std::string &/*gameName*/, DB_id * /*byPlayerId*/) {}
virtual void AsyncQueryAdminPlayers(unsigned /*requestId*/) {}
virtual void AsyncBlockPlayer(unsigned /*requestId*/, DB_id /*playerId*/, int /*valid*/, int /*active*/) {}
virtual void AsyncBlockPlayer(unsigned /*requestId*/, unsigned /*replyId*/, DB_id /*playerId*/, int /*valid*/, int /*active*/) {}
};
#endif // _SERVERDBNOACTION_H_
+33
View File
@@ -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();
+60 -1
View File
@@ -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)
{
+1
View File
@@ -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
View File
@@ -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
+3 -1
View File
@@ -19933,6 +19933,7 @@ bool AdminBanPlayerAckMessage_AdminBanPlayerResult_IsValid(int value) {
case 1:
case 2:
case 3:
case 4:
return true;
default:
return false;
@@ -19941,9 +19942,10 @@ bool AdminBanPlayerAckMessage_AdminBanPlayerResult_IsValid(int value) {
#ifndef _MSC_VER
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage::banPlayerAccepted;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage::banPlayerInvalid;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage::banPlayerPending;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage::banPlayerNoDB;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage::banPlayerDBError;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage::banPlayerInvalid;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage::AdminBanPlayerResult_MIN;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage::AdminBanPlayerResult_MAX;
const int AdminBanPlayerAckMessage::AdminBanPlayerResult_ARRAYSIZE;
+6 -4
View File
@@ -370,13 +370,14 @@ const int AdminRemoveGameAckMessage_AdminRemoveGameResult_AdminRemoveGameResult_
enum AdminBanPlayerAckMessage_AdminBanPlayerResult {
AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerAccepted = 0,
AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerInvalid = 1,
AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerPending = 1,
AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerNoDB = 2,
AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerDBError = 3
AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerDBError = 3,
AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerInvalid = 4
};
bool AdminBanPlayerAckMessage_AdminBanPlayerResult_IsValid(int value);
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage_AdminBanPlayerResult_AdminBanPlayerResult_MIN = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerAccepted;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage_AdminBanPlayerResult_AdminBanPlayerResult_MAX = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerDBError;
const AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage_AdminBanPlayerResult_AdminBanPlayerResult_MAX = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerInvalid;
const int AdminBanPlayerAckMessage_AdminBanPlayerResult_AdminBanPlayerResult_ARRAYSIZE = AdminBanPlayerAckMessage_AdminBanPlayerResult_AdminBanPlayerResult_MAX + 1;
enum PokerTHMessage_PokerTHMessageType {
@@ -8426,9 +8427,10 @@ class AdminBanPlayerAckMessage : public ::google::protobuf::MessageLite {
typedef AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerResult;
static const AdminBanPlayerResult banPlayerAccepted = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerAccepted;
static const AdminBanPlayerResult banPlayerInvalid = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerInvalid;
static const AdminBanPlayerResult banPlayerPending = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerPending;
static const AdminBanPlayerResult banPlayerNoDB = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerNoDB;
static const AdminBanPlayerResult banPlayerDBError = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerDBError;
static const AdminBanPlayerResult banPlayerInvalid = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerInvalid;
static inline bool AdminBanPlayerResult_IsValid(int value) {
return AdminBanPlayerAckMessage_AdminBanPlayerResult_IsValid(value);
}
+6 -3
View File
@@ -37342,15 +37342,17 @@ public final class ProtoBuf {
public enum AdminBanPlayerResult
implements com.google.protobuf.Internal.EnumLite {
banPlayerAccepted(0, 0),
banPlayerInvalid(1, 1),
banPlayerPending(1, 1),
banPlayerNoDB(2, 2),
banPlayerDBError(3, 3),
banPlayerInvalid(4, 4),
;
public static final int banPlayerAccepted_VALUE = 0;
public static final int banPlayerInvalid_VALUE = 1;
public static final int banPlayerPending_VALUE = 1;
public static final int banPlayerNoDB_VALUE = 2;
public static final int banPlayerDBError_VALUE = 3;
public static final int banPlayerInvalid_VALUE = 4;
public final int getNumber() { return value; }
@@ -37358,9 +37360,10 @@ public final class ProtoBuf {
public static AdminBanPlayerResult valueOf(int value) {
switch (value) {
case 0: return banPlayerAccepted;
case 1: return banPlayerInvalid;
case 1: return banPlayerPending;
case 2: return banPlayerNoDB;
case 3: return banPlayerDBError;
case 4: return banPlayerInvalid;
default: return null;
}
}