增加ACE安全测试工程
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
#include "stdafx.h"
|
||||
#include "AceInterface.h"
|
||||
#include "GameServer.h"
|
||||
|
||||
const wchar_t* AceInterface::kLibraryDir = L"./";
|
||||
const uint32_t AceInterface::kGameID = 719;
|
||||
const char* AceInterface::kAuthToken = "79205A21";
|
||||
const uint32_t AceInterface::kWorldID = 160;
|
||||
|
||||
bool AceInterface::initAceInterface()
|
||||
{
|
||||
AceSdkServerLibraryInfo library_info;
|
||||
memset(&library_info, 0, sizeof(AceSdkServerLibraryInfo));
|
||||
memcpy(library_info.library_dir_, kLibraryDir, wcslen(kLibraryDir)*sizeof(wchar_t));
|
||||
|
||||
AceSdkServerAuthInfo auth_info;
|
||||
memset(&auth_info, 0, sizeof(AceSdkServerAuthInfo));
|
||||
auth_info.game_id_ = kGameID;
|
||||
snprintf(auth_info.auth_token_, sizeof(auth_info.auth_token_), "%s", kAuthToken);
|
||||
|
||||
AceSdkServerDeploymentInfo deployment_info;
|
||||
memset(&deployment_info, 0, sizeof(AceSdkServerDeploymentInfo));
|
||||
deployment_info.region_ = ACE_SDK_REGION_CHINA_MAINLAND;
|
||||
deployment_info.distributor_ = ACE_SDK_GAME_DISTRIBUTOR_COMMON;
|
||||
|
||||
AceSdkResult ret = ace_sdk_server_init(&library_info, &auth_info, &deployment_info);
|
||||
if (ret != ACE_SDK_RESULT_OK)
|
||||
{
|
||||
printf(">>ACE fail to init ace sdk server, ret : %d\n", ret);
|
||||
//return false;
|
||||
}
|
||||
|
||||
//set text judge callback
|
||||
ret = ace_sdk_server_set_recv_batch_multi_text_result_callback(onAceTextJudgeCallback);
|
||||
if (ret != ACE_SDK_RESULT_OK)
|
||||
{
|
||||
printf(">>ACE fail to set text judge callback, ret : %d\n", ret);
|
||||
//return false;
|
||||
}
|
||||
printf(">>ACE SDK server init success.\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AceInterface::onPlayerLogin(const AceSdkAccount& account, AceSdkTicket& aceTicket, AceSdkLightFeatureResponse& lightFeature)
|
||||
{
|
||||
// add player when login
|
||||
AceSdkPlayerAddInfo add_player_info;
|
||||
memset(&add_player_info, 0, sizeof(AceSdkPlayerAddInfo));
|
||||
snprintf(add_player_info.role_name_, sizeof(add_player_info.role_name_) - 1, "qq_%s", account.account_);
|
||||
AceSdkResult ret = ace_sdk_server_add_player(&account, &add_player_info);
|
||||
if (ret != 0)
|
||||
{
|
||||
printf(">>ACE fail to add player, ret: %d\n", ret);
|
||||
return false;
|
||||
}
|
||||
|
||||
printf(">>ACE add player success.\n");
|
||||
|
||||
// get ticket
|
||||
memset(&aceTicket, 0, sizeof(AceSdkTicket));
|
||||
ret = ace_sdk_server_get_ticket(&account, &aceTicket);
|
||||
if (ret != 0)
|
||||
{
|
||||
printf(">>ACE fail to get ace ticket, ret: %d\n", ret);
|
||||
return false;
|
||||
}
|
||||
|
||||
printf(">>ACE Succ to get ace ticket, len=%u, content=%s\n", aceTicket.ticket_len_, aceTicket.ticket_);
|
||||
|
||||
//get light feature
|
||||
AceSdkLightFeatureRequest lightFeatureReq;
|
||||
memset(&lightFeatureReq, 0, sizeof(AceSdkLightFeatureRequest));
|
||||
snprintf(lightFeatureReq.client_version_, sizeof(lightFeatureReq.client_version_) - 1, "%s", "1.0.0");
|
||||
|
||||
memset(&lightFeature, 0, sizeof(AceSdkLightFeatureResponse));
|
||||
ret = ace_sdk_server_get_light_feature(&account, &lightFeatureReq, &lightFeature);
|
||||
if (ret != 0)
|
||||
{
|
||||
printf(">>ACE fail to get ace ticket, ret: %d\n", ret);
|
||||
return false;
|
||||
}
|
||||
printf(">>ACE Succ to get light feature\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
void AceInterface::onPlayerLogout(const AceSdkAccount& account)
|
||||
{
|
||||
AceSdkResult ret = ace_sdk_server_delete_player(&account);
|
||||
if (ret != ACE_SDK_RESULT_OK)
|
||||
{
|
||||
printf(">>ACE fail to call ace_sdk_server_delete_player, ret : %d\n", ret);
|
||||
}
|
||||
}
|
||||
|
||||
void AceInterface::onReceiveClientTickPacket(const AceSdkAccount& account, const uint8_t* packet_buffer, uint32_t packet_len)
|
||||
{
|
||||
AceSdkServerPacket serverPacket;
|
||||
memset(&serverPacket, 0, sizeof(AceSdkServerPacket));
|
||||
|
||||
memcpy(&(serverPacket.account_), &account, sizeof(AceSdkAccount));
|
||||
serverPacket.packet_len_ = packet_len;
|
||||
memcpy(serverPacket.packet_buffer_, packet_buffer, packet_len);
|
||||
|
||||
AceSdkResult ret = ace_sdk_server_on_packet_received(&serverPacket);
|
||||
if (ret != ACE_SDK_RESULT_OK)
|
||||
{
|
||||
printf(">>ACE fail to call ace_sdk_server_on_packet_received, ret : %d\n", ret);
|
||||
}
|
||||
}
|
||||
|
||||
void AceInterface::getServerTickPacket(AceSdkServerPacketList& serverTickPackets)
|
||||
{
|
||||
memset(&serverTickPackets, 0, sizeof(AceSdkServerPacketList));
|
||||
AceSdkResult ret = ace_sdk_server_get_packet(&serverTickPackets);
|
||||
if (ret != ACE_SDK_RESULT_OK)
|
||||
{
|
||||
printf(">>ACE fail to call ace_sdk_server_get_packets, ret : %d\n", ret);
|
||||
}
|
||||
if (serverTickPackets.packet_num_ > 0)
|
||||
{
|
||||
printf(">>ACE call ace_sdk_server_on_packet_received, packet_num : %d\n", serverTickPackets.packet_num_);
|
||||
}
|
||||
}
|
||||
|
||||
void AceInterface::keepClientAlive(const AceSdkAccount& account)
|
||||
{
|
||||
AceSdkResult ret = ace_sdk_server_keep_alive_player(&account);
|
||||
if (ret != ACE_SDK_RESULT_OK)
|
||||
{
|
||||
printf(">>ACE fail to call ace_sdk_server_keep_alive, ret : %d\n", ret);
|
||||
}
|
||||
}
|
||||
|
||||
bool AceInterface::onUGCRequest(const AceSdkAccount& account, int32_t ugcSceneID, const char* content,
|
||||
int32_t ugcCtxID, int32_t clientID)
|
||||
{
|
||||
AceSdkBatchMultiTextInputInfo textInputInfo;
|
||||
memset(&textInputInfo, 0, sizeof(AceSdkBatchMultiTextInputInfo));
|
||||
|
||||
textInputInfo.account_info_ = account;
|
||||
snprintf(textInputInfo.role_name_, ACE_SDK_UIC_MAX_ROLE_NAME_LEN - 1, "qq_%s", account.account_);
|
||||
textInputInfo.multi_text_cnt_ = 1;
|
||||
textInputInfo.multi_text_array_[0].scene_id_ = ugcSceneID;
|
||||
snprintf(textInputInfo.multi_text_array_[0].text_, ACE_SDK_UIC_MAX_MESSAGE_LEN, "%s", content);
|
||||
|
||||
AceTextJudgeCallbackData callbackData;
|
||||
memset(&callbackData, 0, sizeof(AceTextJudgeCallbackData));
|
||||
callbackData.clientID = clientID;
|
||||
callbackData.ugcClientCtxID = ugcCtxID;
|
||||
textInputInfo.callback_len_ = sizeof(AceTextJudgeCallbackData);
|
||||
memcpy(textInputInfo.callback_data_, &callbackData, sizeof(AceTextJudgeCallbackData));
|
||||
|
||||
AceSdkResult ret = ace_sdk_server_judge_batch_multi_text(&textInputInfo);
|
||||
if (ret != ACE_SDK_RESULT_OK)
|
||||
{
|
||||
printf(">>ACE fail to call ace_sdk_server_judge_batch_multi_text, ret : %d\n", ret);
|
||||
return false;
|
||||
}
|
||||
|
||||
printf(">>ACE call ace_sdk_server_judge_batch_multi_text\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
int AceInterface::onAceTextJudgeCallback(const AceSdkUicJudgeResultInfoBatchMultiText* result_info)
|
||||
{
|
||||
if (result_info == nullptr) return 0;
|
||||
if (result_info->callback_len_ != sizeof(AceTextJudgeCallbackData))
|
||||
{
|
||||
printf(">>ACE text judge callback data length mismatch, len : %d\n", result_info->callback_len_);
|
||||
return 0;
|
||||
}
|
||||
printf(">>ACE text judge callback received, err_code : %d, multext_result_cnt : %d\n",
|
||||
result_info->err_code_, result_info->multext_result_cnt_);
|
||||
|
||||
AceTextJudgeCallbackData callbackData;
|
||||
memcpy(&callbackData, result_info->callback_data_, sizeof(AceTextJudgeCallbackData));
|
||||
|
||||
GameServer::getSingleton()->onUGCCallback(callbackData.clientID, callbackData.ugcClientCtxID, result_info);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user