From 5151dadc0cf5fd4cc85e2cd6eaff460c62174f58 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 14 Oct 2020 17:57:52 +0800 Subject: [PATCH] 1 --- server/imserver/handlermgr.cc | 1 + server/imserver/player.cc | 43 ++++++++++++++++++++++++++ server/imserver/player.h | 1 + server/rankserver/guildmgr.cc | 11 +++++++ server/rankserver/guildmgr.h | 1 + server/rankserver/handlermgr.cc | 5 +++ server/tools/protobuild/cs_msgid.proto | 3 ++ server/tools/protobuild/cs_proto.proto | 12 +++++++ 8 files changed, 77 insertions(+) diff --git a/server/imserver/handlermgr.cc b/server/imserver/handlermgr.cc index 33086b1..e4e8b9d 100644 --- a/server/imserver/handlermgr.cc +++ b/server/imserver/handlermgr.cc @@ -101,6 +101,7 @@ void HandlerMgr::RegisterNetMsgHandlers() RegisterNetMsgHandler(&wsmsghandler, &Player::_CMSendChatMsg); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMSendCustomMsg); + RegisterNetMsgHandler(&wsmsghandler, &Player::_CMDirtyWordCheck); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMTeamCreate); RegisterNetMsgHandler(&wsmsghandler, &Player::_CMTeamJoin); diff --git a/server/imserver/player.cc b/server/imserver/player.cc index b2fba9b..cfa44f4 100644 --- a/server/imserver/player.cc +++ b/server/imserver/player.cc @@ -552,6 +552,49 @@ void Player::_CMSendCustomMsg(f8::MsgHdr& hdr, const cs::CMSendCustomMsg& msg) } } +void Player::_CMDirtyWordCheck(f8::MsgHdr& hdr, const cs::CMDirtyWordCheck& msg) +{ + std::string ip; + int port = 0; + JsonDataMgr::Instance()->GetRankServerConf(ip, port); + + a8::MutableXObject* params = a8::MutableXObject::NewObject(); + params->SetVal("text", msg.text()); + f8::HttpClientPool::Instance()->HttpGet + ( + a8::XParams() + .SetSender(AccountId()) + .SetParam1(hdr.socket_handle), + [] (a8::XParams& param, a8::XObject& data) + { + cs::SMDirtyWordCheck respmsg; + Player* hum = PlayerMgr::Instance()->GetPlayerByAccountId(param.sender); + if (hum) { + if (data.At("errcode")->AsXValue().GetInt() == 0) { + hum->SendMsg(respmsg); + } else { + respmsg.set_errcode(data.At("errcode")->AsXValue()); + respmsg.set_errmsg(data.At("errmsg")->AsXValue()); + hum->SendMsg(respmsg); + } + } + }, + [] (a8::XParams& param, const std::string& response) + { + Player* hum = PlayerMgr::Instance()->GetPlayerByAccountId(param.sender); + if (hum) { + #if 0 + hum->ShowErrorMsg("服务器内部错误"); + #endif + } + }, + a8::Format("http://%s:%d/webapp/index.php?c=Guild&a=dirtyWordCheck", {ip, port}).c_str(), + *params, + rand() + ); + delete params; +} + void Player::_CMTeamCreate(f8::MsgHdr& hdr, const cs::CMTeamCreate& msg) { #if 0 diff --git a/server/imserver/player.h b/server/imserver/player.h index 757eab9..458d34c 100644 --- a/server/imserver/player.h +++ b/server/imserver/player.h @@ -95,6 +95,7 @@ class Player void _CMSendChatMsg(f8::MsgHdr& hdr, const cs::CMSendChatMsg& msg); void _CMSendCustomMsg(f8::MsgHdr& hdr, const cs::CMSendCustomMsg& msg); + void _CMDirtyWordCheck(f8::MsgHdr& hdr, const cs::CMDirtyWordCheck& msg); void _CMTeamCreate(f8::MsgHdr& hdr, const cs::CMTeamCreate& msg); void _CMTeamJoin(f8::MsgHdr& hdr, const cs::CMTeamJoin& msg); diff --git a/server/rankserver/guildmgr.cc b/server/rankserver/guildmgr.cc index dd0f1dc..c2a775c 100644 --- a/server/rankserver/guildmgr.cc +++ b/server/rankserver/guildmgr.cc @@ -497,6 +497,17 @@ void GuildMgr::__GuildConfirmed(f8::JsonHttpRequest* request) } +void GuildMgr::__GuildDirtyWordCheck(f8::JsonHttpRequest* request) +{ + request->resp_xobj->SetVal("errcode", 0); + request->resp_xobj->SetVal("errmsg", ""); + std::string text = request->request.At("text")->AsXValue(); + if (MetaMgr::Instance()->HasDirtyWord(text)) { + request->resp_xobj->SetVal("errcode", 1); + request->resp_xobj->SetVal("errmsg", "含有屏蔽字符"); + } +} + void GuildMgr::__GenTestData(f8::JsonHttpRequest* request) { if (!load_done_) { diff --git a/server/rankserver/guildmgr.h b/server/rankserver/guildmgr.h index 3437ccc..72d0fb8 100644 --- a/server/rankserver/guildmgr.h +++ b/server/rankserver/guildmgr.h @@ -25,6 +25,7 @@ class GuildMgr : public a8::Singleton void __GuildRename(f8::JsonHttpRequest* request); void __GuildRank(f8::JsonHttpRequest* request); void __GuildConfirmed(f8::JsonHttpRequest* request); + void __GuildDirtyWordCheck(f8::JsonHttpRequest* request); void __GenTestData(f8::JsonHttpRequest* request); private: diff --git a/server/rankserver/handlermgr.cc b/server/rankserver/handlermgr.cc index cc407c1..3bf2582 100644 --- a/server/rankserver/handlermgr.cc +++ b/server/rankserver/handlermgr.cc @@ -60,6 +60,11 @@ void HandlerMgr::Init() { GuildMgr::Instance()->__GuildConfirmed(request); }); + RegisterGMMsgHandler("Guild@dirtyWordCheck", + [] (f8::JsonHttpRequest* request) + { + GuildMgr::Instance()->__GuildDirtyWordCheck(request); + }); RegisterGMMsgHandler("Guild@genTestData", [] (f8::JsonHttpRequest* request) { diff --git a/server/tools/protobuild/cs_msgid.proto b/server/tools/protobuild/cs_msgid.proto index 8b93eb7..b3ceb9f 100644 --- a/server/tools/protobuild/cs_msgid.proto +++ b/server/tools/protobuild/cs_msgid.proto @@ -25,6 +25,7 @@ enum CMMessageId_e _CMSendCustomMsg = 152; _CMUpdateTempCustomData = 153; _CMUpdateUserInfo = 154; + _CMDirtyWordCheck = 155; _CMGuildMsgBegin = 230; _CMGuildCreate = 231; @@ -76,6 +77,8 @@ enum SMMessageId_e _SMRecommandFriend = 117; _SMFriendIdList = 118; + _SMDirtyWordCheck = 155; + _SMGuildMsgBegin = 230; _SMGuildCreate = 231; _SMGuildJoin = 232; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 58e074e..546c7da 100644 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -169,6 +169,18 @@ message CMUpdateUserInfo optional int32 delay_flag = 101; //延迟更新标志(只能为1-16),相同的flag定时器覆盖 } +//屏蔽字检查 +message CMDirtyWordCheck +{ + optional string text = 2; //待检查文本 +} +//屏蔽字检查回复 +message SMDirtyWordCheck +{ + optional int32 errcode = 1; //错误消息 + optional string errmsg = 2; //错误消息 +} + //获取好友列表 message CMFriendList {