未验证 提交 a21e85f2 编写于 作者: xengine-qyt's avatar xengine-qyt 提交者: Gitee

!21 V3.6.0.1001 Merge

Merge pull request !21 from qyt/develop
XEngine_Authorize V3.6.0.1001
添加:公告功能支持
添加:公告功能开关支持
添加:cdkey功能开关
添加:cdkey验证支持
删除:cdkey的单独密码支持
added:announcement function
added:switch function for announcement system
added:cdkey switch support
added:verification cdkey support
delete:cdkey password support
======================================================================================
XEngine_Authorize V3.5.0.1001
添加:禁用列表功能支持修改信息了
......
......@@ -42,6 +42,7 @@ feature list:
14. support distributed verification authorize function
15. black list management
16. local cdkey support
17. announecement management
## install
......
......@@ -42,6 +42,7 @@ V2可以直接升级到V3版本,因为数据库并没有修改,直接替换程
14. 分布式验证授权功能支持
15. 黑名单管理
16. 本地cdkey生成验证支持
17. 支持功公告管理
## 安装教程
......@@ -144,4 +145,5 @@ mysql支持
支持代理端(序列号分发,权限控制)
支持绑定自定义内容
自动售卡(支付宝,微信)
MQTT协议支持,让你的嵌入式设备也用上授时验证
\ No newline at end of file
MQTT协议支持,让你的嵌入式设备也用上授时验证
支持三方验证(其他服务也可以发送验证请求给验证服务来做验证)
\ No newline at end of file
......@@ -197,6 +197,38 @@ int AuthClient_Login()
}
return 0;
}
int AuthClient_Notice()
{
int nHTTPCode = 0;
LPCTSTR lpszUrl = _T("http://127.0.0.1:5302/api?function=notice");
int nMsgLen = 0;
CHAR* ptszMsgBuffer = NULL;
APIClient_Http_Request(_T("GET"), lpszUrl, NULL, &nHTTPCode, &ptszMsgBuffer, &nMsgLen);
Json::Value st_JsonRoot;
Json::Value st_JsonObject;
JSONCPP_STRING st_JsonError;
Json::CharReaderBuilder st_ReaderBuilder;
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_ReaderBuilder.newCharReader());
if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
{
return 0;
}
for (unsigned int i = 0; i < st_JsonRoot["Array"].size(); i++)
{
TCHAR tszMsgBuffer[2048];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
Json::Value st_JsonArray = st_JsonRoot["Array"][i];
int nMsgLen = st_JsonArray["tszContext"].asString().length();
BaseLib_OperatorCharset_UTFToAnsi(st_JsonArray["tszContext"].asCString(), tszMsgBuffer, &nMsgLen);
printf("AuthClient_Notice:\nID:%lld:%s\n", st_JsonArray["nID"].asInt64(), tszMsgBuffer);
}
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
return 0;
}
int AuthClient_GetPass()
{
int nHTTPCode = 0;
......@@ -299,6 +331,7 @@ int main()
AuthClient_Register();
AuthClient_Pay();
AuthClient_Login();
AuthClient_Notice();
AuthClient_GetPass();
AuthClient_GetTime();
AuthClient_Delete();
......
......@@ -29,6 +29,10 @@
//linux::g++ -std=c++17 -Wall -g Authorize_APPLocal.cpp -o Authorize_APPLocal.exe -L /usr/local/lib/XEngine_Release/XEngine_BaseLib -L /usr/local/lib/XEngine_Release/XEngine_Core -L /usr/local/lib/XEngine_Release/XEngine_NetHelp -L /usr/local/lib/XEngine_Release/XEngine_HelpComponents -lXEngine_BaseLib -lXEngine_OPenSsl -lNetHelp_APIClient -lHelpComponents_Authorize
//macos::g++ -std=c++17 -Wall -g Authorize_APPLocal.cpp -o Authorize_APPLocal.exe -lXEngine_BaseLib -lXEngine_OPenSsl -lNetHelp_APIClient -lHelpComponents_Authorize
//#define XENGINE_AUTHORIZE_CDKEY_CRYPTO
LPCTSTR lpszPasswd = _T("123123");
int main()
{
#ifdef _MSC_BUILD
......@@ -37,8 +41,6 @@ int main()
#endif
int nLen = 0;
int nCode = 0;
LPCTSTR lpszCreateUrl = _T("http://127.0.0.1:5302/auth/cdkey/create");
Json::Value st_JsonRoot;
Json::Value st_JsonAPPInfo;
Json::Value st_JsonREGInfo;
......@@ -62,39 +64,101 @@ int main()
st_JsonRoot["st_AuthUserInfo"] = st_JsonUserInfo;
TCHAR* ptszCreateBuffer = NULL;
TCHAR* ptszAuthBuffer = NULL;
LPCTSTR lpszCreateUrl = _T("http://192.168.1.10:5302/auth/cdkey/create");
//1. 创建CDKEY
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
//加密
CHAR tszCodecBuffer[4096];
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
nLen = st_JsonRoot.toStyledString().length();
OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nLen, (UCHAR *)tszCodecBuffer, lpszPasswd);
if (!APIClient_Http_Request(_T("POST"), lpszCreateUrl, tszCodecBuffer, &nCode, &ptszCreateBuffer, &nLen))
#else
if (!APIClient_Http_Request(_T("POST"), lpszCreateUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszCreateBuffer, &nLen))
#endif
{
printf("发送投递失败!\n");
return 0;
}
printf("接受到数据,大小:%d,内容:%s\n", nLen, ptszCreateBuffer);
TCHAR tszMsgBuffer[4096];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
//解密
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
OPenSsl_XCrypto_Decoder(ptszCreateBuffer, &nLen, tszCodecBuffer, lpszPasswd);
printf("接受到数据,大小:%d,内容:\n%s\n", nLen, tszCodecBuffer);
//你也可以通过授权模块的API函数来读内存,都一回事,这里为了方便直接写了,请求分钟卡,拥有10分钟,也可以写自定义时间格式
BaseLib_OperatorFile_WriteProfileFromMemory(tszCodecBuffer, nLen, "AuthReg", "tszLeftTime", "10", tszMsgBuffer, &nLen);
#else
BaseLib_OperatorFile_WriteProfileFromMemory(ptszCreateBuffer, nLen, "AuthReg", "tszLeftTime", "10", tszMsgBuffer, &nLen);
printf("接受到数据,大小:%d,内容:\n%s\n", nLen, ptszCreateBuffer);
#endif
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszCreateBuffer);
LPCTSTR lpszAuthUrl = _T("http://127.0.0.1:5302/auth/cdkey/auth?pass=123123");
//2. 授权CDKEY
TCHAR* ptszAuthBuffer = NULL;
LPCTSTR lpszAuthUrl = _T("http://192.168.1.10:5302/auth/cdkey/auth");
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
//加密
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
nLen = nLen;
OPenSsl_XCrypto_Encoder(tszMsgBuffer, &nLen, (UCHAR*)tszCodecBuffer, lpszPasswd);
if (!APIClient_Http_Request(_T("POST"), lpszAuthUrl, tszCodecBuffer, &nCode, &ptszAuthBuffer, &nLen))
#else
if (!APIClient_Http_Request(_T("POST"), lpszAuthUrl, tszMsgBuffer, &nCode, &ptszAuthBuffer, &nLen))
#endif
{
printf("发送投递失败!\n");
return 0;
}
//ptszAuthBuffer 写文件,然后验证即可.如下所示
//step 1.解密
CHAR tszCodecBuffer[4096];
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
//解密
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
OPenSsl_XCrypto_Decoder(ptszAuthBuffer, &nLen, tszCodecBuffer, "123123");
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszAuthBuffer);
OPenSsl_XCrypto_Decoder(ptszAuthBuffer, &nLen, tszCodecBuffer, lpszPasswd);
printf("接受到数据,大小:%d,内容:\n%s\n", nLen, tszCodecBuffer);
//step 2.转换格式
//你也可以通过授权模块的API函数来读内存,都一回事,这里为了方便直接写了,请求分钟卡,拥有10分钟,也可以写自定义时间格式
BaseLib_OperatorFile_WriteProfileFromMemory(tszCodecBuffer, nLen, "AuthReg", "tszLeftTime", "10", tszMsgBuffer, &nLen);
#else
printf("接受到数据,大小:%d,内容:\n%s\n", nLen, ptszAuthBuffer);
BaseLib_OperatorFile_WriteProfileFromMemory(ptszAuthBuffer, nLen, "AuthReg", "tszLeftTime", "10", tszMsgBuffer, &nLen);
#endif
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszAuthBuffer);
//3. 验证CDKEY
TCHAR* ptszVerBuffer = NULL;
LPCTSTR lpszVerUrl = _T("http://192.168.1.10:5302/auth/cdkey/ver");
XENGINE_AUTHORIZE_LOCAL st_Authorize;
memset(&st_Authorize, '\0', sizeof(XENGINE_AUTHORIZE_LOCAL));
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
//加密
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
OPenSsl_XCrypto_Encoder(tszMsgBuffer, &nLen, (UCHAR*)tszCodecBuffer, lpszPasswd);
if (!APIClient_Http_Request(_T("POST"), lpszVerUrl, tszCodecBuffer, &nCode, &ptszVerBuffer, &nLen))
#else
if (!APIClient_Http_Request(_T("POST"), lpszVerUrl, tszMsgBuffer, &nCode, &ptszVerBuffer, &nLen))
#endif
{
printf("发送投递失败!\n");
return 0;
}
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
//解密
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
OPenSsl_XCrypto_Decoder(ptszVerBuffer, &nLen, tszCodecBuffer, lpszPasswd);
printf("接受到数据,大小:%d,内容:\n%s\n", nLen, tszCodecBuffer);
Authorize_Local_ReadMemory(tszCodecBuffer, nLen, &st_Authorize);
//step 3.判断您是否超时
#else
printf("接受到数据,大小:%d,内容:\n%s\n", nLen, ptszVerBuffer);
Authorize_Local_ReadMemory(ptszVerBuffer, nLen, &st_Authorize);
#endif
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszVerBuffer);
//4. 也可以本地验证
if (Authorize_Local_GetLeftTimer(&st_Authorize))
{
printf("ok\n");
......
......@@ -10,5 +10,5 @@ copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_HelpComponents\zlib1.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_LibEx\libcrypto-3.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_LibEx\libssl-3.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_LibEx\libcurl.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_LibEx\nghttp2.dll" "./"
\ No newline at end of file
copy /y "%XEngine_Lib32%\XEngine_NetHelp\libcurl.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_NetHelp\nghttp2.dll" "./"
\ No newline at end of file
......@@ -45,6 +45,7 @@
"LogLeave":32
},
"XVer":[
"V3.6.0.1001 Build20230224",
"V3.5.0.1001 Build20230203",
"V3.4.0.1001 Build20221230",
"V3.3.0.1001 Build20221101",
......
......@@ -4,5 +4,7 @@
"bSwitchLogin":true,
"bSwitchPay":true,
"bSwitchPass":true,
"bSwtichTime":true
"bSwitchTime":true,
"bSwitchCDKey":true,
"bSwitchNotice":true
}
\ No newline at end of file
......@@ -10,11 +10,26 @@
Target Server Version : 3035005 (3.35.5)
File Encoding : 65001
Date: 03/02/2023 15:14:23
Date: 24/02/2023 14:43:17
*/
PRAGMA foreign_keys = false;
-- ----------------------------
-- Table structure for Authorize_Announcement
-- ----------------------------
DROP TABLE IF EXISTS "Authorize_Announcement";
CREATE TABLE "Authorize_Announcement" (
"ID" INTEGER NOT NULL,
"tszContext" TEXT,
"tszCreateTime" DATE,
PRIMARY KEY ("ID")
);
-- ----------------------------
-- Records of Authorize_Announcement
-- ----------------------------
-- ----------------------------
-- Table structure for Authorize_BannedAddr
-- ----------------------------
......@@ -116,7 +131,7 @@ CREATE TABLE "sqlite_sequence" (
-- ----------------------------
-- Records of sqlite_sequence
-- ----------------------------
INSERT INTO "sqlite_sequence" VALUES ('Authorize_User', 1);
INSERT INTO "sqlite_sequence" VALUES ('Authorize_User', 2);
INSERT INTO "sqlite_sequence" VALUES ('Authorize_BannedUser', 6);
INSERT INTO "sqlite_sequence" VALUES ('Authorize_BannedAddr', 5);
......@@ -133,6 +148,6 @@ UPDATE "sqlite_sequence" SET seq = 6 WHERE name = 'Authorize_BannedUser';
-- ----------------------------
-- Auto increment value for Authorize_User
-- ----------------------------
UPDATE "sqlite_sequence" SET seq = 1 WHERE name = 'Authorize_User';
UPDATE "sqlite_sequence" SET seq = 2 WHERE name = 'Authorize_User';
PRAGMA foreign_keys = true;
......@@ -80,7 +80,9 @@ typedef struct
BOOL bSwitchLogin; //登录开关
BOOL bSwitchPay; //充值开关
BOOL bSwitchPass; //找回密码开关
BOOL bSwtichTime; //计时开关,关闭后客户端不会消耗时间(仅分钟卡有效)
BOOL bSwitchTime; //计时开关,关闭后客户端不会消耗时间(仅分钟卡有效)
BOOL bSwitchCDKey; //是否允许本地CDKEY创建使用
BOOL bSwitchNotice; //是否开启公告系统
}XENGINE_FUNCTIONSWITCH;
//////////////////////////////////////////////////////////////////////////
// 导出的函数
......
......@@ -247,7 +247,9 @@ BOOL CModuleConfigure_Json::ModuleConfigure_Json_Switch(LPCTSTR lpszConfigFile,
pSt_ServerConfig->bSwitchLogin = st_JsonRoot["bSwitchLogin"].asBool();
pSt_ServerConfig->bSwitchPay = st_JsonRoot["bSwitchPay"].asBool();
pSt_ServerConfig->bSwitchPass = st_JsonRoot["bSwitchPass"].asBool();
pSt_ServerConfig->bSwtichTime = st_JsonRoot["bSwtichTime"].asBool();
pSt_ServerConfig->bSwitchTime = st_JsonRoot["bSwitchTime"].asBool();
pSt_ServerConfig->bSwitchCDKey = st_JsonRoot["bSwitchCDKey"].asBool();
pSt_ServerConfig->bSwitchNotice = st_JsonRoot["bSwitchNotice"].asBool();
return TRUE;
}
\ No newline at end of file
......@@ -30,4 +30,8 @@ EXPORTS
Database_SQLite_BannedDelete
Database_SQLite_BannedList
Database_SQLite_BannedExist
Database_SQLite_BannedUPDate
\ No newline at end of file
Database_SQLite_BannedUPDate
Database_SQLite_AnnouncementInsert
Database_SQLite_AnnouncementDelete
Database_SQLite_AnnouncementList
\ No newline at end of file
......@@ -417,4 +417,51 @@ extern "C" BOOL Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned);
意思:是否成功
备注:
*********************************************************************/
extern "C" BOOL Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned);
\ No newline at end of file
extern "C" BOOL Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned);
/********************************************************************
函数名称:Database_SQLite_AnnouncementInsert
函数功能:公告插入
参数.一:pSt_Announcement
In/Out:In
类型:数据结构指针
可空:N
意思:输入要插入的信息
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
extern "C" BOOL Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement);
/********************************************************************
函数名称:Database_SQLite_AnnouncementDelete
函数功能:公告删除
参数.一:pSt_Announcement
In/Out:In
类型:数据结构指针
可空:N
意思:输入要删除的信息
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
extern "C" BOOL Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement);
/********************************************************************
函数名称:Database_SQLite_AnnouncementList
函数功能:列举所有公告
参数.一:ppppSt_Announcement
In/Out:Out
类型:三级指针
可空:N
意思:输出列举数据
参数.二:pInt_ListCount
In/Out:Out
类型:整数型指针
可空:N
意思:导出数据个数
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
extern "C" BOOL Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount);
\ No newline at end of file
......@@ -1433,6 +1433,131 @@ BOOL CDatabase_SQLite::Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned)
}
return TRUE;
}
/********************************************************************
函数名称:Database_SQLite_AnnouncementInsert
函数功能:公告插入
参数.一:pSt_Announcement
In/Out:In
类型:数据结构指针
可空:N
意思:输入要插入的信息
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
BOOL CDatabase_SQLite::Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement)
{
SQLPacket_IsErrorOccur = FALSE;
if (NULL == pSt_Announcement)
{
SQLPacket_IsErrorOccur = TRUE;
SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT;
return FALSE;
}
TCHAR tszSQLStatement[8192];
memset(tszSQLStatement, '\0', sizeof(tszSQLStatement));
_stprintf_s(tszSQLStatement, _T("INSERT INTO Authorize_Announcement(tszContext,tszCreateTime) VALUES('%s',datetime('now', 'localtime'))"), pSt_Announcement->tszContext);
//插入数据库
if (!DataBase_SQLite_Exec(xhData, tszSQLStatement))
{
SQLPacket_IsErrorOccur = TRUE;
SQLPacket_dwErrorCode = DataBase_GetLastError();
return FALSE;
}
return TRUE;
}
/********************************************************************
函数名称:Database_SQLite_AnnouncementDelete
函数功能:公告删除
参数.一:pSt_Announcement
In/Out:In
类型:数据结构指针
可空:N
意思:输入要删除的信息
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
BOOL CDatabase_SQLite::Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement)
{
SQLPacket_IsErrorOccur = FALSE;
if (NULL == pSt_Announcement)
{
SQLPacket_IsErrorOccur = TRUE;
SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT;
return FALSE;
}
TCHAR tszSQLStatement[1024];
memset(tszSQLStatement, '\0', sizeof(tszSQLStatement));
_stprintf_s(tszSQLStatement, _T("DELETE FROM Authorize_Announcement WHERE ID = %lld"), pSt_Announcement->nID);
//插入数据库
if (!DataBase_SQLite_Exec(xhData, tszSQLStatement))
{
SQLPacket_IsErrorOccur = TRUE;
SQLPacket_dwErrorCode = DataBase_GetLastError();
return FALSE;
}
return TRUE;
}
/********************************************************************
函数名称:Database_SQLite_AnnouncementList
函数功能:列举所有公告
参数.一:ppppSt_Announcement
In/Out:Out
类型:三级指针
可空:N
意思:输出列举数据
参数.二:pInt_ListCount
In/Out:Out
类型:整数型指针
可空:N
意思:导出数据个数
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
BOOL CDatabase_SQLite::Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount)
{
SQLPacket_IsErrorOccur = FALSE;
int nRow = 0;
int nColumn = 0;
CHAR** ppszResult = NULL;
TCHAR tszSQLStatement[1024]; //SQL语句
memset(tszSQLStatement, '\0', 1024);
_stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_Announcement"));
if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn))
{
SQLPacket_IsErrorOccur = TRUE;
SQLPacket_dwErrorCode = DataBase_GetLastError();
return FALSE;
}
*pInt_ListCount = nRow;
BaseLib_OperatorMemory_Malloc((XPPPMEM)ppppSt_Announcement, nRow, sizeof(AUTHREG_ANNOUNCEMENT));
int nFliedValue = nColumn;
//轮训所有内容
for (int i = 0; i < nRow; i++)
{
(*ppppSt_Announcement)[i]->nID = _ttoi64(ppszResult[nFliedValue]);
nFliedValue++;
_tcscpy((*ppppSt_Announcement)[i]->tszContext, ppszResult[nFliedValue]);
nFliedValue++;
_tcscpy((*ppppSt_Announcement)[i]->tszCreateTime, ppszResult[nFliedValue]);
nFliedValue++;
}
DataBase_SQLite_FreeTable(ppszResult);
return TRUE;
}
//////////////////////////////////////////////////////////////////////////
// 保护函数
//////////////////////////////////////////////////////////////////////////
......
......@@ -48,6 +48,10 @@ public:
BOOL Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount);
BOOL Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned);
BOOL Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned);
public:
BOOL Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement);
BOOL Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement);
BOOL Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount);
protected:
BOOL Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR lpszUserTime, LPCTSTR lpszCardTime, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_AuthSerialType, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_AuthUserType);
private:
......
......@@ -124,4 +124,16 @@ extern "C" BOOL Database_SQLite_BannedExist(AUTHREG_BANNED * pSt_Banned)
extern "C" BOOL Database_SQLite_BannedUPDate(AUTHREG_BANNED * pSt_Banned)
{
return m_SQLAuth.Database_SQLite_BannedUPDate(pSt_Banned);
}
extern "C" BOOL Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT * pSt_Announcement)
{
return m_SQLAuth.Database_SQLite_AnnouncementInsert(pSt_Announcement);
}
extern "C" BOOL Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT * pSt_Announcement)
{
return m_SQLAuth.Database_SQLite_AnnouncementDelete(pSt_Announcement);
}
extern "C" BOOL Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT * **ppppSt_Announcement, int* pInt_ListCount)
{
return m_SQLAuth.Database_SQLite_AnnouncementList(ppppSt_Announcement, pInt_ListCount);
}
\ No newline at end of file
......@@ -13,6 +13,7 @@ EXPORTS
Protocol_Packet_HttpToken
Protocol_Packet_HttpSwitch
Protocol_Packet_HttpBanned
Protocol_Packet_HttpAnnouncement
Protocol_Parse_WSHdr
Protocol_Parse_HttpParseToken
......@@ -28,4 +29,5 @@ EXPORTS
Protocol_Parse_HttpParseSwitch
Protocol_Parse_HttpParsePos
Protocol_Parse_HttpParseBanned
Protocol_Parse_HttpParseCDKey
\ No newline at end of file
Protocol_Parse_HttpParseCDKey
Protocol_Parse_HttpParseAnnouncement
\ No newline at end of file
......@@ -307,6 +307,35 @@ extern "C" BOOL Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pInt_MsgLe
备注:
*********************************************************************/
extern "C" BOOL Protocol_Packet_HttpBanned(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_BANNED*** pppSt_BannedUser, int nUserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int nAddrCount);
/********************************************************************
函数名称:Protocol_Packet_HttpAnnouncement
函数功能:打包公告列表
参数.一:ptszMsgBuffer
In/Out:Out
类型:字符指针
可空:N
意思:导出包装好的缓冲区
参数.二:pInt_MsgLen
In/Out:Out
类型:整数型指针
可空:N
意思:输出包装大小
参数.三:pppSt_Announcement
In/Out:In
类型:三级指针
可空:N
意思:输入要处理的列表
参数.四:nListCount
In/Out:In
类型:整数型
可空:N
意思:输入个数
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
extern "C" BOOL Protocol_Packet_HttpAnnouncement(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_ANNOUNCEMENT*** pppSt_Announcement, int nListCount);
/************************************************************************/
/* 解析类协议 */
/************************************************************************/
......@@ -694,4 +723,28 @@ extern "C" BOOL Protocol_Parse_HttpParseBanned(LPCTSTR lpszMsgBuffer, int nMsgLe
意思:是否成功
备注:
*********************************************************************/
extern "C" BOOL Protocol_Parse_HttpParseCDKey(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_Authorize);
\ No newline at end of file
extern "C" BOOL Protocol_Parse_HttpParseCDKey(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_Authorize);
/********************************************************************
函数名称:Protocol_Parse_HttpParseAnnouncement
函数功能:解析公告信息
参数.一:lpszMsgBuffer
In/Out:In
类型:常量字符指针
可空:N
意思:输入要解析的缓冲区
参数.二:nMsgLen
In/Out:In
类型:整数型
可空:N
意思:输入缓冲区大小
参数.三:pSt_Announcement
In/Out:Out
类型:数据结构指针
可空:N
意思:输出解析后的信息
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
extern "C" BOOL Protocol_Parse_HttpParseAnnouncement(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_ANNOUNCEMENT* pSt_Announcement);
\ No newline at end of file
......@@ -585,6 +585,8 @@ BOOL CProtocol_Packet::Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pIn
st_JsonRoot["bSwitchPass"] = pSt_FunSwitch->bSwitchPass;
st_JsonRoot["bSwitchPay"] = pSt_FunSwitch->bSwitchPay;
st_JsonRoot["bSwitchRegister"] = pSt_FunSwitch->bSwitchRegister;
st_JsonRoot["bSwitchCDKey"] = pSt_FunSwitch->bSwitchCDKey;
st_JsonRoot["bSwitchNotice"] = pSt_FunSwitch->bSwitchNotice;
*pInt_MsgLen = st_JsonRoot.toStyledString().length();
memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen);
......@@ -669,6 +671,64 @@ BOOL CProtocol_Packet::Protocol_Packet_HttpBanned(TCHAR* ptszMsgBuffer, int* pIn
st_JsonRoot["ArrayUser"] = st_JsonUser;
st_JsonRoot["ArrayAddr"] = st_JsonAddr;
*pInt_MsgLen = st_JsonRoot.toStyledString().length();
memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen);
return TRUE;
}
/********************************************************************
函数名称:Protocol_Packet_HttpAnnouncement
函数功能:打包公告列表
参数.一:ptszMsgBuffer
In/Out:Out
类型:字符指针
可空:N
意思:导出包装好的缓冲区
参数.二:pInt_MsgLen
In/Out:Out
类型:整数型指针
可空:N
意思:输出包装大小
参数.三:pppSt_Announcement
In/Out:In
类型:三级指针
可空:N
意思:输入要处理的列表
参数.四:nListCount
In/Out:In
类型:整数型
可空:N
意思:输入个数
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
BOOL CProtocol_Packet::Protocol_Packet_HttpAnnouncement(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_ANNOUNCEMENT*** pppSt_Announcement, int nListCount)
{
Protocol_IsErrorOccur = FALSE;
if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen))
{
Protocol_IsErrorOccur = TRUE;
Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT;
return FALSE;
}
Json::Value st_JsonRoot;
Json::Value st_JsonArray;
for (int i = 0; i < nListCount; i++)
{
Json::Value st_JsonObject;
st_JsonObject["nID"] = (Json::Value::Int64)(*pppSt_Announcement)[i]->nID;
st_JsonObject["tszContext"] = (*pppSt_Announcement)[i]->tszContext;
st_JsonObject["tszCreateTime"] = (*pppSt_Announcement)[i]->tszCreateTime;
st_JsonArray.append(st_JsonObject);
}
st_JsonRoot["msg"] = "success";
st_JsonRoot["code"] = 0;
st_JsonRoot["Count"] = st_JsonArray.size();
st_JsonRoot["Array"] = st_JsonArray;
*pInt_MsgLen = st_JsonRoot.toStyledString().length();
memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen);
return TRUE;
......
......@@ -28,6 +28,7 @@ public:
BOOL Protocol_Packet_HttpToken(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout);
BOOL Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch);
BOOL Protocol_Packet_HttpBanned(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_BANNED*** pppSt_BannedUser, int nUserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int nAddrCount);
BOOL Protocol_Packet_HttpAnnouncement(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_ANNOUNCEMENT*** pppSt_Announcement, int nListCount);
protected:
private:
};
\ No newline at end of file
......@@ -811,6 +811,9 @@ BOOL CProtocol_Parse::Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int
pSt_FunSwitch->bSwitchLogin = st_JsonObject["bSwitchLogin"].asBool();
pSt_FunSwitch->bSwitchPay = st_JsonObject["bSwitchPay"].asBool();
pSt_FunSwitch->bSwitchPass = st_JsonObject["bSwitchPass"].asBool();
pSt_FunSwitch->bSwitchCDKey = st_JsonObject["bSwitchCDKey"].asBool();
pSt_FunSwitch->bSwitchNotice = st_JsonObject["bSwitchNotice"].asBool();
return TRUE;
}
/********************************************************************
......@@ -1071,4 +1074,64 @@ BOOL CProtocol_Parse::Protocol_Parse_HttpParseCDKey(LPCTSTR lpszMsgBuffer, int n
_tcscpy(pSt_Authorize->st_AuthUserInfo.tszCustom, st_JsonUserInfo["tszCustom"].asCString());
}
return TRUE;
}
/********************************************************************
函数名称:Protocol_Parse_HttpParseAnnouncement
函数功能:解析公告信息
参数.一:lpszMsgBuffer
In/Out:In
类型:常量字符指针
可空:N
意思:输入要解析的缓冲区
参数.二:nMsgLen
In/Out:In
类型:整数型
可空:N
意思:输入缓冲区大小
参数.三:pSt_Announcement
In/Out:Out
类型:数据结构指针
可空:N
意思:输出解析后的信息
返回值
类型:逻辑型
意思:是否成功
备注:
*********************************************************************/
BOOL CProtocol_Parse::Protocol_Parse_HttpParseAnnouncement(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_ANNOUNCEMENT* pSt_Announcement)
{
Protocol_IsErrorOccur = FALSE;
if ((NULL == lpszMsgBuffer) || (NULL == pSt_Announcement))
{
Protocol_IsErrorOccur = TRUE;
Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT;
return FALSE;
}
Json::Value st_JsonRoot;
JSONCPP_STRING st_JsonError;
Json::CharReaderBuilder st_ReaderBuilder;
//解析JSON
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_ReaderBuilder.newCharReader());
if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
{
Protocol_IsErrorOccur = TRUE;
Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARSE;
return FALSE;
}
Json::Value st_JsonObject = st_JsonRoot["st_Notice"];
if (!st_JsonObject["tszContext"].isNull())
{
_tcscpy(pSt_Announcement->tszContext, st_JsonObject["tszContext"].asCString());
}
if (!st_JsonObject["tszCreateTime"].isNull())
{
_tcscpy(pSt_Announcement->tszCreateTime, st_JsonObject["tszCreateTime"].asCString());
}
if (!st_JsonObject["nID"].isNull())
{
pSt_Announcement->nID = st_JsonObject["nID"].asInt64();
}
return TRUE;
}
\ No newline at end of file
......@@ -33,6 +33,7 @@ public:
BOOL Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd);
BOOL Protocol_Parse_HttpParseBanned(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_BANNED* pSt_AuthBanned);
BOOL Protocol_Parse_HttpParseCDKey(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_Authorize);
BOOL Protocol_Parse_HttpParseAnnouncement(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_ANNOUNCEMENT* pSt_Announcement);
protected:
private:
};
\ No newline at end of file
......@@ -71,6 +71,10 @@ extern "C" BOOL Protocol_Packet_HttpBanned(TCHAR * ptszMsgBuffer, int* pInt_MsgL
{
return m_ProtocolPacket.Protocol_Packet_HttpBanned(ptszMsgBuffer, pInt_MsgLen, pppSt_BannedUser, nUserCount, pppSt_BannedAddr, nAddrCount);
}
extern "C" BOOL Protocol_Packet_HttpAnnouncement(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_ANNOUNCEMENT * **pppSt_Announcement, int nListCount)
{
return m_ProtocolPacket.Protocol_Packet_HttpAnnouncement(ptszMsgBuffer, pInt_MsgLen, pppSt_Announcement, nListCount);
}
/************************************************************************/
/* 解析类协议 */
/************************************************************************/
......@@ -133,4 +137,8 @@ extern "C" BOOL Protocol_Parse_HttpParseBanned(LPCTSTR lpszMsgBuffer, int nMsgLe
extern "C" BOOL Protocol_Parse_HttpParseCDKey(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL * pSt_Authorize)
{
return m_ProtocolParse.Protocol_Parse_HttpParseCDKey(lpszMsgBuffer, nMsgLen, pSt_Authorize);
}
extern "C" BOOL Protocol_Parse_HttpParseAnnouncement(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_ANNOUNCEMENT * pSt_Announcement)
{
return m_ProtocolParse.Protocol_Parse_HttpParseAnnouncement(lpszMsgBuffer, nMsgLen, pSt_Announcement);
}
\ No newline at end of file
......@@ -21,7 +21,7 @@ copy /y "%XEngine_Lib64%\XEngine_HelpComponents\libmariadb.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_HelpComponents\libpq.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_HelpComponents\sqlite3.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_HelpComponents\zlib1.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_NetHelp\libcurl.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_NetHelp\nghttp2.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_LibEx\libcrypto-3-x64.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_LibEx\libssl-3-x64.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_LibEx\libcurl.dll" "./"
copy /y "%XEngine_Lib64%\XEngine_LibEx\nghttp2.dll" "./"
\ No newline at end of file
copy /y "%XEngine_Lib64%\XEngine_LibEx\libssl-3-x64.dll" "./"
\ No newline at end of file
......@@ -21,7 +21,7 @@ copy /y "%XEngine_Lib32%\XEngine_HelpComponents\libmariadb.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_HelpComponents\libpq.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_HelpComponents\sqlite3.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_HelpComponents\zlib1.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_NetHelp\libcurl.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_NetHelp\nghttp2.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_LibEx\libcrypto-3.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_LibEx\libssl-3.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_LibEx\libcurl.dll" "./"
copy /y "%XEngine_Lib32%\XEngine_LibEx\nghttp2.dll" "./"
\ No newline at end of file
copy /y "%XEngine_Lib32%\XEngine_LibEx\libssl-3.dll" "./"
\ No newline at end of file
......@@ -86,4 +86,11 @@ typedef struct
CHAR tszLeftTime[64]; //过期时间
CHAR tszCreateTime[64]; //创建时间
BOOL bEnable; //是否启用
}AUTHREG_BANNED, * LPAUTHREG_BANNED;
\ No newline at end of file
}AUTHREG_BANNED, * LPAUTHREG_BANNED;
//公告信息
typedef struct
{
CHAR tszContext[4096]; //信息
CHAR tszCreateTime[64]; //创建时间
__int64x nID; //ID
}AUTHREG_ANNOUNCEMENT, * LPAUTHREG_ANNOUNCEMENT;
\ No newline at end of file
// Dialog_Announcement.cpp: 实现文件
//
#include "pch.h"
#include "../XEngine_AuthorizeApp.h"
#include "afxdialogex.h"
#include "Dialog_Announcement.h"
// CDialog_Announcement 对话框
IMPLEMENT_DYNAMIC(CDialog_Announcement, CDialogEx)
CDialog_Announcement::CDialog_Announcement(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_DIALOG_ANNOUNCEMENT, pParent)
{
}
CDialog_Announcement::~CDialog_Announcement()
{
}
void CDialog_Announcement::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_ListAnnouncement);
DDX_Control(pDX, IDC_EDIT1, m_EditNoticeStr);
}
BEGIN_MESSAGE_MAP(CDialog_Announcement, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON1, &CDialog_Announcement::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, &CDialog_Announcement::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON3, &CDialog_Announcement::OnBnClickedButton3)
END_MESSAGE_MAP()
// CDialog_Announcement 消息处理程序
BOOL CDialog_Announcement::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
m_ListAnnouncement.InsertColumn(0, _T("ID"), LVCFMT_LEFT, 60);
m_ListAnnouncement.InsertColumn(1, _T("公告内容"), LVCFMT_LEFT, 400);
m_ListAnnouncement.InsertColumn(2, _T("创建时间"), LVCFMT_LEFT, 150);
m_ListAnnouncement.SetExtendedStyle(LVS_EX_FULLROWSELECT);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CDialog_Announcement::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString m_StrIPAddr;
CString m_StrIPPort;
CString m_StrToken;
CString m_StrNotice;
CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd);
pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr);
pWnd->m_EditIPPort.GetWindowText(m_StrIPPort);
pWnd->m_EditToken.GetWindowText(m_StrToken);
m_EditNoticeStr.GetWindowText(m_StrNotice);
TCHAR tszUrlAddr[MAX_PATH];
memset(tszUrlAddr, '\0', MAX_PATH);
_stprintf(tszUrlAddr, _T("http://%s:%s/auth/notice/insert"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer());
int nMsgLen = 0;
CHAR* ptszMsgBuffer = NULL;
Json::Value st_JsonRoot;
Json::Value st_JsonObject;
Json::StreamWriterBuilder st_JsonBuilder;
st_JsonBuilder["emitUTF8"] = true;
st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer());
st_JsonObject["tszContext"] = m_StrNotice.GetBuffer();
st_JsonRoot["st_Notice"] = st_JsonObject;
//是否加密
TCHAR tszCodecBuffer[2048];
TCHAR tszPassBuffer[64];
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
memset(tszPassBuffer, '\0', sizeof(tszPassBuffer));
::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer));
nMsgLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length();
BaseLib_OperatorCharset_AnsiToUTF(Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), tszCodecBuffer, &nMsgLen);
if (bCrypto)
{
TCHAR tszMsgBuffer[2048];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
OPenSsl_XCrypto_Encoder(tszCodecBuffer, &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer);
APIClient_Http_Request(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen);
}
else
{
APIClient_Http_Request(_T("POST"), tszUrlAddr, tszCodecBuffer, NULL, &ptszMsgBuffer, &nMsgLen);
}
JSONCPP_STRING st_JsonError;
Json::CharReaderBuilder st_ReaderBuilder;
st_JsonRoot.clear();
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_ReaderBuilder.newCharReader());
if (bCrypto)
{
TCHAR tszMsgBuffer[2048];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer);
if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
{
Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续"));
return;
}
}
else
{
if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
{
Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续"));
return;
}
}
if (0 == st_JsonRoot["code"].asInt())
{
Authorize_Help_LogPrint(_T("插入公告信息成功"));
}
else
{
Authorize_Help_LogPrint(_T("插入公告信息成功"));
}
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
OnBnClickedButton3();
}
void CDialog_Announcement::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
CString m_StrIPAddr;
CString m_StrIPPort;
CString m_StrToken;
CString m_StrNotice;
CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd);
pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr);
pWnd->m_EditIPPort.GetWindowText(m_StrIPPort);
pWnd->m_EditToken.GetWindowText(m_StrToken);
POSITION pSt_Sition = m_ListAnnouncement.GetFirstSelectedItemPosition();
int nSelect = m_ListAnnouncement.GetNextSelectedItem(pSt_Sition);
if (nSelect < 0)
{
Authorize_Help_LogPrint(_T("没有选择公告,无法继续"));
return;
}
m_StrNotice = m_ListAnnouncement.GetItemText(nSelect, 0);
TCHAR tszUrlAddr[MAX_PATH];
memset(tszUrlAddr, '\0', MAX_PATH);
_stprintf(tszUrlAddr, _T("http://%s:%s/auth/notice/delete"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer());
int nMsgLen = 0;
CHAR* ptszMsgBuffer = NULL;
Json::Value st_JsonRoot;
Json::Value st_JsonObject;
st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer());
st_JsonObject["nID"] = _ttoi64(m_StrNotice.GetBuffer());
st_JsonRoot["st_Notice"] = st_JsonObject;
//是否加密
TCHAR tszPassBuffer[64];
memset(tszPassBuffer, '\0', sizeof(tszPassBuffer));
::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer));
if (bCrypto)
{
TCHAR tszMsgBuffer[2048];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
nMsgLen = st_JsonRoot.toStyledString().length();
OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer);
APIClient_Http_Request(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen);
}
else
{
APIClient_Http_Request(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen);
}
JSONCPP_STRING st_JsonError;
Json::CharReaderBuilder st_ReaderBuilder;
st_JsonRoot.clear();
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_ReaderBuilder.newCharReader());
if (bCrypto)
{
TCHAR tszMsgBuffer[2048];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer);
if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
{
Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续"));
return;
}
}
else
{
if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
{
Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续"));
return;
}
}
if (0 == st_JsonRoot["code"].asInt())
{
Authorize_Help_LogPrint(_T("删除公告信息成功"));
}
else
{
Authorize_Help_LogPrint(_T("删除公告信息成功"));
}
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
OnBnClickedButton3();
}
void CDialog_Announcement::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
m_ListAnnouncement.DeleteAllItems();
CString m_StrIPAddr;
CString m_StrIPPort;
CString m_StrToken;
CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd);
pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr);
pWnd->m_EditIPPort.GetWindowText(m_StrIPPort);
pWnd->m_EditToken.GetWindowText(m_StrToken);
TCHAR tszUrlAddr[MAX_PATH];
memset(tszUrlAddr, '\0', MAX_PATH);
_stprintf(tszUrlAddr, _T("http://%s:%s/auth/notice/list"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer());
int nMsgLen = 0;
CHAR* ptszMsgBuffer = NULL;
Json::Value st_JsonRoot;
Json::Value st_JsonObject;
st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer());
//是否加密
TCHAR tszPassBuffer[64];
memset(tszPassBuffer, '\0', sizeof(tszPassBuffer));
::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer));
if (bCrypto)
{
TCHAR tszMsgBuffer[2048];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
nMsgLen = st_JsonRoot.toStyledString().length();
OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer);
APIClient_Http_Request(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen);
}
else
{
APIClient_Http_Request(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen);
}
JSONCPP_STRING st_JsonError;
Json::CharReaderBuilder st_ReaderBuilder;
st_JsonRoot.clear();
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_ReaderBuilder.newCharReader());
if (bCrypto)
{
TCHAR tszMsgBuffer[2048];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer);
if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
{
Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续"));
return;
}
}
else
{
if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
{
Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续"));
return;
}
}
for (unsigned int i = 0; i < st_JsonRoot["Array"].size(); i++)
{
Json::Value st_JsonArray = st_JsonRoot["Array"][i];
TCHAR tszMsgBuffer[2048];
TCHAR tszIndex[64];
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
memset(tszIndex, '\0', 64);
_i64tot(st_JsonArray["nID"].asInt64(), tszIndex, 10);
int nMsgLen = st_JsonArray["tszContext"].asString().length();
BaseLib_OperatorCharset_UTFToAnsi(st_JsonArray["tszContext"].asCString(), tszMsgBuffer, &nMsgLen);
m_ListAnnouncement.InsertItem(i, _T(""));
m_ListAnnouncement.SetItemText(i, 0, tszIndex);
m_ListAnnouncement.SetItemText(i, 1, tszMsgBuffer);
m_ListAnnouncement.SetItemText(i, 2, st_JsonArray["tszCreateTime"].asCString());
}
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
}
#pragma once
#include "afxdialogex.h"
// CDialog_Announcement 对话框
class CDialog_Announcement : public CDialogEx
{
DECLARE_DYNAMIC(CDialog_Announcement)
public:
CDialog_Announcement(CWnd* pParent = nullptr); // 标准构造函数
virtual ~CDialog_Announcement();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_DIALOG_ANNOUNCEMENT };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnInitDialog();
CListCtrl m_ListAnnouncement;
afx_msg void OnBnClickedButton1();
CEdit m_EditNoticeStr;
afx_msg void OnBnClickedButton2();
afx_msg void OnBnClickedButton3();
};
......@@ -36,6 +36,10 @@ void CDialog_Switch::DoDataExchange(CDataExchange* pDX)
DDX_Control(pDX, IDC_RADIO10, m_RadioPassClose);
DDX_Control(pDX, IDC_BUTTON2, m_BtnSetConfigure);
DDX_Control(pDX, IDC_BUTTON1, m_BtnGetConfigure);
DDX_Control(pDX, IDC_RADIO11, m_RadioCDkeyOPen);
DDX_Control(pDX, IDC_RADIO12, m_RadioCDKeyClose);
DDX_Control(pDX, IDC_RADIO13, m_RadioNoticeOPen);
DDX_Control(pDX, IDC_RADIO14, m_RadioNoticeClose);
}
......@@ -169,6 +173,28 @@ void CDialog_Switch::OnBnClickedButton1()
m_RadioPassOPen.SetCheck(BST_UNCHECKED);
m_RadioPassClose.SetCheck(BST_CHECKED);
}
if (st_JsonRoot["bSwitchCDKey"].asBool())
{
m_RadioCDkeyOPen.SetCheck(BST_CHECKED);
m_RadioCDKeyClose.SetCheck(BST_UNCHECKED);
}
else
{
m_RadioCDkeyOPen.SetCheck(BST_UNCHECKED);
m_RadioCDKeyClose.SetCheck(BST_CHECKED);
}
if (st_JsonRoot["bSwitchNotice"].asBool())
{
m_RadioNoticeOPen.SetCheck(BST_CHECKED);
m_RadioNoticeClose.SetCheck(BST_UNCHECKED);
}
else
{
m_RadioNoticeOPen.SetCheck(BST_UNCHECKED);
m_RadioNoticeClose.SetCheck(BST_CHECKED);
}
m_BtnSetConfigure.EnableWindow(TRUE);
}
else
......@@ -241,6 +267,24 @@ void CDialog_Switch::OnBnClickedButton2()
st_JsonObject["bSwitchPass"] = false;
}
if (BST_CHECKED == m_RadioCDkeyOPen.GetCheck())
{
st_JsonObject["bSwitchCDKey"] = true;
}
else
{
st_JsonObject["bSwitchCDKey"] = false;
}
if (BST_CHECKED == m_RadioNoticeOPen.GetCheck())
{
st_JsonObject["bSwitchNotice"] = true;
}
else
{
st_JsonObject["bSwitchNotice"] = false;
}
st_JsonRoot["st_SwitchInfo"] = st_JsonObject;
st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer());
......
......@@ -37,4 +37,8 @@ public:
virtual BOOL OnInitDialog();
CButton m_BtnSetConfigure;
CButton m_BtnGetConfigure;
CButton m_RadioCDkeyOPen;
CButton m_RadioCDKeyClose;
CButton m_RadioNoticeOPen;
CButton m_RadioNoticeClose;
};
......@@ -191,6 +191,7 @@
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="Authorize_Dialog\Dialog_Announcement.h" />
<ClInclude Include="Authorize_Dialog\Dialog_Banned.h" />
<ClInclude Include="Authorize_Dialog\Dialog_Config.h" />
<ClInclude Include="Authorize_Dialog\Dialog_Modify.h" />
......@@ -206,6 +207,7 @@
<ClInclude Include="XEngine_AuthorizeAppDlg.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="Authorize_Dialog\Dialog_Announcement.cpp" />
<ClCompile Include="Authorize_Dialog\Dialog_Banned.cpp" />
<ClCompile Include="Authorize_Dialog\Dialog_Config.cpp" />
<ClCompile Include="Authorize_Dialog\Dialog_Modify.cpp" />
......
......@@ -66,6 +66,9 @@
<ClInclude Include="Authorize_Dialog\Dialog_Banned.h">
<Filter>头文件\Authorize_Dialog</Filter>
</ClInclude>
<ClInclude Include="Authorize_Dialog\Dialog_Announcement.h">
<Filter>头文件\Authorize_Dialog</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="XEngine_AuthorizeApp.cpp">
......@@ -98,6 +101,9 @@
<ClCompile Include="Authorize_Dialog\Dialog_Banned.cpp">
<Filter>源文件\Authorize_Dialog</Filter>
</ClCompile>
<ClCompile Include="Authorize_Dialog\Dialog_Announcement.cpp">
<Filter>源文件\Authorize_Dialog</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="XEngineAuthorizeApp.rc">
......
......@@ -70,12 +70,14 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog()
m_TabWindows.InsertItem(0, _T("服务配置"));
m_TabWindows.InsertItem(1, _T("功能开关"));
m_TabWindows.InsertItem(2, _T("用户管理"));
m_TabWindows.InsertItem(3, _T("序列号管理"));
m_TabWindows.InsertItem(4, _T("黑名单配置"));
m_TabWindows.InsertItem(3, _T("公告管理"));
m_TabWindows.InsertItem(4, _T("序列号管理"));
m_TabWindows.InsertItem(5, _T("黑名单配置"));
m_DlgConfig.Create(IDD_DIALOG_CONFIG, &m_TabWindows);
m_DlgSwitch.Create(IDD_DIALOG_SWITCH, &m_TabWindows);
m_DlgUser.Create(IDD_DIALOG_USER, &m_TabWindows);
m_DlgAnnouncement.Create(IDD_DIALOG_ANNOUNCEMENT, &m_TabWindows);
m_DlgSerial.Create(IDD_DIALOG_SERIAL, &m_TabWindows);
m_DlgBanned.Create(IDD_DIALOG_BANNED, &m_TabWindows);
//调整子对话框在父窗口中的位置
......@@ -89,12 +91,14 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog()
m_DlgConfig.MoveWindow(&st_Rect);
m_DlgSwitch.MoveWindow(&st_Rect);
m_DlgUser.MoveWindow(&st_Rect);
m_DlgAnnouncement.MoveWindow(&st_Rect);
m_DlgSerial.MoveWindow(&st_Rect);
m_DlgBanned.MoveWindow(&st_Rect);
//分别设置隐藏和显示
m_DlgConfig.ShowWindow(TRUE);
m_DlgSwitch.ShowWindow(FALSE);
m_DlgUser.ShowWindow(FALSE);
m_DlgAnnouncement.ShowWindow(FALSE);
m_DlgSerial.ShowWindow(FALSE);
m_DlgBanned.ShowWindow(FALSE);
m_TabWindows.SetCurSel(0);
......@@ -153,6 +157,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult
m_DlgConfig.ShowWindow(TRUE);
m_DlgSwitch.ShowWindow(FALSE);
m_DlgUser.ShowWindow(FALSE);
m_DlgAnnouncement.ShowWindow(FALSE);
m_DlgSerial.ShowWindow(FALSE);
m_DlgBanned.ShowWindow(FALSE);
break;
......@@ -160,6 +165,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult
m_DlgConfig.ShowWindow(FALSE);
m_DlgSwitch.ShowWindow(TRUE);
m_DlgUser.ShowWindow(FALSE);
m_DlgAnnouncement.ShowWindow(FALSE);
m_DlgSerial.ShowWindow(FALSE);
m_DlgBanned.ShowWindow(FALSE);
break;
......@@ -167,6 +173,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult
m_DlgConfig.ShowWindow(FALSE);
m_DlgSwitch.ShowWindow(FALSE);
m_DlgUser.ShowWindow(TRUE);
m_DlgAnnouncement.ShowWindow(FALSE);
m_DlgSerial.ShowWindow(FALSE);
m_DlgBanned.ShowWindow(FALSE);
break;
......@@ -174,13 +181,23 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult
m_DlgConfig.ShowWindow(FALSE);
m_DlgSwitch.ShowWindow(FALSE);
m_DlgUser.ShowWindow(FALSE);
m_DlgSerial.ShowWindow(TRUE);
m_DlgAnnouncement.ShowWindow(TRUE);
m_DlgSerial.ShowWindow(FALSE);
m_DlgBanned.ShowWindow(FALSE);
break;
case 4:
m_DlgConfig.ShowWindow(FALSE);
m_DlgSwitch.ShowWindow(FALSE);
m_DlgUser.ShowWindow(FALSE);
m_DlgAnnouncement.ShowWindow(FALSE);
m_DlgSerial.ShowWindow(TRUE);
m_DlgBanned.ShowWindow(FALSE);
break;
case 5:
m_DlgConfig.ShowWindow(FALSE);
m_DlgSwitch.ShowWindow(FALSE);
m_DlgUser.ShowWindow(FALSE);
m_DlgAnnouncement.ShowWindow(FALSE);
m_DlgSerial.ShowWindow(FALSE);
m_DlgBanned.ShowWindow(TRUE);
break;
......
......@@ -36,6 +36,7 @@ public:
CDialog_User m_DlgUser;
CDialog_Serial m_DlgSerial;
CDialog_Banned m_DlgBanned;
CDialog_Announcement m_DlgAnnouncement;
public:
CTabCtrl m_TabWindows;
afx_msg void OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult);
......
......@@ -35,6 +35,7 @@ using namespace std;
#include "Authorize_Dialog/Dialog_Modify.h"
#include "Authorize_Dialog/Dialog_Switch.h"
#include "Authorize_Dialog/Dialog_Banned.h"
#include "Authorize_Dialog/Dialog_Announcement.h"
#include "Authorize_Help/Authorize_Help.h"
extern HWND hMainWnd;
......
......@@ -10,6 +10,7 @@
#define IDD_DIALOG_MODIFY 136
#define IDD_DIALOG_SWITCH 138
#define IDD_DIALOG_BANNED 140
#define IDD_DIALOG_ANNOUNCEMENT 142
#define IDC_TAB1 1000
#define IDC_EDIT1 1001
#define IDC_EDIT2 1002
......@@ -47,14 +48,18 @@
#define IDC_RADIO8 1022
#define IDC_RADIO9 1023
#define IDC_RADIO10 1024
#define IDC_RADIO11 1025
#define IDC_RADIO12 1026
#define IDC_RADIO13 1027
#define IDC_RADIO14 1028
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 142
#define _APS_NEXT_RESOURCE_VALUE 144
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1020
#define _APS_NEXT_CONTROL_VALUE 1022
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
#include "../Authorize_Hdr.h"
BOOL XEngine_AuthorizeHTTP_Announcement(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen)
{
int nSDLen = 4096;
TCHAR tszSDBuffer[4096];
LPCTSTR lpszAPIInsert = _T("insert");
LPCTSTR lpszAPIDelete = _T("delete");
LPCTSTR lpszAPIList = _T("list");
memset(tszSDBuffer, '\0', sizeof(tszSDBuffer));
if (!st_FunSwitch.bSwitchNotice)
{
Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed");
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,公告系统协议处理失败,功能已经被服务器关闭!"), lpszClientAddr);
return FALSE;
}
if (0 == _tcsnicmp(lpszAPIInsert, lpszAPIName, _tcslen(lpszAPIInsert)))
{
AUTHREG_ANNOUNCEMENT st_Announcement;
memset(&st_Announcement, '\0', sizeof(AUTHREG_ANNOUNCEMENT));
Protocol_Parse_HttpParseAnnouncement(lpszMsgBuffer, nMsgLen, &st_Announcement);
Database_SQLite_AnnouncementInsert(&st_Announcement);
Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen);
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,插入公告成功,公告信息:%s"), lpszClientAddr, st_Announcement.tszContext);
}
else if (0 == _tcsnicmp(lpszAPIDelete, lpszAPIName, _tcslen(lpszAPIDelete)))
{
AUTHREG_ANNOUNCEMENT st_Announcement;
memset(&st_Announcement, '\0', sizeof(AUTHREG_ANNOUNCEMENT));
Protocol_Parse_HttpParseAnnouncement(lpszMsgBuffer, nMsgLen, &st_Announcement);
Database_SQLite_AnnouncementDelete(&st_Announcement);
Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen);
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,删除公告成功.删除公告ID:%lld"), lpszClientAddr, st_Announcement.nID);
}
else if (0 == _tcsnicmp(lpszAPIList, lpszAPIName, _tcslen(lpszAPIList)))
{
int nListCount = 0;
AUTHREG_ANNOUNCEMENT** ppSt_Announcement;
Database_SQLite_AnnouncementList(&ppSt_Announcement, &nListCount);
Protocol_Packet_HttpAnnouncement(tszSDBuffer, &nSDLen, &ppSt_Announcement, nListCount);
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_Announcement, nListCount);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,查询公告列表成功,公告个数:%d"), lpszClientAddr, nListCount);
}
return TRUE;
}
\ No newline at end of file
#pragma once
BOOL XEngine_AuthorizeHTTP_Announcement(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen);
\ No newline at end of file
#include "../Authorize_Hdr.h"
BOOL XEngine_AuthorizeHTTP_CDKey(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen, LPCTSTR lpszPass)
BOOL XEngine_AuthorizeHTTP_CDKey(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen)
{
int nSDLen = 4096;
int nRVLen = 4096;
......@@ -8,10 +8,18 @@ BOOL XEngine_AuthorizeHTTP_CDKey(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LP
TCHAR tszRVBuffer[4096];
LPCTSTR lpszAPICreate = _T("create");
LPCTSTR lpszAPIAuth = _T("auth");
LPCTSTR lpszAPIVer = _T("ver");
memset(tszSDBuffer, '\0', sizeof(tszSDBuffer));
memset(tszRVBuffer, '\0', sizeof(tszRVBuffer));
if (!st_FunSwitch.bSwitchCDKey)
{
Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed");
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,CDKey验证授权失败,功能已经被服务器关闭!"), lpszClientAddr);
return FALSE;
}
if (0 == _tcsnicmp(lpszAPICreate, lpszAPIName, _tcslen(lpszAPICreate)))
{
XENGINE_AUTHORIZE_LOCAL st_Authorize;
......@@ -48,17 +56,25 @@ BOOL XEngine_AuthorizeHTTP_CDKey(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LP
Authorize_Local_BuildKeyTime(&st_Authorize, _ttoi64(st_Authorize.st_AuthRegInfo.tszLeftTime));
}
Authorize_Local_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize);
//加密
if (NULL == lpszPass)
{
XEngine_Client_TaskSend(lpszClientAddr, tszRVBuffer, nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
}
else
XEngine_Client_TaskSend(lpszClientAddr, tszRVBuffer, nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("HTTP客户端:%s,请求授权CDKEY成功,APP名:%s,APP版本:%s,授权期限:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer, st_Authorize.st_AuthRegInfo.tszLeftTime);
}
else if (0 == _tcsnicmp(lpszAPIVer, lpszAPIName, _tcslen(lpszAPIVer)))
{
XENGINE_AUTHORIZE_LOCAL st_Authorize;
memset(&st_Authorize, '\0', sizeof(XENGINE_AUTHORIZE_LOCAL));
Authorize_Local_ReadMemory(lpszMsgBuffer, nMsgLen, &st_Authorize);
if (!Authorize_Local_GetLeftTimer(&st_Authorize))
{
OPenSsl_XCrypto_Encoder(tszRVBuffer, &nRVLen, (UCHAR*)tszSDBuffer, lpszPass);
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "Unauthorized,cdkey is not authorized");
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("HTTP客户端:%s,请求验证CDKEY失败,cdkey未授权或者已超时,错误:%lX"), lpszClientAddr, Authorize_GetLastError());
return FALSE;
}
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("HTTP客户端:%s,请求授权CDKEY成功,APP名:%s,APP版本:%s,授权期限:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer, st_Authorize.st_AuthRegInfo.tszLeftTime);
Authorize_Local_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize);
XEngine_Client_TaskSend(lpszClientAddr, tszRVBuffer, nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("HTTP客户端:%s,请求验证CDKEY成功,APP名:%s,APP版本:%s,授权期限:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer, st_Authorize.st_AuthRegInfo.tszLeftTime);
}
else
{
......
#pragma once
BOOL XEngine_AuthorizeHTTP_CDKey(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen, LPCTSTR lpszPass = NULL);
\ No newline at end of file
BOOL XEngine_AuthorizeHTTP_CDKey(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen);
\ No newline at end of file
......@@ -13,14 +13,14 @@ BOOL XEngine_AuthorizeHTTP_Switch(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, L
{
Protocol_Packet_HttpSwitch(tszSDBuffer, &nSDLen, &st_FunSwitch);
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求获取功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求获取功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice);
}
else if (0 == _tcsnicmp(lpszAPISet, lpszAPIName, _tcslen(lpszAPISet)))
{
Protocol_Parse_HttpParseSwitch(lpszMsgBuffer, nMsgLen, &st_FunSwitch);
Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen);
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求设置功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求设置功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice);
}
return TRUE;
......
......@@ -83,6 +83,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch;
#include "AuthorizeHTTP_Post/AuthorizeHTTP_Switch.h"
#include "AuthorizeHTTP_Post/AuthorizeHTTP_Banned.h"
#include "AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.h"
#include "AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.h"
#include "AuthorizeHTTP_Get/AuthorizeHTTP_Token.h"
#ifdef _WINDOWS
......
......@@ -84,6 +84,7 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
LPCTSTR lpszAPIVerSwitch = _T("switch");
LPCTSTR lpszAPIVerBanned = _T("banned");
LPCTSTR lpszAPIVerCDKey = _T("cdkey");
LPCTSTR lpszAPIVerNotice = _T("notice");
memset(tszAPIType, '\0', sizeof(tszAPIType));
memset(tszAPIVer, '\0', sizeof(tszAPIVer));
......@@ -196,25 +197,29 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
}
else if (0 == _tcsnicmp(lpszAPIVerCDKey, tszAPIVer, _tcslen(lpszAPIVerCDKey)))
{
int nListCount = 0;
TCHAR** pptszList;
RfcComponents_HttpHelp_GetParament(pSt_HTTPParament->tszHttpUri, &pptszList, &nListCount);
if (nListCount > 0)
XEngine_AuthorizeHTTP_CDKey(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen);
}
else if (0 == _tcsnicmp(lpszAPIVerNotice, tszAPIVer, _tcslen(lpszAPIVerNotice)))
{
AUTHREG_USERTABLE st_UserTable;
memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE));
//验证权限
Protocol_Parse_HttpParseToken(lpszMsgBuffer, nMsgLen, &xhToken);
if (!Session_Token_Get(xhToken, &st_UserTable))
{
TCHAR tszKeyBuffer[64];
TCHAR tszValueBuffer[64];
memset(tszKeyBuffer, '\0', sizeof(tszKeyBuffer));
memset(tszValueBuffer, '\0', sizeof(tszValueBuffer));
BaseLib_OperatorString_GetKeyValue(pptszList[0], "=", tszKeyBuffer, tszValueBuffer);
XEngine_AuthorizeHTTP_CDKey(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen, tszValueBuffer);
Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "Unauthorized");
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,请求的API:%s 失败,因为没有经过验证"), lpszClientAddr, pSt_HTTPParament->tszHttpUri);
return FALSE;
}
else
if (0 != st_UserTable.st_UserInfo.nUserLevel)
{
XEngine_AuthorizeHTTP_CDKey(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen);
Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed");
XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri);
return FALSE;
}
BaseLib_OperatorMemory_Free((XPPPMEM)&pptszList, nListCount);
XEngine_AuthorizeHTTP_Announcement(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen);
}
}
else if (0 == _tcsnicmp(lpszMethodGet, pSt_HTTPParament->tszHttpMethod, _tcslen(lpszMethodGet)))
......@@ -223,6 +228,7 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
TCHAR** pptszList;
TCHAR tszUrlName[128];
LPCTSTR lpszFuncName = _T("api");
LPCTSTR lpszAPIVerNotice = _T("notice");
memset(tszUrlName, '\0', sizeof(tszUrlName));
RfcComponents_HttpHelp_GetParament(pSt_HTTPParament->tszHttpUri, &pptszList, &nListCount, tszUrlName);
......@@ -234,7 +240,21 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParament->tszHttpUri);
return FALSE;
}
XEngine_AuthorizeHTTP_Token(lpszClientAddr, pptszList, nListCount);
TCHAR tszURLKey[128];
TCHAR tszURLValue[128];
memset(tszURLKey, '\0', sizeof(tszURLKey));
memset(tszURLValue, '\0', sizeof(tszURLValue));
BaseLib_OperatorString_GetKeyValue(pptszList[0], "=", tszURLKey, tszURLValue);
if (0 == _tcsnicmp(lpszAPIVerNotice, tszURLValue, _tcslen(lpszAPIVerNotice)))
{
XEngine_AuthorizeHTTP_Announcement(lpszClientAddr, "list", lpszMsgBuffer, nMsgLen);
}
else
{
XEngine_AuthorizeHTTP_Token(lpszClientAddr, pptszList, nListCount);
}
BaseLib_OperatorMemory_Free((XPPPMEM)&pptszList, nListCount);
}
else
......
#include "Authorize_Hdr.h"
//////////////////////////////////////////////////////////////////////////
BOOL __stdcall XEngine_Client_TCPAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
BOOL CALLBACK XEngine_Client_TCPAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
{
HelpComponents_Datas_CreateEx(xhTCPPacket, lpszClientAddr, 0);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("TCP客户端:%s,进入服务器"), lpszClientAddr);
return TRUE;
}
void __stdcall XEngine_Client_TCPRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam)
void CALLBACK XEngine_Client_TCPRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam)
{
if (!HelpComponents_Datas_PostEx(xhTCPPacket, lpszClientAddr, lpszRecvMsg, nMsgLen))
{
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("客户端:%s,投递数据包失败,大小:%d,错误:%lX"), lpszClientAddr, nMsgLen, Packets_GetLastError());
}
}
void __stdcall XEngine_Client_TCPClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
void CALLBACK XEngine_Client_TCPClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
{
XEngine_CloseClient(lpszClientAddr);
}
//////////////////////////////////////////////////////////////////////////
BOOL __stdcall XEngine_Client_WSAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
BOOL CALLBACK XEngine_Client_WSAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
{
RfcComponents_WSPacket_CreateEx(xhWSPacket, lpszClientAddr, 0);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("WS客户端:%s,进入服务器"), lpszClientAddr);
return TRUE;
}
void __stdcall XEngine_Client_WSRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam)
void CALLBACK XEngine_Client_WSRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam)
{
BOOL bLogin = FALSE;
RfcComponents_WSPacket_GetLoginEx(xhWSPacket, lpszClientAddr, &bLogin);
......@@ -47,25 +47,25 @@ void __stdcall XEngine_Client_WSRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPC
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("WS客户端:%s,握手成功"), lpszClientAddr);
}
}
void __stdcall XEngine_Client_WSClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
void CALLBACK XEngine_Client_WSClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
{
XEngine_CloseClient(lpszClientAddr);
}
//////////////////////////////////////////////////////////////////////////
BOOL __stdcall XEngine_Client_HttpAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
BOOL CALLBACK XEngine_Client_HttpAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
{
RfcComponents_HttpServer_CreateClientEx(xhHttpPacket, lpszClientAddr, 0);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,进入服务器"), lpszClientAddr);
return TRUE;
}
void __stdcall XEngine_Client_HttpRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam)
void CALLBACK XEngine_Client_HttpRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam)
{
if (!RfcComponents_HttpServer_InserQueueEx(xhHttpPacket, lpszClientAddr, lpszRecvMsg, nMsgLen))
{
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,投递数据包失败,大小:%d,错误:%lX"), lpszClientAddr, nMsgLen, Packets_GetLastError());
}
}
void __stdcall XEngine_Client_HttpClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
void CALLBACK XEngine_Client_HttpClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam)
{
XEngine_CloseClient(lpszClientAddr);
}
......
#pragma once
BOOL __stdcall XEngine_Client_TCPAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
void __stdcall XEngine_Client_TCPRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam);
void __stdcall XEngine_Client_TCPClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
BOOL CALLBACK XEngine_Client_TCPAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
void CALLBACK XEngine_Client_TCPRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam);
void CALLBACK XEngine_Client_TCPClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
BOOL __stdcall XEngine_Client_WSAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
void __stdcall XEngine_Client_WSRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam);
void __stdcall XEngine_Client_WSClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
BOOL CALLBACK XEngine_Client_WSAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
void CALLBACK XEngine_Client_WSRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam);
void CALLBACK XEngine_Client_WSClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
BOOL __stdcall XEngine_Client_HttpAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
void __stdcall XEngine_Client_HttpRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam);
void __stdcall XEngine_Client_HttpClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
BOOL CALLBACK XEngine_Client_HttpAccept(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
void CALLBACK XEngine_Client_HttpRecv(LPCTSTR lpszClientAddr, SOCKET hSocket, LPCTSTR lpszRecvMsg, int nMsgLen, LPVOID lParam);
void CALLBACK XEngine_Client_HttpClose(LPCTSTR lpszClientAddr, SOCKET hSocket, LPVOID lParam);
BOOL XEngine_CloseClient(LPCTSTR lpszClientAddr);
......
#include "Authorize_Hdr.h"
void __stdcall XEngine_TaskEvent_Client(LPCSTR lpszUserAddr, LPCSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCSTR lpszLeftDate, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, LPVOID lParam)
void CALLBACK XEngine_TaskEvent_Client(LPCSTR lpszUserAddr, LPCSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCSTR lpszLeftDate, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, LPVOID lParam)
{
if (nLeftTimer <= 0)
{
......@@ -46,7 +46,7 @@ void __stdcall XEngine_TaskEvent_Client(LPCSTR lpszUserAddr, LPCSTR lpszUserName
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("地址:%s,用户:%s,网络类型:%d,没有剩余时间,已经通知客户单超时,三方通知设置:%d"), lpszUserName, lpszUserAddr, nNetType, st_AuthConfig.st_XLogin.bPassAuth);
}
}
void __stdcall XEngine_TaskEvent_Token(XNETHANDLE xhToken, LPVOID lParam)
void CALLBACK XEngine_TaskEvent_Token(XNETHANDLE xhToken, LPVOID lParam)
{
AUTHREG_USERTABLE st_UserTable;
memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE));
......
#pragma once
void __stdcall XEngine_TaskEvent_Client(LPCSTR lpszUserAddr, LPCSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCSTR lpszLeftDate, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, LPVOID lParam);
void __stdcall XEngine_TaskEvent_Token(XNETHANDLE xhToken, LPVOID lParam);
\ No newline at end of file
void CALLBACK XEngine_TaskEvent_Client(LPCSTR lpszUserAddr, LPCSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCSTR lpszLeftDate, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, LPVOID lParam);
void CALLBACK XEngine_TaskEvent_Token(XNETHANDLE xhToken, LPVOID lParam);
\ No newline at end of file
......@@ -10,7 +10,7 @@ LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool
LIBEX = -ldl -lpthread
LOADSO = -Wl,-rpath=./,--disable-new-dtags
LIBINCLUDE = Authorize_Config.o Authorize_Net.o Authorize_Task.o Authorize_TCPTask.o Authorize_WSTask.o Authorize_HttpTask.o XEngine_AuthorizeService.o \
AuthorizeHTTP_Client.o AuthorizeHTTP_Serial.o AuthorizeHTTP_User.o AuthorizeHTTP_Pass.o AuthorizeHTTP_Switch.o AuthorizeHTTP_Banned.o AuthorizeHTTP_CDKey.o\
AuthorizeHTTP_Client.o AuthorizeHTTP_Serial.o AuthorizeHTTP_User.o AuthorizeHTTP_Pass.o AuthorizeHTTP_Switch.o AuthorizeHTTP_Banned.o AuthorizeHTTP_CDKey.o AuthorizeHTTP_Announcement.o \
AuthorizeHTTP_Token.o
ifeq ($(OS),Windows_NT)
......@@ -69,6 +69,8 @@ AuthorizeHTTP_Banned.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp
AuthorizeHTTP_CDKey.o:./AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp
AuthorizeHTTP_Announcement.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp
AuthorizeHTTP_Token.o:./AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp
......
......@@ -267,7 +267,7 @@ int main(int argc, char** argv)
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nHTTPThread);
}
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,密码验证:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_AuthConfig.st_XCrypto.bEnable);
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("所有服务成功启动,网络验证服务运行中,XEngien版本:%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_OperatorVer_XGetStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str());
while (TRUE)
......
......@@ -151,6 +151,7 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="AuthorizeHTTP_Get\AuthorizeHTTP_Token.cpp" />
<ClCompile Include="AuthorizeHTTP_Post\AuthorizeHTTP_Announcement.cpp" />
<ClCompile Include="AuthorizeHTTP_Post\AuthorizeHTTP_Banned.cpp" />
<ClCompile Include="AuthorizeHTTP_Post\AuthorizeHTTP_CDKey.cpp" />
<ClCompile Include="AuthorizeHTTP_Post\AuthorizeHTTP_Client.cpp" />
......@@ -168,6 +169,7 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="AuthorizeHTTP_Get\AuthorizeHTTP_Token.h" />
<ClInclude Include="AuthorizeHTTP_Post\AuthorizeHTTP_Announcement.h" />
<ClInclude Include="AuthorizeHTTP_Post\AuthorizeHTTP_Banned.h" />
<ClInclude Include="AuthorizeHTTP_Post\AuthorizeHTTP_CDKey.h" />
<ClInclude Include="AuthorizeHTTP_Post\AuthorizeHTTP_Client.h" />
......
......@@ -72,6 +72,9 @@
<ClCompile Include="AuthorizeHTTP_Post\AuthorizeHTTP_CDKey.cpp">
<Filter>源文件\AuthorizeHTTP_Post</Filter>
</ClCompile>
<ClCompile Include="AuthorizeHTTP_Post\AuthorizeHTTP_Announcement.cpp">
<Filter>源文件\AuthorizeHTTP_Post</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Authorize_Config.h">
......@@ -119,5 +122,8 @@
<ClInclude Include="AuthorizeHTTP_Post\AuthorizeHTTP_CDKey.h">
<Filter>头文件\AuthorizeHTTP_Post</Filter>
</ClInclude>
<ClInclude Include="AuthorizeHTTP_Post\AuthorizeHTTP_Announcement.h">
<Filter>头文件\AuthorizeHTTP_Post</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册