diff --git a/CHANGELOG b/CHANGELOG index 1360c032e18f70a6567aaab383aca68c970a9410..54c92205f2ae0495b37f1b89434a7e212dae331d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,29 @@ +XEngine_Authorize V3.13.0.1001 + +增加:管理程序支持CDKEY创建,打开,授权,初始化 +增加:授权验证模块 +增加:黑名单开关功能支持 +增加:mysql数据库支持 +增加:客户端模块加密支持 +增加:服务端程序CDKEY验证支持 +修改:现在默认使用sqlite数据库 +修改:服务器处理CDKEY协议支持更多字段 +修正:客户端登录加密协议返回处理不正确 +修正:黑名单处理不正确 +删除:局域网CDKEY支持 + +added:cdkey create,open,authorize,init for app management +added:authorize module +added:black function switch supported +added:mysql database support +added:encrypted support for client module +added:cdkey verification support for service +modify:configure use default sqlite +modify:server handle cdkey serial field and set serial field +fixed:Problem with client login protocol parsing failure after setting up encrypted communication +fixed:banned process is incorrect +delete:ver lan support for cdkey module +================================================================ XEngine_Authorize V3.12.1.1001 修改:用户列表刷新时间修改 diff --git a/README.en.md b/README.en.md index 32076aaffb010b0e18cd29bea2a03f9396b6414e..f45276916974f3ae4d9fcfa05397d4742aed3da9 100644 --- a/README.en.md +++ b/README.en.md @@ -19,12 +19,13 @@ Stable and reliable: based on C/C++, the core framework has been verified for 10 Flexible authentication: supports third-party authentication and authorization, supports distributed authentication and authorization, and can use its own user password system more functions: support various types of authorization -#### Version difference -V3 version, the protocol is basically reimplemented. It is no longer compatible with the V2 protocol. V3 is basically changed to the HTTP interface for management. The compatibility is better. Please check the documentation for more. -V2 Version can be update to V3,V3 DB Compatible with V2 Databse +#### Choose the Right One +Most products on the market either charge fees, update slowly, or lack complete functionality. They also lack technical support. With our product, you don't need to worry about these issues at all. +Our product is completely free and offers both free and paid technical support. It is rich in features and allows for custom development. You can start using our product now and experience the best and open-source time service available. ## Software feature -A simple and high-performance cross-platform network authentication and authorization server developed and implemented based on XEngine +Our feature list not only includes the following but also has many features in development. +You can refer to this webpage to learn about the features we plan to support in the future: https://github.com/libxengine/XEngine_Authorize/issues feature list: 1. support http.websocket protocols 2. Support Encrypto communication @@ -41,7 +42,7 @@ feature list: 13. support third user verification interface 14. support distributed verification authorize function 15. black list management -16. local cdkey support +16. cdkey support(local, network-number of times, time-user self-registration, system authorization-super multi-functional cdkey) 17. announecement management 18. support dynamic verifaction code 19. support mulit login and merge time @@ -109,6 +110,8 @@ port :tcp port 5300,websocket port 5301,http management port 5302,Transmission v ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/4.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/5.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/6.png "在这里输入图片标题") +![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/7.png "在这里输入图片标题") +![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/8.png "在这里输入图片标题") ## Participate in contribution @@ -127,9 +130,6 @@ Database update Use Navicat and other database software to open the judgment tab After modification, directly copy the database to the new version to overwrite, and modify your configuration file 3.11->3.12 A new time field has been added to the user table, please refer to the SQL file -## Authorization instructions -Use this software must be open source and indicate the source,If you want closed source and commercial,Then need to be authorized by the author. - ## Follow us If you think this software is helpful to you, please give us a START and wechat qr scan to follow us diff --git a/README.md b/README.md index 042a95eb6763f91c36cc873488493ce347a5c93f..12d045afb002a9ee61929a332eb1ea441f3112c5 100644 --- a/README.md +++ b/README.md @@ -19,12 +19,13 @@ c c++network Authorize service 灵活验证:支持第三方验证授权,支持分布式验证授权,可以使用自己的用户密码系统 功能丰富:支持各种类型授权,支持时间和次数等等模式 -#### 版本区别 -V3版本后协议基本重新实现,不在兼容V2协议,V3基本改为HTTP接口进行管理.兼容性更好.请查看文档获取更多. -V2可以直接升级到V3版本,因为数据库并没有修改,直接替换程序即可.数据库兼容V2版本 +#### 选择对的 +目前市面上的大多数产品不是收费就是产品更新慢,或者功能不全。没有技术支持。使用我们的产品你完全不需要有这方便的担心。 +我们的产品完全免费,提供免费技术支持和收费技术支持。功能丰富多样,还可以自主开发。现在,你就可以使用我们的产品并且体验目前最好的并且开源的授时服务. -## 软件特性 -基于XEngine开发并实现的一套简洁高性能跨平台网络验证授权服务器 +## 软件特性 +我们的功能列表不仅包括下面的,还有很多待开发的功能正在计划中。 +你可以参考这个网页了解我们未来支持的功能列表:https://github.com/libxengine/XEngine_Authorize/issues 软件特性: 1. 支持TCP,WEBSOCKET协议 2. 支持加密通信 @@ -41,7 +42,7 @@ V2可以直接升级到V3版本,因为数据库并没有修改,直接替换程 13. 支持第三方用户验证接口 14. 分布式验证授权功能支持 15. 黑名单管理 -16. 本地cdkey生成验证支持 +16. cdkey支持(本地,网络-次数,时间-用户自注册,系统授权-超多功能cdkey) 17. 支持公告管理 18. 支持动态验证码登录 19. 支持多端登录和合并用时 @@ -120,6 +121,8 @@ Linux or macos:直接运行即可 ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/4.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/5.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/6.png "在这里输入图片标题") +![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/7.png "在这里输入图片标题") +![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/8.png "在这里输入图片标题") ## 参与贡献 @@ -141,9 +144,6 @@ V3版本为全新版本,为了适应过多环境要求开发 ## 视频教程 你也可以观看视频教程来了解我们的代码框架情况:https://www.bilibili.com/video/BV1iF4m177aG -## 授权说明 -使用此软件必须开源并且注明出处,如果想闭源商用,那么需要经过作者授权. - ## 关注我们 如果你觉得这个软件对你有帮助,请你给我们一个START吧 也可以通过微信关注我们 diff --git a/XEngine_Apps/Authorize_APPClient.sln b/XEngine_Apps/Authorize_APPClient.sln index f7c0be39c1b3289150f5145e302b2a3c533a4b56..c2e56bc4c872ae5032c1405d296d7ea3ba5f700e 100644 --- a/XEngine_Apps/Authorize_APPClient.sln +++ b/XEngine_Apps/Authorize_APPClient.sln @@ -9,6 +9,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Authorize_APPLocal", "Autho EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Authorize_ClientModule", "Authorize_ClientModule\Authorize_ClientModule.vcxproj", "{82B923A9-2F4A-4784-A245-BAA6ABF5A358}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Authorize_CDKeyNetVer", "Authorize_CDKeyNetVer\Authorize_CDKeyNetVer.vcxproj", "{1D584651-5E93-43BA-9A48-E7D199DC587F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -41,6 +43,14 @@ Global {82B923A9-2F4A-4784-A245-BAA6ABF5A358}.Release|x64.Build.0 = Release|x64 {82B923A9-2F4A-4784-A245-BAA6ABF5A358}.Release|x86.ActiveCfg = Release|Win32 {82B923A9-2F4A-4784-A245-BAA6ABF5A358}.Release|x86.Build.0 = Release|Win32 + {1D584651-5E93-43BA-9A48-E7D199DC587F}.Debug|x64.ActiveCfg = Debug|x64 + {1D584651-5E93-43BA-9A48-E7D199DC587F}.Debug|x64.Build.0 = Debug|x64 + {1D584651-5E93-43BA-9A48-E7D199DC587F}.Debug|x86.ActiveCfg = Debug|Win32 + {1D584651-5E93-43BA-9A48-E7D199DC587F}.Debug|x86.Build.0 = Debug|Win32 + {1D584651-5E93-43BA-9A48-E7D199DC587F}.Release|x64.ActiveCfg = Release|x64 + {1D584651-5E93-43BA-9A48-E7D199DC587F}.Release|x64.Build.0 = Release|x64 + {1D584651-5E93-43BA-9A48-E7D199DC587F}.Release|x86.ActiveCfg = Release|Win32 + {1D584651-5E93-43BA-9A48-E7D199DC587F}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp index 841966bd673dc83ee584d61fd064396abb2b718b..42316c2b0a85870cb3e7adf88c446c1755c8358f 100644 --- a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp +++ b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp @@ -29,7 +29,6 @@ using namespace std; #include #include #include -#include #include "../../XEngine_Source/XAuth_Protocol.h" //Windows::vs2022 x86 debug 编译即可 @@ -123,10 +122,27 @@ int AuthClient_Register() int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; - APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); - printf("AuthClient_Register:\n%s\n", ptszMsgBuffer); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + if (bEncrypto) + { + XCHAR tszENBuffer[2048] = {}; + XCHAR tszDEBuffer[2048] = {}; + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszENBuffer, lpszPass); + APIClient_Http_Request(_X("POST"), lpszUrl, tszENBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); + printf("AuthClient_Register:\n%s\n", tszDEBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } + else + { + APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + + printf("AuthClient_Register:\n%s\n", ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } return 0; } int AuthClient_Pay() @@ -142,10 +158,26 @@ int AuthClient_Pay() int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; - APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); - printf("AuthClient_Pay:\n%s\n", ptszMsgBuffer); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + if (bEncrypto) + { + XCHAR tszENBuffer[2048] = {}; + XCHAR tszDEBuffer[2048] = {}; + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszENBuffer, lpszPass); + APIClient_Http_Request(_X("POST"), lpszUrl, tszENBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); + printf("AuthClient_Pay:\n%s\n", tszDEBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } + else + { + APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + printf("AuthClient_Pay:\n%s\n", ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } return 0; } int AuthClient_DynamicCode() @@ -155,15 +187,29 @@ int AuthClient_DynamicCode() int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; APIClient_Http_Request(_X("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nMsgLen); - printf("AuthClient_DynamicCode:\n%s\n", ptszMsgBuffer); Json::Value st_JsonRoot; JSONCPP_STRING st_JsonError; Json::CharReaderBuilder st_ReaderBuilder; std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + if (bEncrypto) { - return 0; + XCHAR tszDEBuffer[2048] = {}; + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); + if (!pSt_JsonReader->parse(tszDEBuffer, tszDEBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + return 0; + } + printf("AuthClient_DynamicCode:\n%s\n", tszDEBuffer); + } + else + { + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + return 0; + } + printf("AuthClient_DynamicCode:\n%s\n", ptszMsgBuffer); } XCHAR tszDCodeStr[64]; XCHAR tszTokenStr[64]; @@ -242,17 +288,31 @@ int AuthClient_Notice() int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; - APIClient_Http_Request(_X("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nMsgLen); - Json::Value st_JsonRoot; Json::Value st_JsonObject; JSONCPP_STRING st_JsonError; Json::CharReaderBuilder st_ReaderBuilder; std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + + APIClient_Http_Request(_X("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nMsgLen); + if (bEncrypto) + { + XCHAR tszDEBuffer[2048] = {}; + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); + if (!pSt_JsonReader->parse(tszDEBuffer, tszDEBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + return 0; + } + } + else { - return 0; + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + return 0; + } } + for (unsigned int i = 0; i < st_JsonRoot["Array"].size(); i++) { XCHAR tszMsgBuffer[2048]; @@ -286,9 +346,26 @@ int AuthClient_GetPass() int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; - APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); - printf("AuthClient_GetPass:\n%s\n", ptszMsgBuffer); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + + if (bEncrypto) + { + XCHAR tszENBuffer[2048] = {}; + XCHAR tszDEBuffer[2048] = {}; + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszENBuffer, lpszPass); + APIClient_Http_Request(_X("POST"), lpszUrl, tszENBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); + printf("AuthClient_GetPass:\n%s\n", tszDEBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } + else + { + APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + printf("AuthClient_GetPass:\n%s\n", ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } return 0; } @@ -304,9 +381,26 @@ int AuthClient_GetTime() int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; - APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); - printf("AuthClient_GetTime:\n%s\n", ptszMsgBuffer); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + + if (bEncrypto) + { + XCHAR tszENBuffer[2048] = {}; + XCHAR tszDEBuffer[2048] = {}; + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszENBuffer, lpszPass); + APIClient_Http_Request(_X("POST"), lpszUrl, tszENBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); + printf("AuthClient_GetTime:\n%s\n", tszDEBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } + else + { + APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + printf("AuthClient_GetTime:\n%s\n", ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } return 0; } @@ -326,10 +420,26 @@ int AuthClient_Delete() int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; - APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); - printf("AuthClient_Delete:\n%s\n", ptszMsgBuffer); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + if (bEncrypto) + { + XCHAR tszENBuffer[2048] = {}; + XCHAR tszDEBuffer[2048] = {}; + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszENBuffer, lpszPass); + APIClient_Http_Request(_X("POST"), lpszUrl, tszENBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); + printf("AuthClient_Delete:\n%s\n", tszDEBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } + else + { + APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + printf("AuthClient_Delete:\n%s\n", ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } return 0; } int AuthClient_Try() @@ -344,10 +454,26 @@ int AuthClient_Try() int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; - APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); - printf("AuthClient_Try:\n%s\n", ptszMsgBuffer); - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + if (bEncrypto) + { + XCHAR tszENBuffer[2048] = {}; + XCHAR tszDEBuffer[2048] = {}; + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszENBuffer, lpszPass); + APIClient_Http_Request(_X("POST"), lpszUrl, tszENBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); + printf("AuthClient_Try:\n%s\n", tszDEBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } + else + { + APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + printf("AuthClient_Try:\n%s\n", ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + } return 0; } int main() diff --git a/XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.cpp b/XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.cpp index ee4c4e8455db08a44dc326999fa2e5ed6fd13dc5..6b78a13b606baf988666b20dcbe2d47e66990ed9 100644 --- a/XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.cpp +++ b/XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.cpp @@ -4,12 +4,13 @@ #pragma comment(lib,"Ws2_32") #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") #pragma comment(lib,"XEngine_Core/XEngine_OPenSsl") -#pragma comment(lib,"XEngine_Client/XClient_APIHelp") -#pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Authorize") +#pragma comment(lib,"XEngine_SystemSdk/XEngine_SystemApi") #ifdef _WIN64 #pragma comment(lib,"../../XEngine_Source/x64/Debug/jsoncpp") +#pragma comment(lib,"../../XEngine_Source/x64/Debug/AuthorizeModule_CDKey") #else #pragma comment(lib,"../../XEngine_Source/Debug/jsoncpp") +#pragma comment(lib,"../../XEngine_Source/Debug/AuthorizeModule_CDKey") #endif #endif #include @@ -18,158 +19,213 @@ #include #include #include +#include #include #include #include #include #include -#include -#include -#include -#include +#include +#include +#include "../../XEngine_Source/XAuth_Protocol.h" +#include "../../XEngine_Source/AuthorizeModule_CDKey/CDKey_Define.h" +#include "../../XEngine_Source/AuthorizeModule_CDKey/CDKey_Error.h" //需要优先配置XEngine -//WINDOWS支持VS2022 x64 debug 编译调试 -//g++ -std=c++17 -Wall -g Authorize_APPLocal.cpp -o Authorize_APPLocal.exe -I ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -lXEngine_BaseLib -L ../../XEngine_Release -lXEngine_OPenSsl -lXClient_APIHelp -lHelpComponents_Authorize -ljsoncpp -Wl,-rpath=../../XEngine_Release +//WINDOWS支持VS2022 x86 debug 编译调试 +//g++ -std=c++17 -Wall -g Authorize_APPLocal.cpp -o Authorize_APPLocal.exe -I ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Release -lXEngine_BaseLib -lXEngine_OPenSsl -lXEngine_SystemApi -lAuthorizeModule_CDKey -ljsoncpp -Wl,-rpath=../../XEngine_Release -//#define XENGINE_AUTHORIZE_CDKEY_CRYPTO +XCHAR tszSerialStr[MAX_PATH] = {}; +//1.创建CDKEY.或者由管理员创建. +bool Authorize_APPLocal_Create(LPCXSTR lpszKeyFile, LPCXSTR lpszPasswd) +{ + int nRet = 0; + XCHAR tszENCodecBuffer[4096] = {}; + XCHAR tszDECodecBuffer[4096] = {}; + XENGINE_AUTHORIZE_LOCAL st_AuthLocal = {}; + SYSTEMAPI_SERIAL_INFOMATION st_SDKSerial = {}; + + SystemApi_HardWare_GetSerial(&st_SDKSerial); + //网络信息 + st_AuthLocal.nPort = 5302; + _tcsxcpy(st_AuthLocal.tszAddr, _X("http://app.xyry.org")); + //软件信息 + st_AuthLocal.st_AuthAppInfo.bInit = false; + st_AuthLocal.st_AuthAppInfo.nExecTime = 0; + _xstprintf(st_AuthLocal.st_AuthAppInfo.tszAppName, _X("XEngine_Authorize")); + _xstprintf(st_AuthLocal.st_AuthAppInfo.tszAppVer, _X("V1.0.0.1")); + //注册信息 + st_AuthLocal.st_AuthRegInfo.enHWType = ENUM_AUTHORIZE_MODULE_HW_TYPE_BIOS; + st_AuthLocal.st_AuthRegInfo.enRegType = ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_TRY; + st_AuthLocal.st_AuthRegInfo.enSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME; + st_AuthLocal.st_AuthRegInfo.enVModeType = ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_LOCAL; + st_AuthLocal.st_AuthRegInfo.nHasTime = 0; + BaseLib_OperatorTime_TimeToStr(st_AuthLocal.st_AuthRegInfo.tszCreateTime); + _tcsxcpy(st_AuthLocal.st_AuthRegInfo.tszHardware, st_SDKSerial.tszBoardSerial); + _xstprintf(st_AuthLocal.st_AuthRegInfo.tszLeftTime, _X("0")); //0次试用 + //序列号信息.可以不写,如果不想启用用户自己注册.或者交给管理员填充 + int nSerialCount = 3; + XCHAR** pptszSerialList; + Authorize_Serial_Create(&pptszSerialList, _X("XAUTH"), nSerialCount, 9); + _tcsxcpy(tszSerialStr, pptszSerialList[0]); + + st_AuthLocal.st_AuthSerial.st_TimeLimit.nTimeCount = 5; + _tcsxcpy(st_AuthLocal.st_AuthSerial.st_TimeLimit.tszTimeSerial, pptszSerialList[0]); + + st_AuthLocal.st_AuthSerial.st_DataLimit.bTimeAdd = false; + _tcsxcpy(st_AuthLocal.st_AuthSerial.st_DataLimit.tszDataSerial, pptszSerialList[1]); + XCHAR tszTimeStr[128] = {}; + XENGINE_LIBTIMER st_LibTime = {}; + BaseLib_OperatorTime_GetSysTime(&st_LibTime); + st_LibTime.wYear += 1; //一年后过期 + BaseLib_OperatorTime_TimeToStr(tszTimeStr, NULL, true, &st_LibTime); + + _tcsxcpy(st_AuthLocal.st_AuthSerial.st_DataLimit.tszDataTime, tszTimeStr); + + _tcsxcpy(st_AuthLocal.st_AuthSerial.st_UNLimit.tszUNLimitSerial, pptszSerialList[2]); + //用户信息 + _xstprintf(st_AuthLocal.st_AuthUserInfo.tszUserName, _X("qyt")); + _xstprintf(st_AuthLocal.st_AuthUserInfo.tszUserContact, _X("486179@qq.com")); + + Authorize_CDKey_WriteMemory(tszDECodecBuffer, &nRet, &st_AuthLocal); + OPenSsl_XCrypto_Encoder(tszDECodecBuffer, &nRet, (XBYTE*)tszENCodecBuffer, lpszPasswd); + FILE* pSt_File = _xtfopen(lpszKeyFile, _X("wb")); + if (NULL == pSt_File) + { + printf("create key file is failed\n"); + return false; + } + fwrite(tszENCodecBuffer, 1, nRet, pSt_File); + fclose(pSt_File); + + return true; +} +//2.打开CDKEY并且授权(授权只能通过自我授权或者由管理员授权,用户不应该可以自己随意授权) +bool Authorize_APPLocal_Auth(LPCXSTR lpszKeyFile, LPCXSTR lpszPasswd, LPCXSTR lpszSerialStr) +{ + XCHAR tszENCodecBuffer[4096] = {}; + XCHAR tszDECodecBuffer[4096] = {}; + XENGINE_AUTHORIZE_LOCAL st_AuthLocal = {}; + + FILE* pSt_File = _xtfopen(lpszKeyFile, _X("rb")); + if (NULL == pSt_File) + { + printf("open key file is failed\n"); + return false; + } + int nRet = fread(tszENCodecBuffer, 1, sizeof(tszENCodecBuffer), pSt_File); + fclose(pSt_File); + + OPenSsl_XCrypto_Decoder(tszENCodecBuffer, &nRet, tszDECodecBuffer, lpszPasswd); + //printf("大小:%d,内容:\n%s\n", nRet, tszDECodecBuffer); + + Authorize_CDKey_ReadMemory(tszDECodecBuffer, nRet, &st_AuthLocal); + if (!Authorize_CDKey_UserRegister(&st_AuthLocal, lpszSerialStr)) + { + printf("serila verifacation is failed,error code:%lX\n", Authorize_GetLastError()); + return false; + } + + memset(tszENCodecBuffer, '\0', sizeof(tszENCodecBuffer)); + memset(tszDECodecBuffer, '\0', sizeof(tszDECodecBuffer)); + Authorize_CDKey_WriteMemory(tszDECodecBuffer, &nRet, &st_AuthLocal); + OPenSsl_XCrypto_Encoder(tszDECodecBuffer, &nRet, (XBYTE*)tszENCodecBuffer, lpszPasswd); + pSt_File = _xtfopen(lpszKeyFile, _X("wb")); + fwrite(tszENCodecBuffer, 1, nRet, pSt_File); + fclose(pSt_File); + return true; +} +//3.验证CDkey +bool Authorize_APPLocal_Auth(LPCXSTR lpszKeyFile, LPCXSTR lpszPasswd) +{ + XCHAR tszENCodecBuffer[4096] = {}; + XCHAR tszDECodecBuffer[4096] = {}; + XENGINE_AUTHORIZE_LOCAL st_AuthLocal = {}; -LPCXSTR lpszPasswd = _X("123123"); + FILE* pSt_File = _xtfopen(lpszKeyFile, _X("rb")); + if (NULL == pSt_File) + { + printf("open key file is failed\n"); + return false; + } + int nRet = fread(tszENCodecBuffer, 1, sizeof(tszENCodecBuffer), pSt_File); + fclose(pSt_File); + OPenSsl_XCrypto_Decoder(tszENCodecBuffer, &nRet, tszDECodecBuffer, lpszPasswd); + //printf("大小:%d,内容:\n%s\n", nRet, tszDECodecBuffer); + Authorize_CDKey_ReadMemory(tszDECodecBuffer, nRet, &st_AuthLocal); + if (!Authorize_CDKey_GetLeftTimer(&st_AuthLocal)) + { + //失败也需要重写CDKEY + memset(tszENCodecBuffer, '\0', sizeof(tszENCodecBuffer)); + memset(tszDECodecBuffer, '\0', sizeof(tszDECodecBuffer)); + Authorize_CDKey_WriteMemory(tszDECodecBuffer, &nRet, &st_AuthLocal); + OPenSsl_XCrypto_Encoder(tszDECodecBuffer, &nRet, (XBYTE*)tszENCodecBuffer, lpszPasswd); + pSt_File = _xtfopen(lpszKeyFile, _X("wb")); + fwrite(tszENCodecBuffer, 1, nRet, pSt_File); + fclose(pSt_File); + + printf("verifaction is failed\n"); + return false; + } + SYSTEMAPI_SERIAL_INFOMATION st_SDKSerial = {}; + SystemApi_HardWare_GetSerial(&st_SDKSerial); + + if (ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_LOCAL != st_AuthLocal.st_AuthRegInfo.enVModeType) + { + printf("cdkey does not support local verification\n"); + return false; + } + if (ENUM_AUTHORIZE_MODULE_HW_TYPE_BIOS != st_AuthLocal.st_AuthRegInfo.enHWType) + { + printf("cdkey serial type is incorrect\n"); + return false; + } + if (0 != _tcsxnicmp(st_SDKSerial.tszBoardSerial, st_AuthLocal.st_AuthRegInfo.tszHardware, _tcsxlen(st_SDKSerial.tszBoardSerial))) + { + printf("cdkey serial verification is failed\n"); + return false; + } + + memset(tszENCodecBuffer, '\0', sizeof(tszENCodecBuffer)); + memset(tszDECodecBuffer, '\0', sizeof(tszDECodecBuffer)); + Authorize_CDKey_WriteMemory(tszDECodecBuffer, &nRet, &st_AuthLocal); + OPenSsl_XCrypto_Encoder(tszDECodecBuffer, &nRet, (XBYTE*)tszENCodecBuffer, lpszPasswd); + pSt_File = _xtfopen(lpszKeyFile, _X("wb")); + fwrite(tszENCodecBuffer, 1, nRet, pSt_File); + fclose(pSt_File); + return true; +} int main() { #ifdef _MSC_BUILD WSADATA st_WSAData; WSAStartup(MAKEWORD(2, 2), &st_WSAData); -#endif - int nLen = 0; - int nCode = 0; - Json::Value st_JsonRoot; - Json::Value st_JsonAPPInfo; - Json::Value st_JsonREGInfo; - Json::Value st_JsonUserInfo; - st_JsonRoot["tszAddr"] = "http://app.xyry.org"; - st_JsonRoot["nPort"] = 5501; - - st_JsonAPPInfo["tszAppName"] = "XEngine"; - st_JsonAPPInfo["tszAppVer"] = "1.0.0.1001"; - - st_JsonREGInfo["tszHardware"] = "5501012NE21N"; - st_JsonREGInfo["enSerialType"] = ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME; - st_JsonREGInfo["enRegType"] = ENUM_HELPCOMPONENTS_AUTHORIZE_REG_TYPE_TRY; - st_JsonREGInfo["enHWType"] = ENUM_HELPCOMPONENTS_AUTHORIZE_HW_TYPE_CPU; - - st_JsonUserInfo["tszUserName"] = "qyt"; - st_JsonUserInfo["tszUserContact"] = "486179@qq.com"; - - st_JsonRoot["st_AuthAppInfo"] = st_JsonAPPInfo; - st_JsonRoot["st_AuthRegInfo"] = st_JsonREGInfo; - st_JsonRoot["st_AuthUserInfo"] = st_JsonUserInfo; - - XCHAR* ptszCreateBuffer = NULL; - LPCXSTR lpszCreateUrl = _X("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, (XBYTE *)tszCodecBuffer, lpszPasswd); - if (!APIClient_Http_Request(_X("POST"), lpszCreateUrl, tszCodecBuffer, &nCode, &ptszCreateBuffer, &nLen)) + LPCXSTR lpszFileStr = _X("D:\\XEngine_Authorize\\XEngine_Apps\\Debug\\cd.key"); #else - if (!APIClient_Http_Request(_X("POST"), lpszCreateUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszCreateBuffer, &nLen)) + LPCXSTR lpszFileStr = _X("cd.key"); #endif - { - printf("发送投递失败!\n"); - return 0; - } + LPCXSTR lpszPasswd = _X("123123"); - XCHAR 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); - //2. 授权CDKEY - XCHAR* ptszAuthBuffer = NULL; - LPCXSTR lpszAuthUrl = _X("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, (XBYTE*)tszCodecBuffer, lpszPasswd); - if (!APIClient_Http_Request(_X("POST"), lpszAuthUrl, tszCodecBuffer, &nCode, &ptszAuthBuffer, &nLen)) -#else - if (!APIClient_Http_Request(_X("POST"), lpszAuthUrl, tszMsgBuffer, &nCode, &ptszAuthBuffer, &nLen)) -#endif + if (!Authorize_APPLocal_Create(lpszFileStr, lpszPasswd)) { - printf("发送投递失败!\n"); - return 0; + return -1; } -#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO - //解密 - memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer)); - - OPenSsl_XCrypto_Decoder(ptszAuthBuffer, &nLen, tszCodecBuffer, lpszPasswd); - printf("接受到数据,大小:%d,内容:\n%s\n", nLen, tszCodecBuffer); - //你也可以通过授权模块的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 - XCHAR* ptszVerBuffer = NULL; - LPCXSTR lpszVerUrl = _X("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, (XBYTE*)tszCodecBuffer, lpszPasswd); - if (!APIClient_Http_Request(_X("POST"), lpszVerUrl, tszCodecBuffer, &nCode, &ptszVerBuffer, &nLen)) -#else - if (!APIClient_Http_Request(_X("POST"), lpszVerUrl, tszMsgBuffer, &nCode, &ptszVerBuffer, &nLen)) -#endif + Authorize_APPLocal_Auth(lpszFileStr, lpszPasswd); + + if (!Authorize_APPLocal_Auth(lpszFileStr, lpszPasswd, tszSerialStr)) { - printf("发送投递失败!\n"); - return 0; + return -1; } -#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); -#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)) + for (int i = 0; i < 10; i++) { + if (!Authorize_APPLocal_Auth(lpszFileStr, lpszPasswd)) + { + break; + } printf("ok\n"); } - else - { - printf("timeout\n"); - } #ifdef _MSC_BUILD WSACleanup(); #endif diff --git a/XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.vcxproj b/XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.vcxproj index a2d78fbf69d4c5514e8b8db7bc5b4c697c047595..4ad74c20f27c60dbee7520a215c922830619dd97 100644 --- a/XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.vcxproj +++ b/XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.vcxproj @@ -82,7 +82,7 @@ Level3 true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true diff --git a/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.cpp b/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f03642be24ee05e8278fc2bb2f91d66da5770c1b --- /dev/null +++ b/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.cpp @@ -0,0 +1,180 @@ +#ifdef _MSC_BUILD +#include +#include +#pragma comment(lib,"Ws2_32") +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") +#pragma comment(lib,"XEngine_Core/XEngine_OPenSsl") +#pragma comment(lib,"XEngine_Client/XClient_APIHelp") +#ifdef _WIN64 +#pragma comment(lib,"../../XEngine_Source/x64/Debug/jsoncpp") +#pragma comment(lib,"../../XEngine_Source/x64/Debug/AuthorizeModule_CDKey") +#else +#pragma comment(lib,"../../XEngine_Source/Debug/jsoncpp") +#pragma comment(lib,"../../XEngine_Source/Debug/AuthorizeModule_CDKey") +#endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../XEngine_Source/XAuth_Protocol.h" +#include "../../XEngine_Source/AuthorizeModule_CDKey/CDKey_Define.h" +#include "../../XEngine_Source/AuthorizeModule_CDKey/CDKey_Error.h" + +//需要优先配置XEngine +//WINDOWS支持VS2022 x64 debug 编译调试 +//g++ -std=c++17 -Wall -g Authorize_CDKeyNetVer.cpp -o Authorize_CDKeyNetVer.exe -I ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -lXEngine_BaseLib -L ../../XEngine_Release -lXEngine_OPenSsl -lXClient_APIHelp -lAuthorizeModule_CDKey -ljsoncpp -Wl,-rpath=../../XEngine_Release + +//#define XENGINE_AUTHORIZE_CDKEY_CRYPTO + +LPCXSTR lpszPasswd = _X("123123"); + +int main() +{ +#ifdef _MSC_BUILD + WSADATA st_WSAData; + WSAStartup(MAKEWORD(2, 2), &st_WSAData); +#endif + int nLen = 0; + int nCode = 0; + Json::Value st_JsonRoot; + Json::Value st_JsonAPPInfo; + Json::Value st_JsonREGInfo; + Json::Value st_JsonUserInfo; + st_JsonRoot["tszAddr"] = "http://app.xyry.org"; + st_JsonRoot["nPort"] = 5501; + + st_JsonAPPInfo["tszAppName"] = "XEngine"; + st_JsonAPPInfo["tszAppVer"] = "1.0.0.1001"; + + st_JsonREGInfo["tszHardware"] = "5501012NE21N"; + st_JsonREGInfo["enSerialType"] = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME; + st_JsonREGInfo["enRegType"] = ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_TRY; + st_JsonREGInfo["enHWType"] = ENUM_AUTHORIZE_MODULE_HW_TYPE_CPU; + st_JsonREGInfo["enVModeType"] = ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_LOCAL; + + st_JsonUserInfo["tszUserName"] = "qyt"; + st_JsonUserInfo["tszUserContact"] = "486179@qq.com"; + + st_JsonRoot["st_AuthAppInfo"] = st_JsonAPPInfo; + st_JsonRoot["st_AuthRegInfo"] = st_JsonREGInfo; + st_JsonRoot["st_AuthUserInfo"] = st_JsonUserInfo; + + XCHAR* ptszCreateBuffer = NULL; + LPCXSTR lpszCreateUrl = _X("http://127.0.0.1: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, (XBYTE*)tszCodecBuffer, lpszPasswd); + if (!APIClient_Http_Request(_X("POST"), lpszCreateUrl, tszCodecBuffer, &nCode, &ptszCreateBuffer, &nLen)) +#else + if (!APIClient_Http_Request(_X("POST"), lpszCreateUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszCreateBuffer, &nLen)) +#endif + { + printf("发送投递失败!\n"); + return 0; + } + + XCHAR 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); + //2. 授权CDKEY + XCHAR* ptszAuthBuffer = NULL; + LPCXSTR lpszAuthUrl = _X("http://127.0.0.1:5302/auth/cdkey/auth"); +#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO + //加密 + memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer)); + nLen = nLen; + OPenSsl_XCrypto_Encoder(tszMsgBuffer, &nLen, (XBYTE*)tszCodecBuffer, lpszPasswd); + if (!APIClient_Http_Request(_X("POST"), lpszAuthUrl, tszCodecBuffer, &nCode, &ptszAuthBuffer, &nLen)) +#else + if (!APIClient_Http_Request(_X("POST"), lpszAuthUrl, tszMsgBuffer, &nCode, &ptszAuthBuffer, &nLen)) +#endif + { + printf("发送投递失败!\n"); + return 0; + } +#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO + //解密 + memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer)); + + OPenSsl_XCrypto_Decoder(ptszAuthBuffer, &nLen, tszCodecBuffer, lpszPasswd); + printf("接受到数据,大小:%d,内容:\n%s\n", nLen, tszCodecBuffer); + //你也可以通过授权模块的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 + XCHAR* ptszVerBuffer = NULL; + LPCXSTR lpszVerUrl = _X("http://127.0.0.1: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, (XBYTE*)tszCodecBuffer, lpszPasswd); + if (!APIClient_Http_Request(_X("POST"), lpszVerUrl, tszCodecBuffer, &nCode, &ptszVerBuffer, &nLen)) +#else + if (!APIClient_Http_Request(_X("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_CDKey_ReadMemory(tszCodecBuffer, nLen, &st_Authorize); +#else + printf("接受到数据,大小:%d,内容:\n%s\n", nLen, ptszVerBuffer); + Authorize_CDKey_ReadMemory(ptszVerBuffer, nLen, &st_Authorize); +#endif + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszVerBuffer); + + //4. 也可以本地验证 + if (Authorize_CDKey_GetLeftTimer(&st_Authorize)) + { + printf("ok\n"); + } + else + { + printf("timeout\n"); + } +#ifdef _MSC_BUILD + WSACleanup(); +#endif + return 0; +} \ No newline at end of file diff --git a/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj b/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..293a83664f99d3c5f3f41d347daef0810c26e33f --- /dev/null +++ b/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {1d584651-5e93-43ba-9a48-e7d199dc587f} + AuthorizeCDKeyNetVer + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Lib32);../../XEngine_Source/Debug;$(LibraryPath) + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj.filters b/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..fc8a9ebab8ef5b52368ac2d8582710b8d62d8641 --- /dev/null +++ b/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + \ No newline at end of file diff --git a/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj.user b/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj.user new file mode 100644 index 0000000000000000000000000000000000000000..88a550947edbc3c5003a41726f0749201fdb6822 --- /dev/null +++ b/XEngine_Apps/Authorize_CDKeyNetVer/Authorize_CDKeyNetVer.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index e5e5cb272438a8932715aa2963504848eee61122..232688fa463b8dc67238d7e0f49d1260da056232 100644 Binary files a/XEngine_Docment/Docment_en.docx and b/XEngine_Docment/Docment_en.docx differ diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index 3d688c4f0cc7705610ba192f970b89394b5e7089..a66c0f0142068791ac1db7cda682864f8a023d06 100644 Binary files a/XEngine_Docment/Docment_zh.docx and b/XEngine_Docment/Docment_zh.docx differ diff --git a/XEngine_Release/APPVer.key b/XEngine_Release/APPVer.key new file mode 100644 index 0000000000000000000000000000000000000000..9fe9b3e9d6abf57c1956f5b4d4bc9919e8979c45 Binary files /dev/null and b/XEngine_Release/APPVer.key differ diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 977c10c4c1ebd0e6ea58f0b2a7a630f71cba7bad..58fec8ae6c903f8c5af2b7362016c96268818d9f 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -18,7 +18,11 @@ "nVerTime":5, "nVerMode":2, "nTryTime":30, - "nTryMode":1 + "nTryMode":1, + "st_XCDKey":{ + "tszKeyFile":"./APPVer.key", + "tszKeyPass":"123123qa" + } }, "XLogin":{ "bHTTPAuth":false, @@ -40,8 +44,13 @@ "bEnable":false, "nPass":123123 }, - "XSQL":{ - "tszSQLFile":"./XEngine_DataBase/SQL_User.db" + "XSql":{ + "nSQLType":0, + "SQLAddr": "127.0.0.1", + "SQLPort": 3306, + "SQLUser": "root", + "SQLPass": "123123", + "SQLFile":"./XEngine_DataBase/SQL_User.db" }, "XLog":{ "tszLogFile":"./XEngine_XLog/XEngine_Authorize.log", @@ -54,4 +63,4 @@ "tszServiceName":"XEngine_Authorize", "tszAPIUrl":"http://app.xyry.org:5501/api?function=machine" } -} \ No newline at end of file +} diff --git a/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json b/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json index d03d0e29d96c987eec8918de4c2bf56c721be249..d6de5d2f64a0701f16acc1dd178221db3561a044 100644 --- a/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json @@ -9,5 +9,6 @@ "bSwitchNotice":true, "bSwitchDCode":false, "bSwitchMulti":true, - "bSwitchTry":true + "bSwitchTry":true, + "bSwitchBanned":true } \ No newline at end of file diff --git a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json index 0b15c7e3605783ae85dbd5286081d8caab75bf9c..f092b97af9e34d7ccc49755c3bb2441a63f8c672 100644 --- a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json @@ -1,5 +1,6 @@ { "XVer":[ + "V3.13.0.1001 Build20240715", "V3.12.1.1001 Build20240621", "V3.12.0.1001 Build20240513", "V3.11.0.1001 Build20240223", diff --git a/XEngine_SQL/mysql.sql b/XEngine_SQL/mysql.sql new file mode 100644 index 0000000000000000000000000000000000000000..22e774e9d07e3f95916e52e8ab6d4b3444c2cfc9 --- /dev/null +++ b/XEngine_SQL/mysql.sql @@ -0,0 +1,150 @@ +/* + Navicat Premium Data Transfer + + Source Server : 本地mysql + Source Server Type : MySQL + Source Server Version : 50726 + Source Host : localhost:3306 + Source Schema : xengine_authorize + + Target Server Type : MySQL + Target Server Version : 50726 + File Encoding : 65001 + + Date: 04/07/2024 20:51:48 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for Authorize_Announcement +-- ---------------------------- +DROP TABLE IF EXISTS `Authorize_Announcement`; +CREATE TABLE `Authorize_Announcement` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `tszContext` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `tszCreateTime` date NULL DEFAULT NULL, + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of Authorize_Announcement +-- ---------------------------- + + +-- ---------------------------- +-- Table structure for Authorize_BannedAddr +-- ---------------------------- +DROP TABLE IF EXISTS `Authorize_BannedAddr`; +CREATE TABLE `Authorize_BannedAddr` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `bEnable` tinyint(4) NOT NULL, + `tszIPAddr` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `tszLeftTime` datetime NULL DEFAULT NULL, + `tszCreateTime` datetime NOT NULL, + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of Authorize_BannedAddr +-- ---------------------------- + +-- ---------------------------- +-- Table structure for Authorize_BannedUser +-- ---------------------------- +DROP TABLE IF EXISTS `Authorize_BannedUser`; +CREATE TABLE `Authorize_BannedUser` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `bEnable` tinyint(1) NOT NULL, + `tszUserName` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `tszLeftTime` datetime NULL DEFAULT NULL, + `tszCreateTime` datetime NOT NULL, + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of Authorize_BannedUser +-- ---------------------------- + + +-- ---------------------------- +-- Table structure for Authorize_Serial +-- ---------------------------- +DROP TABLE IF EXISTS `Authorize_Serial`; +CREATE TABLE `Authorize_Serial` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `UserName` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `SerialNumber` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `MaxTime` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL, + `CardSerialType` int(11) NULL DEFAULT NULL, + `bIsUsed` tinyint(1) NULL DEFAULT NULL, + `CreateTime` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of Authorize_Serial +-- ---------------------------- + +-- ---------------------------- +-- Table structure for Authorize_TempVer +-- ---------------------------- +DROP TABLE IF EXISTS `Authorize_TempVer`; +CREATE TABLE `Authorize_TempVer` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `tszVSerial` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `nVMode` int(11) NOT NULL, + `nVTime` int(11) NOT NULL, + `nLTime` int(11) NOT NULL, + `CreateTime` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of Authorize_TempVer +-- ---------------------------- + +-- ---------------------------- +-- Table structure for Authorize_User +-- ---------------------------- +DROP TABLE IF EXISTS `Authorize_User`; +CREATE TABLE `Authorize_User` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `UserName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名', + `Password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码', + `LeftTime` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '剩余时间', + `EmailAddr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '电子邮件', + `HardCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '设备SN', + `CardSerialType` int(11) NOT NULL, + `PhoneNumber` bigint(20) NOT NULL COMMENT '电话号码', + `IDCard` bigint(20) NOT NULL COMMENT '身份证', + `nUserLevel` int(11) NOT NULL COMMENT '用户等级,数字越小越高', + `UPTime` datetime NULL DEFAULT NULL COMMENT '登录时间', + `CreateTime` datetime NOT NULL COMMENT '注册时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of Authorize_User +-- ---------------------------- +INSERT INTO `Authorize_User` VALUES (1, 'admin', '123123aa', '0', '486179@qq.com', 'DAFD2A2DAD', 1, 13699430000, 511025198881118888, 0, '2022-09-21 15:06:45', '2022-09-21 15:06:45'); +-- ---------------------------- +-- Table structure for Sqlite_Sequence +-- ---------------------------- +DROP TABLE IF EXISTS `Sqlite_Sequence`; +CREATE TABLE `Sqlite_Sequence` ( + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL, + `seq` int(11) NULL DEFAULT NULL +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of Sqlite_Sequence +-- ---------------------------- +INSERT INTO `Sqlite_Sequence` VALUES ('Authorize_BannedUser', 6); +INSERT INTO `Sqlite_Sequence` VALUES ('Authorize_BannedAddr', 5); +INSERT INTO `Sqlite_Sequence` VALUES ('Authorize_TempVer', 1); +INSERT INTO `Sqlite_Sequence` VALUES ('Authorize_Serial', 10); +INSERT INTO `Sqlite_Sequence` VALUES ('Authorize_User', 5); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.def b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.def new file mode 100644 index 0000000000000000000000000000000000000000..99100dc554f1e8e90483c5fd219e78cae95d7267 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.def @@ -0,0 +1,18 @@ +LIBRARY + +EXPORTS + Authorize_GetLastError + + Authorize_Serial_Creator + Authorize_Serial_Create + Authorize_Serial_GetType + + Authorize_CDKey_WriteKey + Authorize_CDKey_ReadKey + Authorize_CDKey_WriteMemory + Authorize_CDKey_ReadMemory + Authorize_CDKey_BuildKeyTime + Authorize_CDKey_UserRegister + Authorize_CDKey_GetLeftTimer + Authorize_CDKey_WriteTime + Authorize_CDKey_ReadTime \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..dbcf2a59a575f0332f5e0654220285c551847150 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj @@ -0,0 +1,186 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {02a75bd0-416e-4aef-bf34-bd85bd86384f} + AuthorizeModuleCDKey + 10.0 + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + $(XEngine_Include);..\AuthorizeModule_CDKey;$(IncludePath) + $(XEngine_Lib32);$(LibraryPath) + + + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib64);$(LibraryPath) + + + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib32);$(LibraryPath) + + + $(XEngine_Include);$(IncludePath) + $(XEngine_Lib64);$(LibraryPath) + + + + Level3 + true + WIN32;_DEBUG;AUTHORIZEMODULECDKEY_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + AuthorizeModule_CDKey.def + + + + + Level3 + true + true + true + WIN32;NDEBUG;AUTHORIZEMODULECDKEY_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + AuthorizeModule_CDKey.def + + + + + Level3 + true + _DEBUG;AUTHORIZEMODULECDKEY_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + AuthorizeModule_CDKey.def + + + + + Level3 + true + true + true + NDEBUG;AUTHORIZEMODULECDKEY_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + AuthorizeModule_CDKey.def + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj.filters b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..03c0f6a567b40658a898f682e827a7535f5f82cb --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj.filters @@ -0,0 +1,68 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {0a186122-00ae-4ad3-91b5-8a6fdf3950bc} + + + {c4ce44ad-ed56-48d6-92d8-49f68b1029d4} + + + {a33f91ec-f718-45b9-9ec5-d4f93a6482d0} + + + {39fc0e03-6422-475a-be30-30d77154b7d1} + + + + + 头文件 + + + 头文件 + + + 头文件\Authorize_CDKey + + + 头文件\Authorize_Serial + + + 头文件 + + + 头文件 + + + + + 源文件 + + + 源文件 + + + 源文件\Authorize_CDKey + + + 源文件\Authorize_Serial + + + + + 源文件 + + + \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj.user b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj.user new file mode 100644 index 0000000000000000000000000000000000000000..88a550947edbc3c5003a41726f0749201fdb6822 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/AuthorizeModule_CDKey.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp b/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp new file mode 100644 index 0000000000000000000000000000000000000000..158e5fe82cbfce4273d797c9cee5b03b4d25110e --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp @@ -0,0 +1,1279 @@ +#include "pch.h" +#include "Authorize_CDKey.h" +/******************************************************************** +// Created: 2024/07/08 17:30:39 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_CDKey\Authorize_CDKey.cpp +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_CDKey +// File Base: Authorize_CDKey +// File Ext: cpp +// Project: XEngine +// Author: qyt +// Purpose: 本地验证实现 +// History: +*********************************************************************/ +CAuthorize_CDKey::CAuthorize_CDKey() +{ +} +CAuthorize_CDKey::~CAuthorize_CDKey() +{ + +} +////////////////////////////////////////////////////////////////////////// +// 公有函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:Authorize_CDKey_WriteKey +函数功能:写一个CDKey文件 + 参数.一:lpszFileKey + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要操作的文件路径 + 参数.二:pSt_AuthLocal + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要写入的文件信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注:写入读取必须是明文,建议你加密处理CDKEY,通过OPENSSL模块,来加解密,在读写 +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_WriteKey(LPCXSTR lpszFileKey, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal) +{ + Authorize_IsErrorOccur = false; + + if ((NULL == lpszFileKey) || (NULL == pSt_AuthLocal)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + //添加连接信息文本 + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("Connection"), _X("tszAddr"), pSt_AuthLocal->tszAddr)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_CONNECT; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey, _X("Connection"), _X("nPort"), pSt_AuthLocal->nPort)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_CONNECT; + return false; + } + //添加程序名称文本 + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("AppInfo"), _X("tszAppName"), pSt_AuthLocal->st_AuthAppInfo.tszAppName)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_APPINFO; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey,_X("AppInfo"), _X("tszAppVer"), pSt_AuthLocal->st_AuthAppInfo.tszAppVer)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_APPINFO; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey, _X("AppInfo"), _X("nExecTime"), pSt_AuthLocal->st_AuthAppInfo.nExecTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_APPINFO; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey,_X("AppInfo"), _X("bInit"), pSt_AuthLocal->st_AuthAppInfo.bInit)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_APPINFO; + return false; + } + //更新使用时间 + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + XCHAR tszTimeStart[64]; + XCHAR tszTimeEnd[64]; + __int64x nUsedTime = 0; + + memset(tszTimeStart, '\0', sizeof(tszTimeStart)); + memset(tszTimeEnd, '\0', sizeof(tszTimeEnd)); + BaseLib_OperatorTime_TimeToStr(tszTimeEnd); + BaseLib_OperatorTimeSpan_GetForStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, tszTimeEnd, &nUsedTime, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + pSt_AuthLocal->st_AuthRegInfo.nHasTime -= nUsedTime; + } + //添加注册信息 + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey,_X("AuthReg"), _X("nHasTime"), pSt_AuthLocal->st_AuthRegInfo.nHasTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey,_X("AuthReg"), _X("enHWType"), pSt_AuthLocal->st_AuthRegInfo.enHWType)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey,_X("AuthReg"), _X("enRegType"), pSt_AuthLocal->st_AuthRegInfo.enRegType)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey,_X("AuthReg"), _X("enSerialType"), pSt_AuthLocal->st_AuthRegInfo.enSerialType)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey,_X("AuthReg"), _X("enVModeType"), pSt_AuthLocal->st_AuthRegInfo.enVModeType)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey,_X("AuthReg"), _X("tszHardware"), pSt_AuthLocal->st_AuthRegInfo.tszHardware)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + BaseLib_OperatorTime_TimeToStr(pSt_AuthLocal->st_AuthRegInfo.tszCreateTime); + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey,_X("AuthReg"), _X("tszCreateTime"), pSt_AuthLocal->st_AuthRegInfo.tszCreateTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey,_X("AuthReg"), _X("tszRegisterTime"), pSt_AuthLocal->st_AuthRegInfo.tszRegisterTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey,_X("AuthReg"), _X("tszLeftTime"), pSt_AuthLocal->st_AuthRegInfo.tszLeftTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey,_X("AuthReg"), _X("tszStartTime"), pSt_AuthLocal->st_AuthRegInfo.tszStartTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey,_X("AuthReg"), _X("tszExpiryTime"), pSt_AuthLocal->st_AuthRegInfo.tszExpiryTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + //临时序列号 + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("AuthSerial"), _X("tszTimeSerial"), pSt_AuthLocal->st_AuthSerial.st_TimeLimit.tszTimeSerial)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey, _X("AuthSerial"), _X("nTimeCount"), pSt_AuthLocal->st_AuthSerial.st_TimeLimit.nTimeCount)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("AuthSerial"), _X("tszDataSerial"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataSerial)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("AuthSerial"), _X("tszDataTime"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromFile(lpszFileKey, _X("AuthSerial"), _X("bTimeAdd"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.bTimeAdd)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("AuthSerial"), _X("tszUNLimitSerial"), pSt_AuthLocal->st_AuthSerial.st_UNLimit.tszUNLimitSerial)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + //自定义用户信息 + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("AuthUser"), _X("tszUserName"), pSt_AuthLocal->st_AuthUserInfo.tszUserName)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_USER; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("AuthUser"), _X("tszUserContact"), pSt_AuthLocal->st_AuthUserInfo.tszUserContact)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_USER; + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromFile(lpszFileKey, _X("AuthUser"), _X("tszCustom"), pSt_AuthLocal->st_AuthUserInfo.tszCustom)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_USER; + return false; + } + return true; +} +/******************************************************************** +函数名称:Authorize_CDKey_ReadKey +函数功能:读一个数据文件 + 参数.一:lpszFileKey + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要操作的文件路径 + 参数.二:pSt_AuthLocal + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:导出获取到的文件信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_ReadKey(LPCXSTR lpszFileKey, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal) +{ + Authorize_IsErrorOccur = false; + + if ((NULL == lpszFileKey) || (NULL == pSt_AuthLocal)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + //添加连接信息文本 + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("Connection"), _X("tszAddr"), pSt_AuthLocal->tszAddr) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_CONNECT; + return false; + } + pSt_AuthLocal->nPort = BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("Connection"), _X("nPort")); + //添加程序名称文本 + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AppInfo"), _X("tszAppName"), pSt_AuthLocal->st_AuthAppInfo.tszAppName) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_APPINFO; + return false; + } + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AppInfo"), _X("tszAppVer"), pSt_AuthLocal->st_AuthAppInfo.tszAppVer) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_APPINFO; + return false; + } + pSt_AuthLocal->st_AuthAppInfo.nExecTime = BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("AppInfo"), _X("nExecTime")); + pSt_AuthLocal->st_AuthAppInfo.bInit = BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("AppInfo"), _X("bInit")); + //添加注册信息 + pSt_AuthLocal->st_AuthRegInfo.enHWType = (ENUM_AUTHORIZE_MODULE_HW_TYPE)BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("AuthReg"), _X("enHWType")); + pSt_AuthLocal->st_AuthRegInfo.enRegType = (ENUM_AUTHORIZE_MODULE_CDKEY_TYPE)BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("AuthReg"), _X("enRegType")); + pSt_AuthLocal->st_AuthRegInfo.enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("AuthReg"), _X("enSerialType")); + pSt_AuthLocal->st_AuthRegInfo.enVModeType = (ENUM_AUTHORIZE_MODULE_VERMODE_TYPE)BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("AuthReg"), _X("enVModeType")); + pSt_AuthLocal->st_AuthRegInfo.nHasTime = BaseLib_OperatorFile_ReadInt64FromFile(lpszFileKey, _X("AuthReg"), _X("nHasTime")); + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthReg"), _X("tszHardware"), pSt_AuthLocal->st_AuthRegInfo.tszHardware) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthReg"), _X("tszCreateTime"), pSt_AuthLocal->st_AuthRegInfo.tszCreateTime) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthReg"), _X("tszRegisterTime"), pSt_AuthLocal->st_AuthRegInfo.tszRegisterTime) < 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthReg"), _X("tszLeftTime"), pSt_AuthLocal->st_AuthRegInfo.tszLeftTime) < 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthReg"), _X("tszStartTime"), pSt_AuthLocal->st_AuthRegInfo.tszStartTime) < 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + //设置启动时间 + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + XENGINE_LIBTIMER st_EndTimer; + XENGINE_LIBTIMER st_StartTime; + + memset(&st_EndTimer, '\0', sizeof(XENGINE_LIBTIMER)); + memset(&st_StartTime, '\0', sizeof(XENGINE_LIBTIMER)); + + BaseLib_OperatorTime_GetSysTime(&st_EndTimer); + BaseLib_OperatorTime_StrToTime(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, &st_StartTime); + if ((st_EndTimer.wYear != st_StartTime.wYear) || (st_EndTimer.wMonth != st_StartTime.wMonth) || (st_EndTimer.wDay != st_StartTime.wDay)) + { + pSt_AuthLocal->st_AuthRegInfo.nHasTime--; + } + BaseLib_OperatorTime_TimeToStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime); + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + memset(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, '\0', sizeof(pSt_AuthLocal->st_AuthRegInfo.tszStartTime)); + BaseLib_OperatorTime_TimeToStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime); + } + + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthReg"), _X("tszExpiryTime"), pSt_AuthLocal->st_AuthRegInfo.tszExpiryTime) < 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG; + return false; + } + //临时序列号 + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthSerial"), _X("tszTimeSerial"), pSt_AuthLocal->st_AuthSerial.st_TimeLimit.tszTimeSerial) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + pSt_AuthLocal->st_AuthSerial.st_TimeLimit.nTimeCount = BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("AuthSerial"), _X("nTimeCount")); + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthSerial"), _X("tszDataSerial"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataSerial) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthSerial"), _X("tszDataTime"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataTime) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + pSt_AuthLocal->st_AuthSerial.st_DataLimit.bTimeAdd = BaseLib_OperatorFile_ReadIntFromFile(lpszFileKey, _X("AuthSerial"), _X("bAddTime")); + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthSerial"), _X("tszUNLimitSerial"), pSt_AuthLocal->st_AuthSerial.st_UNLimit.tszUNLimitSerial) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL; + return false; + } + //用户信息 + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthUser"), _X("tszUserName"), pSt_AuthLocal->st_AuthUserInfo.tszUserName) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_USER; + return false; + } + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthUser"), _X("tszUserContact"), pSt_AuthLocal->st_AuthUserInfo.tszUserContact) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_USER; + return false; + } + if (BaseLib_OperatorFile_ReadProfileFromFile(lpszFileKey, _X("AuthUser"), _X("tszCustom"), pSt_AuthLocal->st_AuthUserInfo.tszCustom) < 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_USER; + return false; + } + return true; +} +/******************************************************************** +函数名称:Authorize_CDKey_WriteMemory +函数功能:写配置信息到内存 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:写到的内存 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:写到的内存大小 + 参数.三:pSt_AuthLocal + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要写的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_WriteMemory(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal) +{ + Authorize_IsErrorOccur = false; + + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen) || (NULL == pSt_AuthLocal)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + int nMsgLen = 0; + //添加连接信息文本 + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("Connection"), _X("tszAddr"), pSt_AuthLocal->tszAddr, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("Connection"), _X("nPort"), pSt_AuthLocal->nPort, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + //添加程序名称文本 + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AppInfo"), _X("tszAppName"), pSt_AuthLocal->st_AuthAppInfo.tszAppName, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AppInfo"), _X("tszAppVer"), pSt_AuthLocal->st_AuthAppInfo.tszAppVer, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AppInfo"), _X("nExecTime"), pSt_AuthLocal->st_AuthAppInfo.nExecTime, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AppInfo"), _X("bInit"), pSt_AuthLocal->st_AuthAppInfo.bInit, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + //更新使用时间 + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + XCHAR tszTimeStart[64]; + XCHAR tszTimeEnd[64]; + __int64x nUsedTime = 0; + + memset(tszTimeStart, '\0', sizeof(tszTimeStart)); + memset(tszTimeEnd, '\0', sizeof(tszTimeEnd)); + BaseLib_OperatorTime_TimeToStr(tszTimeEnd); + BaseLib_OperatorTimeSpan_GetForStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, tszTimeEnd, &nUsedTime, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + pSt_AuthLocal->st_AuthRegInfo.nHasTime -= nUsedTime; + } + //添加注册信息 + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("nHasTime"), pSt_AuthLocal->st_AuthRegInfo.nHasTime, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("enHWType"), pSt_AuthLocal->st_AuthRegInfo.enHWType, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("enRegType"), pSt_AuthLocal->st_AuthRegInfo.enRegType, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("enSerialType"), pSt_AuthLocal->st_AuthRegInfo.enSerialType, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("enVModeType"), pSt_AuthLocal->st_AuthRegInfo.enVModeType, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszHardware"), pSt_AuthLocal->st_AuthRegInfo.tszHardware, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + BaseLib_OperatorTime_TimeToStr(pSt_AuthLocal->st_AuthRegInfo.tszCreateTime); + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszCreateTime"), pSt_AuthLocal->st_AuthRegInfo.tszCreateTime, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszRegisterTime"), pSt_AuthLocal->st_AuthRegInfo.tszRegisterTime, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszLeftTime"), pSt_AuthLocal->st_AuthRegInfo.tszLeftTime, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszStartTime"), pSt_AuthLocal->st_AuthRegInfo.tszStartTime, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszExpiryTime"), pSt_AuthLocal->st_AuthRegInfo.tszExpiryTime, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + //临时序列号 + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("tszTimeSerial"), pSt_AuthLocal->st_AuthSerial.st_TimeLimit.tszTimeSerial, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("nTimeCount"), pSt_AuthLocal->st_AuthSerial.st_TimeLimit.nTimeCount, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("tszDataSerial"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataSerial, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("tszDataTime"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataTime, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteInt64FromMemory(ptszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("bAddTime"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.bTimeAdd, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("tszUNLimitSerial"), pSt_AuthLocal->st_AuthSerial.st_UNLimit.tszUNLimitSerial, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + //用户信息 + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthUser"), _X("tszUserName"), pSt_AuthLocal->st_AuthUserInfo.tszUserName, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthUser"), _X("tszUserContact"), pSt_AuthLocal->st_AuthUserInfo.tszUserContact, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_WriteProfileFromMemory(ptszMsgBuffer, nMsgLen, _X("AuthUser"), _X("tszCustom"), pSt_AuthLocal->st_AuthUserInfo.tszCustom, ptszMsgBuffer, &nMsgLen)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + *pInt_MsgLen = nMsgLen; + return true; +} +/******************************************************************** +函数名称:Authorize_CDKey_ReadMemory +函数功能:内存配置文件读取 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要读取配置的内存 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入读取内存大小 + 参数.三:pSt_AuthLocal + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出读取到的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_ReadMemory(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal) +{ + Authorize_IsErrorOccur = false; + + if ((NULL == lpszMsgBuffer) || (NULL == pSt_AuthLocal)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + //添加连接信息文本 + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("Connection"), _X("tszAddr"), pSt_AuthLocal->tszAddr)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadIntFromMemory(lpszMsgBuffer, nMsgLen, _X("Connection"), _X("nPort"), &pSt_AuthLocal->nPort)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + //添加程序名称文本 + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AppInfo"), _X("tszAppName"), pSt_AuthLocal->st_AuthAppInfo.tszAppName)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AppInfo"), _X("tszAppVer"), pSt_AuthLocal->st_AuthAppInfo.tszAppVer)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + BaseLib_OperatorFile_ReadIntFromMemory(lpszMsgBuffer, nMsgLen, _X("AppInfo"), _X("bInit"), (int*)&pSt_AuthLocal->st_AuthAppInfo.bInit); + BaseLib_OperatorFile_ReadInt64FromMemory(lpszMsgBuffer, nMsgLen, _X("AppInfo"), _X("nExecTime"), &pSt_AuthLocal->st_AuthAppInfo.nExecTime); + //添加注册信息 + BaseLib_OperatorFile_ReadIntFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("enHWType"), (int*)&pSt_AuthLocal->st_AuthRegInfo.enHWType); + BaseLib_OperatorFile_ReadIntFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("enRegType"), (int*)&pSt_AuthLocal->st_AuthRegInfo.enRegType); + BaseLib_OperatorFile_ReadIntFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("enSerialType"), (int*)&pSt_AuthLocal->st_AuthRegInfo.enSerialType); + BaseLib_OperatorFile_ReadIntFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("enVModeType"), (int*)&pSt_AuthLocal->st_AuthRegInfo.enVModeType); + BaseLib_OperatorFile_ReadInt64FromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("nHasTime"), &pSt_AuthLocal->st_AuthRegInfo.nHasTime); + + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszHardware"), pSt_AuthLocal->st_AuthRegInfo.tszHardware)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszCreateTime"), pSt_AuthLocal->st_AuthRegInfo.tszCreateTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszRegisterTime"), pSt_AuthLocal->st_AuthRegInfo.tszRegisterTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszLeftTime"), pSt_AuthLocal->st_AuthRegInfo.tszLeftTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszStartTime"), pSt_AuthLocal->st_AuthRegInfo.tszStartTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + //设置启动时间 + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + XENGINE_LIBTIMER st_EndTimer; + XENGINE_LIBTIMER st_StartTime; + + memset(&st_EndTimer, '\0', sizeof(XENGINE_LIBTIMER)); + memset(&st_StartTime, '\0', sizeof(XENGINE_LIBTIMER)); + + BaseLib_OperatorTime_GetSysTime(&st_EndTimer); + BaseLib_OperatorTime_StrToTime(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, &st_StartTime); + if ((st_EndTimer.wYear != st_StartTime.wYear) || (st_EndTimer.wMonth != st_StartTime.wMonth) || (st_EndTimer.wDay != st_StartTime.wDay)) + { + pSt_AuthLocal->st_AuthRegInfo.nHasTime--; + } + BaseLib_OperatorTime_TimeToStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime); + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + memset(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, '\0', sizeof(pSt_AuthLocal->st_AuthRegInfo.tszStartTime)); + BaseLib_OperatorTime_TimeToStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime); + } + + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthReg"), _X("tszExpiryTime"), pSt_AuthLocal->st_AuthRegInfo.tszExpiryTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + //序列号信息 + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("tszTimeSerial"), pSt_AuthLocal->st_AuthSerial.st_TimeLimit.tszTimeSerial)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadIntFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("nTimeCount"), &pSt_AuthLocal->st_AuthSerial.st_TimeLimit.nTimeCount)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("tszDataSerial"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataSerial)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("tszDataTime"), pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + BaseLib_OperatorFile_ReadIntFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("bAddTime"), (int*)&pSt_AuthLocal->st_AuthSerial.st_DataLimit.bTimeAdd); + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthSerial"), _X("tszUNLimitSerial"), pSt_AuthLocal->st_AuthSerial.st_UNLimit.tszUNLimitSerial)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + //用户信息 + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthUser"), _X("tszUserName"), pSt_AuthLocal->st_AuthUserInfo.tszUserName)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthUser"), _X("tszUserContact"), pSt_AuthLocal->st_AuthUserInfo.tszUserContact)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + if (!BaseLib_OperatorFile_ReadProfileFromMemory(lpszMsgBuffer, nMsgLen, _X("AuthUser"), _X("tszCustom"), pSt_AuthLocal->st_AuthUserInfo.tszCustom)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = BaseLib_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:Authorize_CDKey_BuildKeyTime +函数功能:构造注册的时间结构体信息 + 参数.一:pSt_AuthLocal + In/Out:In + 类型:结构体指针 + 可空:N + 意思:要构造的结构体 + 参数.二:nDayTimer + In/Out:In + 类型:整数型 + 可空:Y + 意思:可用时间或者次数.非自定义时间需要设置此值 + 参数.三:pSt_DayTimer + In/Out:In + 类型:结构体指针 + 可空:Y + 意思:如果是自定义时间,这个参数需要设置,其他类型请设置参数二 +返回值 + 类型:逻辑型 + 意思:是否构造成功 +备注:此函数会修改st_AuthRegInfo的时间信息成员,必须重写CDKEY +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_BuildKeyTime(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, __int64x nDayTimer /* = 0 */, XENGINE_LIBTIMER* pSt_DayTimer /* = NULL */) +{ + Authorize_IsErrorOccur = false; + + pSt_AuthLocal->st_AuthAppInfo.bInit = true; + //判断注册时间方式 + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + //按照到期时间计算 + _xstprintf(pSt_AuthLocal->st_AuthRegInfo.tszLeftTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), pSt_DayTimer->wYear, pSt_DayTimer->wMonth, pSt_DayTimer->wDay, pSt_DayTimer->wHour, pSt_DayTimer->wMinute, pSt_DayTimer->wSecond); + } + else + { + pSt_AuthLocal->st_AuthRegInfo.nHasTime = nDayTimer; + _xstprintf(pSt_AuthLocal->st_AuthRegInfo.tszLeftTime, _X("%lld"), nDayTimer); + } + return true; +} +/******************************************************************** +函数名称:Authorize_CDKey_UserRegister +函数功能:用户注册CDKEY函数 + 参数.一:pSt_AuthLocal + In/Out:In + 类型:结构体指针 + 可空:N + 意思:要构造的结构体 + 参数.二:lpszSerialStr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入注册验证的序列号 +返回值 + 类型:逻辑型 + 意思:是否构造成功 +备注:此函数会修改st_AuthRegInfo的时间信息成员,必须重写CDKEY +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_UserRegister(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, LPCXSTR lpszSerialStr) +{ + Authorize_IsErrorOccur = false; + + if (NULL == pSt_AuthLocal || NULL == lpszSerialStr) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + bool bSerial = false; + + if (0 == _tcsxncmp(pSt_AuthLocal->st_AuthSerial.st_TimeLimit.tszTimeSerial, lpszSerialStr, _tcsxlen(pSt_AuthLocal->st_AuthSerial.st_TimeLimit.tszTimeSerial))) + { + //次数验证 + bSerial = true; + pSt_AuthLocal->st_AuthRegInfo.enSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME; + pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_OFFICIAL; + Authorize_CDKey_BuildKeyTime(pSt_AuthLocal, pSt_AuthLocal->st_AuthSerial.st_TimeLimit.nTimeCount); + } + else if (0 == _tcsxncmp(pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataSerial, lpszSerialStr, _tcsxlen(pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataSerial))) + { + //日期序列 + bSerial = true; + pSt_AuthLocal->st_AuthRegInfo.enSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM; + pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_OFFICIAL; + XENGINE_LIBTIMER st_LibTime = {}; + BaseLib_OperatorTime_GetSysTime(&st_LibTime); + if (pSt_AuthLocal->st_AuthSerial.st_DataLimit.bTimeAdd) + { + __int64x nTimeCount = 0; + XENGINE_LIBTIMER st_AddTime = {}; + + BaseLib_OperatorTimeSpan_GetForStr(pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataTime, pSt_AuthLocal->st_AuthRegInfo.tszCreateTime, &nTimeCount); + st_AddTime.wDay = (int)nTimeCount; + BaseLib_OperatorTimeSpan_CalForStu(&st_LibTime, &st_AddTime); + + Authorize_CDKey_BuildKeyTime(pSt_AuthLocal, 0, &st_AddTime); + } + else + { + __int64x nTimeCount = 0; + XCHAR tszTimeStr[128] = {}; + XENGINE_LIBTIMER st_LibTime = {}; + BaseLib_OperatorTime_TimeToStr(tszTimeStr); + + BaseLib_OperatorTimeSpan_GetForStr(tszTimeStr, pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataTime, &nTimeCount); + if (nTimeCount <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_TIMEOUT; + return false; + } + BaseLib_OperatorTime_StrToTime(pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataTime, &st_LibTime); + Authorize_CDKey_BuildKeyTime(pSt_AuthLocal, 0, &st_LibTime); + } + } + else if (0 == _tcsxncmp(pSt_AuthLocal->st_AuthSerial.st_UNLimit.tszUNLimitSerial, lpszSerialStr, _tcsxlen(pSt_AuthLocal->st_AuthSerial.st_UNLimit.tszUNLimitSerial))) + { + //无限制 + bSerial = true; + pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_UNLIMIT; + } + + if (!bSerial) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_FAILED; + return false; + } + BaseLib_OperatorTime_TimeToStr(pSt_AuthLocal->st_AuthRegInfo.tszRegisterTime); + return true; +} +/******************************************************************** +函数名称:Authorize_CDKey_GetLeftTimer +函数功能:验证CDKey + 参数.一:pSt_AuthLocal + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入Authorize_CDKey_ReadKey获取到的值 + 参数.二:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:Y + 意思:如果CDKEY带序列号,可以输入序列号进行验证(优先序列号验证,失败进行常规CDKEY验证) +返回值 + 类型:逻辑型 + 意思:是否成功 +备注:无限制版本不做验证 + 其他验证nHasTime将被设置还拥有时间 + 此函数在程序启动的时候必须调用,可以设置更新CDKEY信息也可以验证CDKEY +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_GetLeftTimer(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, LPCXSTR lpszSerialNumber /* = NULL */) +{ + Authorize_IsErrorOccur = false; + + if (NULL == pSt_AuthLocal) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + //验证CDKEY本身情况 + XENGINE_LIBTIMER st_StartTimer; + XENGINE_LIBTIMER st_EndTimer; + XENGINE_LIBTIMER st_SysTimer; + + memset(&st_StartTimer, '\0', sizeof(XENGINE_LIBTIMER)); + memset(&st_EndTimer, '\0', sizeof(XENGINE_LIBTIMER)); + memset(&st_SysTimer, '\0', sizeof(XENGINE_LIBTIMER)); + + BaseLib_OperatorTime_TimeToStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime); + //处理注册类型 + if (ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_UNLIMIT == pSt_AuthLocal->st_AuthRegInfo.enRegType) + { + return true; + } + else if (ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_UNKNOW == pSt_AuthLocal->st_AuthRegInfo.enRegType) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_UNKNOW; + return false; + } + else if (ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_TEMP == pSt_AuthLocal->st_AuthRegInfo.enRegType) + { + if (_tcsxlen(pSt_AuthLocal->st_AuthRegInfo.tszExpiryTime) > 1) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_TEMP; + return false; + } + else + { + pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_EXPIRED; + _xstprintf(pSt_AuthLocal->st_AuthRegInfo.tszExpiryTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), st_SysTimer.wYear, st_SysTimer.wMonth, st_SysTimer.wDay, st_SysTimer.wHour, st_SysTimer.wMinute, st_SysTimer.wSecond); + } + } + else if (ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_EXPIRED == pSt_AuthLocal->st_AuthRegInfo.enRegType) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_EXPIRED; + return false; + } + else + { + //其他类型的注册机制 + BaseLib_OperatorTime_GetSysTime(&st_SysTimer); + //计算超时时间 + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_NOTSUPPORT; + return false; + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_NOTSUPPORT; + return false; + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + pSt_AuthLocal->st_AuthRegInfo.nHasTime--; + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == pSt_AuthLocal->st_AuthRegInfo.enSerialType) + { + _stxscanf(pSt_AuthLocal->st_AuthRegInfo.tszLeftTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), &st_EndTimer.wYear, &st_EndTimer.wMonth, &st_EndTimer.wDay, &st_EndTimer.wHour, &st_EndTimer.wMinute, &st_EndTimer.wSecond); + BaseLib_OperatorTimeSpan_GetForStu(&st_SysTimer, &st_EndTimer, &pSt_AuthLocal->st_AuthRegInfo.nHasTime, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + } + else + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_NOTSUPPORT; + return false; + } + if (pSt_AuthLocal->st_AuthRegInfo.nHasTime < 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_TIMEOUT; + pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_EXPIRED; + _xstprintf(pSt_AuthLocal->st_AuthRegInfo.tszExpiryTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), st_SysTimer.wYear, st_SysTimer.wMonth, st_SysTimer.wDay, st_SysTimer.wHour, st_SysTimer.wMinute, st_SysTimer.wSecond); + return false; + } + } + pSt_AuthLocal->st_AuthAppInfo.nExecTime++; + return true; +} +/******************************************************************** +函数名称:Authorize_CDKey_WriteTime +函数功能:记录一次执行时间 + 参数.一:lpszFileKey + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的文件 + 参数.二:nCount + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入最大允许记录个数,0不限制 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注:记录次数越多,文件越大.读取需要的内存就越多 +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_WriteTime(LPCXSTR lpszFileKey, int nCount /* = 0 */) +{ + Authorize_IsErrorOccur = false; + + if (NULL == lpszFileKey) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + //添加执行信息 + bool bFound = false; + LPCXSTR lpszTimeStr = _X("[TimeList]"); + FILE* pSt_File = _xtfopen(lpszFileKey, _X("r+")); + if (NULL == pSt_File) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_OPENFILE; + return false; + } + XCHAR tszMsgBuffer[MAX_PATH]; + memset(tszMsgBuffer, '\0', MAX_PATH); + //查找是否有时间列表字段 + while (1) + { + if (NULL == fgets(tszMsgBuffer, MAX_PATH, pSt_File)) + { + break; + } + if (0 == _tcsxncmp(lpszTimeStr, tszMsgBuffer, _tcsxlen(lpszTimeStr))) + { + bFound = true; + break; + } + } + //设置文件指针 + if (bFound) + { + //如果设置了最大个数 + if (nCount > 0) + { + int nListCount = 0; + XCHAR** pptszListTime; + //读取现有的 + Authorize_CDKey_ReadTime(lpszFileKey, &pptszListTime, &nListCount); + //是否大于14 >= 10 + if (nListCount >= nCount) + { + long lFSize = ftell(pSt_File); + //需要截断文件 + fclose(pSt_File); + int hFile = _xtopen(lpszFileKey, O_RDWR | O_CREAT, S_IREAD | S_IWRITE); +#ifdef _MSC_BUILD + if (0 != _chsize_s(hFile, lFSize)) +#else + if (0 != ftruncate(hFile, lFSize)) +#endif + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_SETFILE; + return false; + } + _close(hFile); + //重新打开文件 + pSt_File = _xtfopen(lpszFileKey, _X("r+")); + fseek(pSt_File, 0, SEEK_END); + //从我们要保留的地方开始轮训 + for (int i = (nListCount - nCount + 1); i < nListCount; i++) + { + fwrite(pptszListTime[i], 1, _tcsxlen(pptszListTime[i]), pSt_File); + fwrite(_X("|"), 1, 1, pSt_File); + } + } + else + { + //在末尾添加 + fseek(pSt_File, -1, SEEK_END); + XCHAR cChar = fgetc(pSt_File); + if (cChar == '\n') + { + fseek(pSt_File, -2, SEEK_END); + } + else + { + fseek(pSt_File, 0, SEEK_END); + } + } + } + else + { + //在末尾添加 + fseek(pSt_File, -1, SEEK_END); + XCHAR cChar = fgetc(pSt_File); + if (cChar == '\n') + { + fseek(pSt_File, -2, SEEK_END); + } + else + { + fseek(pSt_File, 0, SEEK_END); + } + } + } + else + { + fseek(pSt_File, 0, SEEK_END); + if (tszMsgBuffer[_tcsxlen(tszMsgBuffer) - 1] != '\n') + { + fwrite(_X("\n"), 1, 1, pSt_File); + } + fwrite(lpszTimeStr, 1, _tcsxlen(lpszTimeStr), pSt_File); + fwrite(_X("\n"), 1, 1, pSt_File); + } + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); +#ifdef _MSC_BUILD + _xstprintf(tszMsgBuffer, _X("%lld|"), time(NULL)); +#else + _xstprintf(tszMsgBuffer, _X("%ld|"), time(NULL)); +#endif + //追加 + fwrite(tszMsgBuffer, 1, _tcsxlen(tszMsgBuffer), pSt_File); + fclose(pSt_File); + return true; +} +/******************************************************************** +函数名称:Authorize_CDKey_ReadTime +函数功能:读取记录的时间列表信息 + 参数.一:lpszFileKey + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要读取的文件 + 参数.二:ppptszTimeList + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出时间信息列表 + 参数.三:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CAuthorize_CDKey::Authorize_CDKey_ReadTime(LPCXSTR lpszFileKey, XCHAR*** ppptszTimeList, int* pInt_ListCount) +{ + Authorize_IsErrorOccur = false; + + if ((NULL == lpszFileKey) || (NULL == pInt_ListCount)) + { + return false; + } + bool bFound = false; + LPCXSTR lpszTimeStr = _X("[TimeList]"); + FILE* pSt_File = _xtfopen(lpszFileKey, _X("rb")); + if (NULL == pSt_File) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_OPENFILE; + return false; + } + XCHAR tszMsgBuffer[MAX_PATH]; + //查找是否有时间列表字段 + while (1) + { + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + if (NULL == fgets(tszMsgBuffer, MAX_PATH, pSt_File)) + { + break; + } + if (0 == _tcsxncmp(lpszTimeStr, tszMsgBuffer, _tcsxlen(lpszTimeStr))) + { + bFound = true; + break; + } + } + //设置文件指针 + if (!bFound) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_TIMELIST; + return false; + } + list stl_ListTime; + struct stat st_FileStat; + stat(lpszFileKey, &st_FileStat); + //申请足够的内存 + XCHAR* ptszMsgBuffer = (XCHAR*)malloc(st_FileStat.st_size); + if (NULL == ptszMsgBuffer) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_MALLOC; + return false; + } + memset(ptszMsgBuffer, '\0', st_FileStat.st_size); + if (fread(ptszMsgBuffer, 1, st_FileStat.st_size, pSt_File) <= 0) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_READ; + free(ptszMsgBuffer); + ptszMsgBuffer = NULL; + return false; + } + //申请内存 + XCHAR* ptszTokStr = _tcsxtok(ptszMsgBuffer, _X("|")); + while (NULL != ptszTokStr) + { + if (_tcsxlen(ptszTokStr) > 4) + { + stl_ListTime.push_back(ptszTokStr); + } + ptszTokStr = _tcsxtok(NULL, _X("|")); + } + fclose(pSt_File); + free(ptszMsgBuffer); + ptszMsgBuffer = NULL; + //导出 + *pInt_ListCount = (int)stl_ListTime.size(); + BaseLib_OperatorMemory_Malloc((XPPPMEM)ppptszTimeList, *pInt_ListCount, 64); + list::const_iterator stl_ListIterator = stl_ListTime.begin(); + for (int i = 0; stl_ListIterator != stl_ListTime.end(); stl_ListIterator++, i++) + { + _tcsxcpy((*ppptszTimeList)[i], stl_ListIterator->c_str()); + } + stl_ListTime.clear(); + return true; +} \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.h b/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.h new file mode 100644 index 0000000000000000000000000000000000000000..987858457396611deccf8fda658897e69931471f --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.h @@ -0,0 +1,31 @@ +#pragma once +/******************************************************************** +// Created: 2024/07/08 17:27:26 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_CDKey\Authorize_CDKey.h +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_CDKey +// File Base: Authorize_CDKey +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 本地授权服务 +// History: +*********************************************************************/ + +class CAuthorize_CDKey +{ +public: + CAuthorize_CDKey(); + ~CAuthorize_CDKey(); +public: + bool Authorize_CDKey_WriteKey(LPCXSTR lpszFileKey, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal); + bool Authorize_CDKey_ReadKey(LPCXSTR lpszFileKey, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal); + bool Authorize_CDKey_WriteMemory(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal); + bool Authorize_CDKey_ReadMemory(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal); +public: + bool Authorize_CDKey_BuildKeyTime(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, __int64x nDayTimer = 0, XENGINE_LIBTIMER* pSt_DayTimer = NULL); + bool Authorize_CDKey_UserRegister(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, LPCXSTR lpszSerialStr); + bool Authorize_CDKey_GetLeftTimer(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, LPCXSTR lpszSerialNumber = NULL); + bool Authorize_CDKey_WriteTime(LPCXSTR lpszFileKey, int nCount = 0); + bool Authorize_CDKey_ReadTime(LPCXSTR lpszFileKey, XCHAR*** ppptszTimeList, int* pInt_ListCount); +private: +}; diff --git a/XEngine_Source/AuthorizeModule_CDKey/Authorize_Serial/Authorize_Serial.cpp b/XEngine_Source/AuthorizeModule_CDKey/Authorize_Serial/Authorize_Serial.cpp new file mode 100644 index 0000000000000000000000000000000000000000..10bce27724735ecd050a3a80cc494f804d912a55 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/Authorize_Serial/Authorize_Serial.cpp @@ -0,0 +1,509 @@ +#include "pch.h" +#include "Authorize_Serial.h" +/******************************************************************** +// Created: 2024/07/08 17:30:53 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_Serial\Authorize_Serial.cpp +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_Serial +// File Base: Authorize_Serial +// File Ext: cpp +// Project: XEngine +// Author: qyt +// Purpose: 序列卡生成器 +// History: +*********************************************************************/ +CAuthorize_Serial::CAuthorize_Serial() +{ + memset(tszTimerSecond, '\0', sizeof(tszTimerSecond)); + memset(tszTimerDay, '\0', sizeof(tszTimerDay)); + memset(tszTimerTime, '\0', sizeof(tszTimerTime)); + memset(tszTimerCustom, '\0', sizeof(tszTimerCustom)); + + _tcsxcpy(tszTimerSecond, _X("XYRYS")); + _tcsxcpy(tszTimerDay, _X("XYRYD")); + _tcsxcpy(tszTimerTime, _X("XYRYT")); + _tcsxcpy(tszTimerCustom, _X("XYRYC")); +} +CAuthorize_Serial::~CAuthorize_Serial() +{ + +} +////////////////////////////////////////////////////////////////////////// +// 公有函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:Authorize_Serial_Creator +函数功能:开始生成指定的序列号 + 参数.一:ppptszSerialNumber + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出序列卡列表,根据nCardNumber 来确定列表个数 + 参数.二:lpszUserHeader + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:自定义头,长度为6,填充5 比如 XHEAD + 参数.三:nCardNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:要生成多少张卡,生成多了,此函数会阻塞程序,那么请放置线程中运行 + 参数.四:nFieldNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:卡的段数,AAAAA-BBBBB-CCCCC-DDDDD-EEEEE,不包含三段自定义头,总字段:3 + nFieldNumber + 参数.五:pSt_CustomTimer + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:如果第五个参数为自定义日期,那么这个参数必须赋值。如果第五个参数为天数卡,这个结构体的nDay 必须赋值,表明拥有几天。 + 如果是分钟卡,那么这个值的nMinute必须有值,表示拥有的分钟.如果是次数卡,那么这个值的wFlags必须有值,表示拥有的次数,其他类型可以为NULL + 参数.六:enSerialType + In/Out:In + 类型:枚举型 + 可空:Y + 意思:要生成的卡类型 +返回值 + 类型:逻辑型 + 意思:是否生成成功 +备注:输入的时间不能超过99999,多天卡现在由用户直接使用pSt_CustomTimer参数指定,不在内部指定了 +*********************************************************************/ +bool CAuthorize_Serial::Authorize_Serial_Creator(XCHAR*** ppptszSerialNumber, LPCXSTR lpszUserHeader, int nCardNumber, int nFieldNumber, XENGINE_LIBTIMER* pSt_CustomTimer, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType /* = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY */) +{ + Authorize_IsErrorOccur = false; + //参数检查 + if ((NULL == ppptszSerialNumber) || (NULL == lpszUserHeader)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + BaseLib_OperatorMemory_Malloc((XPPPMEM)ppptszSerialNumber, nCardNumber, MAX_PATH); + srand((unsigned int)time(NULL)); //取随机因子 + + for (int i = 0; i < nCardNumber; i++) + { + XCHAR tszSerialNumber[MAX_PATH]; + memset(tszSerialNumber, '\0', MAX_PATH); + //检查生成类型 + switch (enSerialType) + { + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND: + { + if (NULL == pSt_CustomTimer) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + XCHAR tszFillBuffer[10]; + XCHAR tszDayBuffer[10]; + memset(tszFillBuffer, '\0', sizeof(tszFillBuffer)); + memset(tszDayBuffer, '\0', sizeof(tszDayBuffer)); + + Authorize_Serial_RandomWord(tszFillBuffer); + _xstprintf(tszDayBuffer, _X("%d"), pSt_CustomTimer->wSecond); + memcpy(tszFillBuffer + (_tcsxlen(tszFillBuffer) - _tcsxlen(tszDayBuffer)), tszDayBuffer, _tcsxlen(tszDayBuffer)); + + _xstprintf(tszSerialNumber, _X("%s-%s-%s"), lpszUserHeader, tszTimerSecond, tszFillBuffer); + if (!Authorize_Serial_Fill(tszSerialNumber, nFieldNumber)) + { + return false; + } + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY: + { + if (NULL == pSt_CustomTimer) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + XCHAR tszFillBuffer[10]; + XCHAR tszDayBuffer[10]; + memset(tszFillBuffer, '\0', sizeof(tszFillBuffer)); + memset(tszDayBuffer, '\0', sizeof(tszDayBuffer)); + + Authorize_Serial_RandomWord(tszFillBuffer); + _xstprintf(tszDayBuffer, _X("%d"), pSt_CustomTimer->wDay); + memcpy(tszFillBuffer + (_tcsxlen(tszFillBuffer) - _tcsxlen(tszDayBuffer)), tszDayBuffer, _tcsxlen(tszDayBuffer)); + + _xstprintf(tszSerialNumber, _X("%s-%s-%s"), lpszUserHeader, tszTimerDay, tszFillBuffer); + if (!Authorize_Serial_Fill(tszSerialNumber, nFieldNumber)) + { + return false; + } + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME: + XCHAR tszFillBuffer[10]; + XCHAR tszTimeBuffer[10]; + memset(tszFillBuffer, '\0', sizeof(tszFillBuffer)); + memset(tszTimeBuffer, '\0', sizeof(tszTimeBuffer)); + + Authorize_Serial_RandomWord(tszFillBuffer); + _xstprintf(tszTimeBuffer, _X("%d"), pSt_CustomTimer->wFlags); + memcpy(tszFillBuffer + (_tcsxlen(tszFillBuffer) - _tcsxlen(tszTimeBuffer)), tszTimeBuffer, _tcsxlen(tszTimeBuffer)); + + _xstprintf(tszSerialNumber, _X("%s-%s-%s"), lpszUserHeader, tszTimerTime, tszFillBuffer); + if (!Authorize_Serial_Fill(tszSerialNumber, nFieldNumber)) + { + return false; + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM: + if (NULL == pSt_CustomTimer) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + XCHAR tszTimer[128]; + memset(tszTimer, '\0', 128); + + if ((pSt_CustomTimer->wHour > 0) || (pSt_CustomTimer->wMinute > 0) || (pSt_CustomTimer->wSecond > 0)) + { + _xstprintf(tszTimer, _X("%04d%02d%02d-%02d%02d%02d"), pSt_CustomTimer->wYear, pSt_CustomTimer->wMonth, pSt_CustomTimer->wDay, pSt_CustomTimer->wHour, pSt_CustomTimer->wMinute, pSt_CustomTimer->wSecond); + nFieldNumber--; + } + else + { + _xstprintf(tszTimer, _X("%04d%02d%02d"), pSt_CustomTimer->wYear, pSt_CustomTimer->wMonth, pSt_CustomTimer->wDay); + } + _xstprintf(tszSerialNumber, _X("%s-%s-%s"), lpszUserHeader, tszTimerCustom, tszTimer); + if (!Authorize_Serial_Fill(tszSerialNumber, nFieldNumber)) + { + return false; + } + break; + default: + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_NOTSUPPORT; + return false; + } + _tcsxcpy((*ppptszSerialNumber)[i], tszSerialNumber); + } + return true; +} +/******************************************************************** +函数名称:Authorize_Serial_Creator +函数功能:创建自定义无类型序列号 + 参数.一:ppptszSerialNumber + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出序列卡列表,根据nCardNumber 来确定列表个数 + 参数.二:lpszUserHeader + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:自定义头,长度为6,填充5 比如 XHEAD + 参数.三:nCardNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:要生成多少张卡,生成多了,此函数会阻塞程序,那么请放置线程中运行 + 参数.四:nFieldNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:卡的段数,AAAAA-BBBBB-CCCCC-DDDDD-EEEEE +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CAuthorize_Serial::Authorize_Serial_Create(XCHAR*** ppptszSerialNumber, LPCXSTR lpszUserHeader, int nCardNumber, int nFieldNumber) +{ + Authorize_IsErrorOccur = false; + //参数检查 + if ((NULL == ppptszSerialNumber) || (NULL == lpszUserHeader)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + BaseLib_OperatorMemory_Malloc((XPPPMEM)ppptszSerialNumber, nCardNumber, MAX_PATH); + srand((unsigned int)time(NULL)); //取随机因子 + + for (int i = 0; i < nCardNumber; i++) + { + XCHAR tszSerialNumber[MAX_PATH]; + memset(tszSerialNumber, '\0', MAX_PATH);; + + _xstprintf(tszSerialNumber, _X("%s"), lpszUserHeader); + if (!Authorize_Serial_Fill(tszSerialNumber, nFieldNumber)) + { + return false; + } + _tcsxcpy((*ppptszSerialNumber)[i], tszSerialNumber); + } + return true; +} +/******************************************************************** +函数名称:Authorize_Serial_GetType +函数功能:获取一个序列号的类型 + 参数.一:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要获取的缓冲区 + 参数.二:penSerialType + In/Out:Out + 类型:枚举型 + 可空:Y + 意思:导出此卡的类型 + 参数.三:pSt_CustomTimer + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:如果不是自定义类型或者天数卡,或者次数卡,这个参数将不起作用 +返回值 + 类型:逻辑型 + 意思:是否获取成功 +备注: +*********************************************************************/ +bool CAuthorize_Serial::Authorize_Serial_GetType(LPCXSTR lpszSerialNumber, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE* penSerialType, XENGINE_LIBTIMER* pSt_CustomTimer /* = NULL */) +{ + Authorize_IsErrorOccur = false; + + if (NULL == penSerialType) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + + XCHAR tszBuffer[6]; + XCHAR tszBuffertemp[6]; + XCHAR tszTimeData[128]; + XCHAR tszTimeTime[128]; + + memset(tszBuffer, '\0', 6); + memset(tszBuffertemp, '\0', 6); + memset(tszTimeData, '\0', sizeof(tszTimeData)); + memset(tszTimeTime, '\0', sizeof(tszTimeTime)); + //获取指定内容 + if (4 != _stxscanf(lpszSerialNumber, _X("%[^-]-%[^-]-%[^-]-%[^-]"), tszBuffertemp, tszBuffer, tszTimeData, tszTimeTime)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_BUFFER; + return false; + } + //匹配类型 + if (0 == _tcsxncmp(tszTimerSecond, tszBuffer, 5)) + { + if (NULL == pSt_CustomTimer) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + unsigned int i = 0; + for (i = 0; i < _tcsxlen(tszTimeData); i++) + { + if (0 != isdigit(tszTimeData[i])) + { + break; + } + } + XCHAR tszIntBuffer[64]; + memset(tszIntBuffer, '\0', sizeof(tszIntBuffer)); + memcpy(tszIntBuffer, tszTimeData + i, _tcsxlen(tszTimeData) - i); + pSt_CustomTimer->wSecond = _ttxoi(tszIntBuffer); + + *penSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND; + } + else if (0 == _tcsxncmp(tszTimerDay, tszBuffer, 5)) + { + if (NULL == pSt_CustomTimer) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + unsigned int i = 0; + for (i = 0; i < _tcsxlen(tszTimeData); i++) + { + if (0 != isdigit(tszTimeData[i])) + { + break; + } + } + XCHAR tszIntBuffer[64]; + memset(tszIntBuffer, '\0', sizeof(tszIntBuffer)); + memcpy(tszIntBuffer, tszTimeData + i, _tcsxlen(tszTimeData) - i); + pSt_CustomTimer->wDay = _ttxoi(tszIntBuffer); + + *penSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY; + } + else if (0 == _tcsxncmp(tszTimerTime, tszBuffer, 5)) + { + if (NULL == pSt_CustomTimer) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + unsigned int i = 0; + for (i = 0; i < _tcsxlen(tszTimeData); i++) + { + if (0 != isdigit(tszTimeData[i])) + { + break; + } + } + XCHAR tszIntBuffer[64]; + memset(tszIntBuffer, '\0', sizeof(tszIntBuffer)); + memcpy(tszIntBuffer, tszTimeData + i, _tcsxlen(tszTimeData) - i); + pSt_CustomTimer->wFlags = _ttxoi(tszIntBuffer); + + *penSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME; + } + else if (0 == _tcsxncmp(tszTimerCustom, tszBuffer, 5)) + { + *penSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM; + if (NULL == pSt_CustomTimer) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT; + return false; + } + if (3 != _stxscanf(tszTimeData, _X("%04d%02d%02d"), &pSt_CustomTimer->wYear, &pSt_CustomTimer->wMonth, &pSt_CustomTimer->wDay)) + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_CUSTOM; + return false; + } + if (3 != _stxscanf(tszTimeTime, _X("%02d%02d%02d"), &pSt_CustomTimer->wHour, &pSt_CustomTimer->wMinute, &pSt_CustomTimer->wSecond)) + { + pSt_CustomTimer->wHour = 0; + pSt_CustomTimer->wMinute = 0; + pSt_CustomTimer->wSecond = 0; + } + } + else + { + Authorize_IsErrorOccur = true; + Authorize_dwErrorCode = ERROR_AUTHORIZE_MODULE_CDKEY_UNKNOW; + return false; + } + return true; +} +////////////////////////////////////////////////////////////////////////// +// 保护函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:Authorize_Serial_Fill +函数功能:填充缓冲区 + 参数.一:ptszFillBuffer + In/Out:In/Out + 类型:字符指针 + 可空:N + 意思:输入填充了头和序列号类型的缓冲区 HEARD-XYRYD + 参数.二:nCardNumer + In/Out:In + 类型:整数型 + 可空:N + 意思:要生成的卡的段数 +返回值 + 类型:逻辑型 + 意思:是否生成成功 +备注: +*********************************************************************/ +bool CAuthorize_Serial::Authorize_Serial_Fill(XCHAR *ptszFillBuffer, int nCardNumer) +{ + Authorize_IsErrorOccur = false; + + int nPosType = 0; + + for (int i = 3; i < nCardNumer; i++) + { + XCHAR tszRandom[6]; + memset(tszRandom, '\0', 6); + if (0 == nPosType) + { + Authorize_Serial_Random(tszRandom); + _tcsxcat(ptszFillBuffer, _X("-")); + _tcsxcat(ptszFillBuffer, tszRandom); + nPosType = 1; + } + else if (1 == nPosType) + { + Authorize_Serial_RandomWord(tszRandom); + _tcsxcat(ptszFillBuffer, _X("-")); + _tcsxcat(ptszFillBuffer, tszRandom); + nPosType = 2; + } + else + { + Authorize_Serial_RandomNumber(tszRandom); + _tcsxcat(ptszFillBuffer, _X("-")); + _tcsxcat(ptszFillBuffer, tszRandom); + nPosType = 0; + } + } + return true; +} +/******************************************************************** +函数名称:Authorize_Serial_Random +函数功能:取随机字母数字 + 参数.一:ptszFillBuffer + In/Out:In/Out + 类型:字符指针 + 可空:N + 意思:输入已经初始化为0的字符串,内存空间为6,导出生成成功的字符串 +返回值 + 类型:逻辑型 + 意思:是否生成成功 +备注: +*********************************************************************/ +bool CAuthorize_Serial::Authorize_Serial_Random(XCHAR *ptszFillBuffer) +{ + Authorize_IsErrorOccur = false; + + BaseLib_OperatorHandle_CreateStr(ptszFillBuffer, 5, 0, 1); + return true; +} +/******************************************************************** +函数名称:Authorize_Serial_RandomWord +函数功能:取随机字母,大写 + 参数.一:ptszFillBuffer + In/Out:In/Out + 类型:字符指针 + 可空:N + 意思:输入已经初始化为0的字符串,内存空间为6,导出生成成功的字符串 +返回值 + 类型:逻辑型 + 意思:是否生成成功 +备注: +*********************************************************************/ +bool CAuthorize_Serial::Authorize_Serial_RandomWord(XCHAR *ptszFillBuffer) +{ + Authorize_IsErrorOccur = false; + + BaseLib_OperatorHandle_CreateStr(ptszFillBuffer, 5, 2, 1); + return true; +} +/******************************************************************** +函数名称:Authorize_Serial_RandomNumber +函数功能:取随机数 + 参数.一:ptszFillBuffer + In/Out:In/Out + 类型:字符指针 + 可空:N + 意思:输入已经初始化为0的字符串,内存空间为6,导出生成成功的字符串 +返回值 + 类型:逻辑型 + 意思:是否生成成功 +备注: +*********************************************************************/ +bool CAuthorize_Serial::Authorize_Serial_RandomNumber(XCHAR *ptszFilleBuffer) +{ + Authorize_IsErrorOccur = false; + + BaseLib_OperatorHandle_CreateStr(ptszFilleBuffer, 5, 1); + return true; +} diff --git a/XEngine_Source/AuthorizeModule_CDKey/Authorize_Serial/Authorize_Serial.h b/XEngine_Source/AuthorizeModule_CDKey/Authorize_Serial/Authorize_Serial.h new file mode 100644 index 0000000000000000000000000000000000000000..ee2307c4e11c33303ea7de2662cd27828bace10f --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/Authorize_Serial/Authorize_Serial.h @@ -0,0 +1,35 @@ +#pragma once +/******************************************************************** +// Created: 2024/07/08 17:30:06 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_Serial\Authorize_Serial.h +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_Serial +// File Base: Authorize_Serial +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 序列卡生成器 +// History: +*********************************************************************/ + + +class CAuthorize_Serial +{ +public: + CAuthorize_Serial(); + ~CAuthorize_Serial(); +public: + bool Authorize_Serial_Creator(XCHAR*** ppptszSerialNumber, LPCXSTR lpszUserHeader, int nCardNumber, int nFieldNumber, XENGINE_LIBTIMER* pSt_CustomTimer, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY); + bool Authorize_Serial_Create(XCHAR*** ppptszSerialNumber, LPCXSTR lpszUserHeader, int nCardNumber, int nFieldNumber); + bool Authorize_Serial_GetType(LPCXSTR lpszSerialNumber, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE* penSerialType, XENGINE_LIBTIMER* pSt_CustomTimer = NULL); +protected: + bool Authorize_Serial_Fill(XCHAR *ptszFillBuffer, int nCardNumer); //填充后面的字段 +protected: + bool Authorize_Serial_Random(XCHAR *ptszFillBuffer); //取随机字母数字 + bool Authorize_Serial_RandomWord(XCHAR *ptszFillBuffer); //随机取单词 + bool Authorize_Serial_RandomNumber(XCHAR *ptszFilleBuffer); //取随机数 +private: + XCHAR tszTimerSecond[6]; //按照秒钟时间格式 + XCHAR tszTimerDay[6]; //按照天的时间格式 + XCHAR tszTimerTime[6]; //次数卡 + XCHAR tszTimerCustom[32]; //自定义到期时间 +}; diff --git a/XEngine_Source/AuthorizeModule_CDKey/CDKey_Define.h b/XEngine_Source/AuthorizeModule_CDKey/CDKey_Define.h new file mode 100644 index 0000000000000000000000000000000000000000..fff99367f9e5061fb6ee01b4c781ff9caa640b43 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/CDKey_Define.h @@ -0,0 +1,308 @@ +#pragma once +/******************************************************************** +// Created: 2024/07/08 17:30:14 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_Define.h +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey +// File Base: Authorize_Define +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: CDKEY授权验证服务 +// History: +*********************************************************************/ +////////////////////////////////////////////////////////////////////////// +// 导出函数 +////////////////////////////////////////////////////////////////////////// +extern "C" XLONG Authorize_GetLastError(int *pInt_SysError = NULL); +/************************************************************************/ +/* 序列卡导出函数 */ +/************************************************************************/ +/******************************************************************** +函数名称:Authorize_Serial_Creator +函数功能:开始生成指定的序列号 + 参数.一:ppptszSerialNumber + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出序列卡列表,根据nCardNumber 来确定列表个数 + 参数.二:lpszUserHeader + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:自定义头,长度为6,填充5 比如 XHEAD + 参数.三:nCardNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:要生成多少张卡,生成多了,此函数会阻塞程序,那么请放置线程中运行 + 参数.四:nFieldNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:卡的段数,AAAAA-BBBBB-CCCCC-DDDDD-EEEEE,不包含三段自定义头,总字段:3 + nFieldNumber + 参数.五:pSt_CustomTimer + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:如果第五个参数为自定义日期,那么这个参数必须赋值。如果第五个参数为天数卡,这个结构体的nDay 必须赋值,表明拥有几天。 + 如果是分钟卡,那么这个值的nMinute必须有值,表示拥有的分钟.如果是次数卡,那么这个值的wFlags必须有值,表示拥有的次数,其他类型可以为NULL + 参数.六:enSerialType + In/Out:In + 类型:枚举型 + 可空:Y + 意思:要生成的卡类型 +返回值 + 类型:逻辑型 + 意思:是否生成成功 +备注:输入的时间不能超过99999,多天卡现在由用户直接使用pSt_CustomTimer参数指定,不在内部指定了 +*********************************************************************/ +extern "C" bool Authorize_Serial_Creator(XCHAR * **ppptszSerialNumber, LPCXSTR lpszUserHeader, int nCardNumber, int nFieldNumber, XENGINE_LIBTIMER * pSt_CustomTimer, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY); +/******************************************************************** +函数名称:Authorize_Serial_Create +函数功能:创建自定义无类型序列号 + 参数.一:ppptszSerialNumber + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出序列卡列表,根据nCardNumber 来确定列表个数 + 参数.二:lpszUserHeader + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:自定义头,长度为6,填充5 比如 XHEAD + 参数.三:nCardNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:要生成多少张卡,生成多了,此函数会阻塞程序,那么请放置线程中运行 + 参数.四:nFieldNumber + In/Out:In + 类型:整数型 + 可空:N + 意思:卡的段数,AAAAA-BBBBB-CCCCC-DDDDD-EEEEE +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool Authorize_Serial_Create(XCHAR*** ppptszSerialNumber, LPCXSTR lpszUserHeader, int nCardNumber, int nFieldNumber); +/******************************************************************** +函数名称:Authorize_Serial_GetType +函数功能:获取一个序列号的类型 + 参数.一:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要获取的缓冲区 + 参数.二:penSerialType + In/Out:Out + 类型:枚举型 + 可空:Y + 意思:导出此卡的类型 + 参数.三:pSt_CustomTimer + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:如果不是自定义类型或者天数卡,或者次数卡,这个参数将不起作用 +返回值 + 类型:逻辑型 + 意思:是否获取成功 +备注: +*********************************************************************/ +extern "C" bool Authorize_Serial_GetType(LPCXSTR lpszSerialNumber, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE* penSerialType, XENGINE_LIBTIMER* pSt_CustomTimer = NULL); +/************************************************************************/ +/* 本地授权导出函数 */ +/************************************************************************/ +/******************************************************************** +函数名称:Authorize_CDKey_WriteKey +函数功能:写一个CDKey文件 + 参数.一:lpszFileKey + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要操作的文件路径 + 参数.二:pSt_AuthLocal + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要写入的文件信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注:写入读取必须是明文,建议你加密处理CDKEY,通过OPENSSL模块,来加解密,在读写 +*********************************************************************/ +extern "C" bool Authorize_CDKey_WriteKey(LPCXSTR lpszFileKey, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal); +/******************************************************************** +函数名称:Authorize_CDKey_ReadKey +函数功能:读一个数据文件 + 参数.一:lpszFileKey + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要操作的文件路径 + 参数.二:pSt_AuthLocal + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:导出获取到的文件信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool Authorize_CDKey_ReadKey(LPCXSTR lpszFileKey, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal); +/******************************************************************** +函数名称:Authorize_CDKey_WriteMemory +函数功能:写配置信息到内存 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:写到的内存 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:写到的内存大小 + 参数.三:pSt_AuthLocal + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要写的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool Authorize_CDKey_WriteMemory(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal); +/******************************************************************** +函数名称:Authorize_CDKey_ReadMemory +函数功能:内存配置文件读取 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要读取配置的内存 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入读取内存大小 + 参数.三:pSt_AuthLocal + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出读取到的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool Authorize_CDKey_ReadMemory(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal); +/******************************************************************** +函数名称:Authorize_CDKey_BuildKeyTime +函数功能:构造注册的时间结构体信息 + 参数.一:pSt_AuthLocal + In/Out:In + 类型:结构体指针 + 可空:N + 意思:要构造的结构体 + 参数.二:nDayTimer + In/Out:In + 类型:整数型 + 可空:Y + 意思:可用时间或者次数.非自定义时间需要设置此值 + 参数.三:pSt_DayTimer + In/Out:In + 类型:结构体指针 + 可空:Y + 意思:如果是自定义时间,这个参数需要设置,其他类型请设置参数二 +返回值 + 类型:逻辑型 + 意思:是否构造成功 +备注:此函数会修改st_AuthRegInfo的时间信息成员 +*********************************************************************/ +extern "C" bool Authorize_CDKey_BuildKeyTime(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, __int64x nDayTimer = 0, XENGINE_LIBTIMER* pSt_DayTimer = NULL); +/******************************************************************** +函数名称:Authorize_CDKey_UserRegister +函数功能:用户注册CDKEY函数 + 参数.一:pSt_AuthLocal + In/Out:In + 类型:结构体指针 + 可空:N + 意思:要构造的结构体 + 参数.二:lpszSerialStr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入注册验证的序列号 +返回值 + 类型:逻辑型 + 意思:是否构造成功 +备注:此函数会修改st_AuthRegInfo的时间信息成员,必须重写CDKEY +*********************************************************************/ +extern "C" bool Authorize_CDKey_UserRegister(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, LPCXSTR lpszSerialStr); +/******************************************************************** +函数名称:Authorize_CDKey_GetLeftTimer +函数功能:验证CDKey + 参数.一:pSt_AuthLocal + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入Authorize_CDKey_ReadKey获取到的值 + 参数.二:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:Y + 意思:如果CDKEY带序列号,可以输入序列号进行验证(优先序列号验证,失败进行常规CDKEY验证) +返回值 + 类型:逻辑型 + 意思:是否成功 +备注:无限制版本不做验证 + 其他验证nHasTime将被设置还拥有时间 + 此函数在程序启动的时候必须调用,可以设置更新CDKEY信息也可以验证CDKEY +*********************************************************************/ +extern "C" bool Authorize_CDKey_GetLeftTimer(XENGINE_AUTHORIZE_LOCAL * pSt_AuthLocal, LPCXSTR lpszSerialNumber = NULL); +/******************************************************************** +函数名称:Authorize_CDKey_WriteTime +函数功能:记录一次执行时间 + 参数.一:lpszFileKey + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的文件 + 参数.二:nCount + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入最大允许记录个数,0不限制 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注:记录次数越多,文件越大.读取需要的内存就越多 +*********************************************************************/ +extern "C" bool Authorize_CDKey_WriteTime(LPCXSTR lpszFileKey, int nCount = 0); +/******************************************************************** +函数名称:Authorize_CDKey_ReadTime +函数功能:读取记录的时间列表信息 + 参数.一:lpszFileKey + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要读取的文件 + 参数.二:ppptszTimeList + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出时间信息列表 + 参数.三:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool Authorize_CDKey_ReadTime(LPCXSTR lpszFileKey, XCHAR*** ppptszTimeList, int* pInt_ListCount); \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_CDKey/CDKey_Error.h b/XEngine_Source/AuthorizeModule_CDKey/CDKey_Error.h new file mode 100644 index 0000000000000000000000000000000000000000..88ca362052199dbbdae3aab83fba5f3283085d41 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/CDKey_Error.h @@ -0,0 +1,36 @@ +#pragma once +/******************************************************************** +// Created: 2024/07/08 17:30:28 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\Authorize_Error.h +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey +// File Base: Authorize_Error +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 错误导出表 +// History: +*********************************************************************/ +////////////////////////////////////////////////////////////////////////// +// 序列卡授权导出错误表 +////////////////////////////////////////////////////////////////////////// +#define ERROR_AUTHORIZE_MODULE_CDKEY_PARAMENT 0x50A0001 //参数不合适 +#define ERROR_AUTHORIZE_MODULE_CDKEY_NOTSUPPORT 0x50A0002 //不支持此生成类型 +#define ERROR_AUTHORIZE_MODULE_CDKEY_BUFFER 0x50A0003 //这个缓冲区有问题,获取卡类型失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_CUSTOM 0x50A0004 //获取自定义时间序列号的过期时间失败。 +#define ERROR_AUTHORIZE_MODULE_CDKEY_UNKNOW 0x50A0005 //获取类型失败,这个类型未知 +#define ERROR_AUTHORIZE_MODULE_CDKEY_CONNECT 0x50A1001 //连接信息写入失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_APPINFO 0x50A1002 //程序信息写入失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_AUTHREG 0x50A1003 //添加注册信息失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_SERIAL 0x50A1004 //写入序列号失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_USER 0x50A1005 //写入用户信息失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_NOTREG 0x50A1021 //没有注册 +#define ERROR_AUTHORIZE_MODULE_CDKEY_NOTHASTIME 0x50A1022 //没有可用时间 +#define ERROR_AUTHORIZE_MODULE_CDKEY_TIMEOUT 0x50A1024 //CDKEY已经超时,没有可用时间 +#define ERROR_AUTHORIZE_MODULE_CDKEY_TEMP 0x50A1026 //临时版本已不可用 +#define ERROR_AUTHORIZE_MODULE_CDKEY_EXPIRED 0x50A1027 //已经过期的CDKEY,无法继续使用 +#define ERROR_AUTHORIZE_MODULE_CDKEY_OPENFILE 0x50A1031 //文件不存在 +#define ERROR_AUTHORIZE_MODULE_CDKEY_SETFILE 0x50A1032 //设置文件失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_TIMELIST 0x50A1041 //不存在时间列表 +#define ERROR_AUTHORIZE_MODULE_CDKEY_MALLOC 0x50A1042 //申请内存失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_READ 0x50A1043 //读取文件失败 +#define ERROR_AUTHORIZE_MODULE_CDKEY_FAILED 0x50A1044 //序列号验证失败,输入的序列号错误 \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_CDKey/Makefile b/XEngine_Source/AuthorizeModule_CDKey/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..90dedde13b3d12230ccab4d8f665c87c07e62b38 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/Makefile @@ -0,0 +1,72 @@ +CC = g++ -Wall -std=c++17 -fPIC +PLATFORM = linux +PLATVER = +PLATDIR = +FILEEXT = +LIBFLAG = +RELEASE = 0 +UNICODE = 0 +LOADHDR = -I ./ +LIB = -lXEngine_BaseLib +LIBEX = +LOADSO = +OBJECTS = Authorize_Serial.o Authorize_CDKey.o pch.o + +ifeq ($(RELEASE),1) +FLAGS = -c +DEBUG = +else +FLAGS = -c -lc_p +DEBUG = -g -pg +endif + +ifeq ($(UNICODE),1) +UNICODE = -D _UNICODE +else +UNICODE = +endif + +ifeq ($(PLATFORM),linux) + ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) + PLATVER = -D __CENTOS__ + PLATDIR = XEngine_Linux/Centos + else + PLATVER = -D __UBUNTU__ + PLATDIR = XEngine_Linux/Ubuntu + endif + FILEEXT = so + LIBFLAG = -shared + LIBEX = -lpthread -lrt -ldl + LOADBIN = -Wl,-rpath=../XEngine_BaseLib,--disable-new-dtags +else ifeq ($(PLATFORM),mac) + CC += -Wno-deprecated-declarations + PLATVER = -D __MACOS__ + PLATDIR = XEngine_Mac + FILEEXT = dylib + LIBFLAG = -dynamiclib + LIBEX = -lpthread -ldl + LOADBIN = -Wl,-rpath,@loader_path/../XEngine_BaseLib/ +endif + +all:$(OBJECTS) + $(CC) $(DEBUG) $(OBJECTS) -o libAuthorizeModule_CDKey.$(FILEEXT) $(LIBFLAG) $(LIB) $(LIBEX) $(LOADSO) $(LOADBIN) + +Authorize_Serial.o:./Authorize_Serial/Authorize_Serial.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./Authorize_Serial/Authorize_Serial.cpp +Authorize_CDKey.o:./Authorize_CDKey/Authorize_CDKey.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./Authorize_CDKey/Authorize_CDKey.cpp + +pch.o:pch.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) pch.cpp + + +InstallAll:InstallSo +InstallSo:./libAuthorizeModule_CDKey.$(FILEEXT) + cp ./libAuthorizeModule_CDKey.$(FILEEXT) ../../XEngine_Release/libAuthorizeModule_CDKey.$(FILEEXT) + + +CleanAll:CleanObj CleanMk +CleanObj: + rm *.o +CleanMk: + rm *.$(FILEEXT) diff --git a/XEngine_Source/AuthorizeModule_CDKey/dllmain.cpp b/XEngine_Source/AuthorizeModule_CDKey/dllmain.cpp new file mode 100644 index 0000000000000000000000000000000000000000..daed8c8f7ac50ca1466016a0529648d18125a7e7 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/dllmain.cpp @@ -0,0 +1,19 @@ +// dllmain.cpp : 定义 DLL 应用程序的入口点。 +#include "pch.h" + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + case DLL_THREAD_ATTACH: + case DLL_THREAD_DETACH: + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + diff --git a/XEngine_Source/AuthorizeModule_CDKey/framework.h b/XEngine_Source/AuthorizeModule_CDKey/framework.h new file mode 100644 index 0000000000000000000000000000000000000000..80cbbc9b06a9b0141f92ee19eceaed71328caff4 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/framework.h @@ -0,0 +1,5 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 +// Windows 头文件 +#include diff --git a/XEngine_Source/AuthorizeModule_CDKey/pch.cpp b/XEngine_Source/AuthorizeModule_CDKey/pch.cpp new file mode 100644 index 0000000000000000000000000000000000000000..eab9eaa581674489318814590b7ea4e4c7018be5 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/pch.cpp @@ -0,0 +1,84 @@ +#include "pch.h" +#include "Authorize_CDKey/Authorize_CDKey.h" +#include "Authorize_Serial/Authorize_Serial.h" +/******************************************************************** +// Created: 2021/07/20 13:11:54 +// File Name: D:\XEngine\XEngine_SourceCode\XEngine_HelpComponents\HelpComponents_Authorize\pch.cpp +// File Path: D:\XEngine\XEngine_SourceCode\XEngine_HelpComponents\HelpComponents_Authorize +// File Base: pch +// File Ext: cpp +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 导出实现 +// History: +*********************************************************************/ +bool Authorize_IsErrorOccur = false; +XLONG Authorize_dwErrorCode = 0; +////////////////////////////////////////////////////////////////////////// +CAuthorize_Serial m_Serial; +CAuthorize_CDKey m_Local; +////////////////////////////////////////////////////////////////////////// +// 导出函数 +////////////////////////////////////////////////////////////////////////// +extern "C" XLONG Authorize_GetLastError(int* pInt_SysError) +{ + if (NULL != pInt_SysError) + { + *pInt_SysError = errno; + } + return Authorize_dwErrorCode; +} +/************************************************************************/ +/* 卡导出函数 */ +/************************************************************************/ +extern "C" bool Authorize_Serial_Creator(XCHAR * **ppptszSerialNumber, LPCXSTR lpszUserHeader, int nCardNumber, int nFieldNumber, XENGINE_LIBTIMER * pSt_CustomTimer, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType) +{ + return m_Serial.Authorize_Serial_Creator(ppptszSerialNumber, lpszUserHeader, nCardNumber, nFieldNumber, pSt_CustomTimer, enSerialType); +} +extern "C" bool Authorize_Serial_Create(XCHAR * **ppptszSerialNumber, LPCXSTR lpszUserHeader, int nCardNumber, int nFieldNumber) +{ + return m_Serial.Authorize_Serial_Create(ppptszSerialNumber, lpszUserHeader, nCardNumber, nFieldNumber); +} +extern "C" bool Authorize_Serial_GetType(LPCXSTR lpszSerialNumber, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE * penSerialType, XENGINE_LIBTIMER * pSt_CustomTimer) +{ + return m_Serial.Authorize_Serial_GetType(lpszSerialNumber, penSerialType, pSt_CustomTimer); +} +/************************************************************************/ +/* 本地授权导出函数 */ +/************************************************************************/ +extern "C" bool Authorize_CDKey_WriteKey(LPCXSTR lpszFileKey, XENGINE_AUTHORIZE_LOCAL * pSt_AuthLocal) +{ + return m_Local.Authorize_CDKey_WriteKey(lpszFileKey, pSt_AuthLocal); +} +extern "C" bool Authorize_CDKey_ReadKey(LPCXSTR lpszFileKey, XENGINE_AUTHORIZE_LOCAL * pSt_AuthLocal) +{ + return m_Local.Authorize_CDKey_ReadKey(lpszFileKey, pSt_AuthLocal); +} +extern "C" bool Authorize_CDKey_WriteMemory(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_AUTHORIZE_LOCAL * pSt_AuthLocal) +{ + return m_Local.Authorize_CDKey_WriteMemory(ptszMsgBuffer, pInt_MsgLen, pSt_AuthLocal); +} +extern "C" bool Authorize_CDKey_ReadMemory(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_AUTHORIZE_LOCAL * pSt_AuthLocal) +{ + return m_Local.Authorize_CDKey_ReadMemory(lpszMsgBuffer, nMsgLen, pSt_AuthLocal); +} +extern "C" bool Authorize_CDKey_BuildKeyTime(XENGINE_AUTHORIZE_LOCAL * pSt_AuthLocal, __int64x nDayTimer, XENGINE_LIBTIMER * pSt_DayTimer) +{ + return m_Local.Authorize_CDKey_BuildKeyTime(pSt_AuthLocal, nDayTimer, pSt_DayTimer); +} +extern "C" bool Authorize_CDKey_UserRegister(XENGINE_AUTHORIZE_LOCAL* pSt_AuthLocal, LPCXSTR lpszSerialStr) +{ + return m_Local.Authorize_CDKey_UserRegister(pSt_AuthLocal, lpszSerialStr); +} +extern "C" bool Authorize_CDKey_GetLeftTimer(XENGINE_AUTHORIZE_LOCAL * pSt_AuthLocal, LPCXSTR lpszSerialNumber) +{ + return m_Local.Authorize_CDKey_GetLeftTimer(pSt_AuthLocal, lpszSerialNumber); +} +extern "C" bool Authorize_CDKey_WriteTime(LPCXSTR lpszFileKey, int nCount) +{ + return m_Local.Authorize_CDKey_WriteTime(lpszFileKey, nCount); +} +extern "C" bool Authorize_CDKey_ReadTime(LPCXSTR lpszFileKey, XCHAR * **ppptszTimeList, int* pInt_ListCount) +{ + return m_Local.Authorize_CDKey_ReadTime(lpszFileKey, ppptszTimeList, pInt_ListCount); +} \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_CDKey/pch.h b/XEngine_Source/AuthorizeModule_CDKey/pch.h new file mode 100644 index 0000000000000000000000000000000000000000..0bbefc88b9e8781806423078f243ad23b910822f --- /dev/null +++ b/XEngine_Source/AuthorizeModule_CDKey/pch.h @@ -0,0 +1,53 @@ +// pch.h: 这是预编译标头文件。 +// 下方列出的文件仅编译一次,提高了将来生成的生成性能。 +// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 +// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 +// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 + +#ifndef PCH_H +#define PCH_H + +#ifdef _MSC_BUILD +// 添加要在此处预编译的标头 +#include "framework.h" +#include +#include +#else +#include +#endif +#endif //PCH_H +#include +#include +#include +#include +#include +#include +#include +using namespace std; +#include +#include +#include +#include +#include +#include "../XAuth_Protocol.h" +#include "CDKey_Define.h" +#include "CDKey_Error.h" +/******************************************************************** +// Created: 2024/07/08 17:29:57 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey\pch.h +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_CDKey +// File Base: pch +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 公有头文件 +// History: +*********************************************************************/ +extern bool Authorize_IsErrorOccur; +extern XLONG Authorize_dwErrorCode; + +typedef std::string xstring; + +#ifdef _MSC_BUILD +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") +#endif \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h index 60ae0157d0efef65017ee627f858a86c666b7d0e..04a3515af1716e226ca084974474c21382351ca9 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h @@ -104,6 +104,11 @@ extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, i 类型:常量字符指针 可空:N 意思:服务器地址 + 参数.二:lpszPass + In/Out:In + 类型:常量字符指针 + 可空:Y + 意思:输入密码,如果服务端设置了密码客户端也必须使用加密通信 返回值 类型:逻辑型 意思:是否成功 @@ -123,16 +128,21 @@ extern "C" bool AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr); 类型:整数型指针 可空:N 意思:输出动态码 - 参数.二:pxhToken + 参数.三:pxhToken In/Out:Out 类型:整数型指针 可空:N 意思:输出绑定的句柄 - 参数.三:pInt_Timeout + 参数.四:pInt_Timeout In/Out:Out 类型:整数型指针 可空:Y 意思:输出动态码超时时间 + 参数.五:lpszPass + In/Out:In + 类型:常量字符指针 + 可空:Y + 意思:输入密码,如果服务端设置了密码客户端也必须使用加密通信 返回值 类型:逻辑型 意思:是否成功 diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.cpp b/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.cpp index d571e2191dc82f8e019cb9c7e2d833c990abf00d..5e8caed9fda6d9a4f82d2164a4f769bdf295bcc0 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.cpp +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.cpp @@ -28,12 +28,17 @@ CAuthClient_HTTPVer::~CAuthClient_HTTPVer() 类型:常量字符指针 可空:N 意思:函数的API地址,需要输入完整的URL + 参数.二:lpszPass + In/Out:In + 类型:常量字符指针 + 可空:Y + 意思:输入密码,如果服务端设置了密码客户端也必须使用加密通信 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CAuthClient_HTTPVer::AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr) +bool CAuthClient_HTTPVer::AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr, LPCXSTR lpszPass /* = NULL */) { AuthClient_IsErrorOccur = true; @@ -44,6 +49,7 @@ bool CAuthClient_HTTPVer::AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr) return false; } #if (1 == _XAUTH_BUILD_SWITCH_CLIENT_HTTP) + int nHTTPCode = 0; XCHAR tszJsonStr[MAX_PATH] = {}; Json::Value st_JsonRoot; @@ -61,18 +67,45 @@ bool CAuthClient_HTTPVer::AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr) //请求 int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; - APIClient_Http_Request(_X("POST"), lpszURLAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); - st_JsonRoot.clear(); - st_JsonObject.clear(); - //解析回复 - std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + + if (NULL != lpszPass) { - AuthClient_IsErrorOccur = true; - AuthClient_dwErrorCode = ERROR_AUTHORIZE_MODULE_HTTPVER_PARSE; - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); - return false; + XCHAR tszENCodec[2048] = {}; + XCHAR tszDECodec[2048] = {}; + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszENCodec, lpszPass); + APIClient_Http_Request(_X("POST"), lpszURLAddr, tszENCodec, &nHTTPCode, &ptszMsgBuffer, &nMsgLen); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDECodec, lpszPass); + st_JsonRoot.clear(); + st_JsonObject.clear(); + //解析回复 + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (!pSt_JsonReader->parse(tszDECodec, tszDECodec + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + AuthClient_IsErrorOccur = true; + AuthClient_dwErrorCode = ERROR_AUTHORIZE_MODULE_HTTPVER_PARSE; + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + return false; + } + } + else + { + APIClient_Http_Request(_X("POST"), lpszURLAddr, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); + st_JsonRoot.clear(); + st_JsonObject.clear(); + //解析回复 + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + AuthClient_IsErrorOccur = true; + AuthClient_dwErrorCode = ERROR_AUTHORIZE_MODULE_HTTPVER_PARSE; + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + return false; + } } + if (0 != st_JsonRoot["code"].asInt()) { AuthClient_IsErrorOccur = true; @@ -97,22 +130,27 @@ bool CAuthClient_HTTPVer::AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr) 类型:整数型指针 可空:N 意思:输出动态码 - 参数.二:pxhToken + 参数.三:pxhToken In/Out:Out 类型:整数型指针 可空:N 意思:输出绑定的句柄 - 参数.三:pInt_Timeout + 参数.四:pInt_Timeout In/Out:Out 类型:整数型指针 可空:Y 意思:输出动态码超时时间 + 参数.五:lpszPass + In/Out:In + 类型:常量字符指针 + 可空:Y + 意思:输入密码,如果服务端设置了密码客户端也必须使用加密通信 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CAuthClient_HTTPVer::AuthClient_HTTPVer_GetDCode(LPCXSTR lpszURLAddr, int* pInt_DYCode, XNETHANDLE* pxhToken, int* pInt_Timeout /* = NULL */) +bool CAuthClient_HTTPVer::AuthClient_HTTPVer_GetDCode(LPCXSTR lpszURLAddr, int* pInt_DYCode, XNETHANDLE* pxhToken, int* pInt_Timeout /* = NULL */, LPCXSTR lpszPass /* = NULL */) { AuthClient_IsErrorOccur = true; @@ -130,16 +168,35 @@ bool CAuthClient_HTTPVer::AuthClient_HTTPVer_GetDCode(LPCXSTR lpszURLAddr, int* //请求 int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; + APIClient_Http_Request(_X("GET"), lpszURLAddr, NULL, &nHTTPCode, &ptszMsgBuffer, &nMsgLen); - //解析回复 - std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + if (NULL != lpszPass) { - AuthClient_IsErrorOccur = true; - AuthClient_dwErrorCode = ERROR_AUTHORIZE_MODULE_HTTPVER_PARSE; - BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); - return false; + XCHAR tszDECodec[2048] = {}; + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDECodec, lpszPass); + + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (!pSt_JsonReader->parse(tszDECodec, tszDECodec + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + AuthClient_IsErrorOccur = true; + AuthClient_dwErrorCode = ERROR_AUTHORIZE_MODULE_HTTPVER_PARSE; + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + return false; + } } + else + { + //解析回复 + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + AuthClient_IsErrorOccur = true; + AuthClient_dwErrorCode = ERROR_AUTHORIZE_MODULE_HTTPVER_PARSE; + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + return false; + } + } + if (0 != st_JsonRoot["code"].asInt()) { AuthClient_IsErrorOccur = true; diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.h index 626b0dbf7da914b0f8400d532f2368460518c4f7..aff8887bb6fccb1238e3d251551a5a1fff68bc2a 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_HTTPVer/AuthClient_HTTPVer.h @@ -17,8 +17,8 @@ public: CAuthClient_HTTPVer(); ~CAuthClient_HTTPVer(); public: - bool AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr); - bool AuthClient_HTTPVer_GetDCode(LPCXSTR lpszURLAddr, int* pInt_DYCode, XNETHANDLE* pxhToken, int* pInt_Timeout = NULL); + bool AuthClient_HTTPVer_TryRequest(LPCXSTR lpszURLAddr, LPCXSTR lpszPass = NULL); + bool AuthClient_HTTPVer_GetDCode(LPCXSTR lpszURLAddr, int* pInt_DYCode, XNETHANDLE* pxhToken, int* pInt_Timeout = NULL, LPCXSTR lpszPass = NULL); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Client/pch.h b/XEngine_Source/AuthorizeModule_Client/pch.h index 74f40fa119fb9915fc9bd47b7801ba5b37b046cd..007a30fbf661eb0564184343faf0596d6985e664 100644 --- a/XEngine_Source/AuthorizeModule_Client/pch.h +++ b/XEngine_Source/AuthorizeModule_Client/pch.h @@ -30,8 +30,6 @@ #include #include #include -#include -#include #include "../XAuth_Protocol.h" #endif #if (1 == _XAUTH_BUILD_SWITCH_CLIENT_HTTP) diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index fa980f62f2ded12f8bcb5d3a4157a6be71dfe35d..6b9aaa96c9cd5d8bccc722bda5495fc4d8942dbe 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -15,6 +15,8 @@ ////////////////////////////////////////////////////////////////////////// typedef struct { + XCHAR tszIPAddr[128]; + XCHAR tszTopic[128]; int nTCPPort; //TCP端口 int nWSPort; //WEBSOCKET端口 int nHTTPPort; //HTTP管理端口 @@ -31,6 +33,11 @@ typedef struct }st_XMax; struct { + struct + { + XCHAR tszKeyFile[MAX_PATH]; //本地CDKEY文件地址 + XCHAR tszKeyPass[MAX_PATH]; //本地CDKEY密码 + }st_XCDKey; int nTokenTimeout; //TOKEN登录超时时间 int nDynamicTimeout; //动态码超时时间 int nVerTime; //验证时间 @@ -64,8 +71,20 @@ typedef struct int nPassword; //密码 }st_XCrypto; struct - { - XCHAR tszSQLite[MAX_PATH]; //数据库文件位置 + { + int nDBType; + struct + { + XCHAR tszSQLAddr[128]; //数据库地址 + XCHAR tszSQLUser[128]; //数据库账号 + XCHAR tszSQLPass[128]; //数据库密码 + XCHAR tszDBName[128]; //数据库名 + int nSQLPort; //数据库端口 + }st_MYSQL; + struct + { + XCHAR tszSQLite[MAX_PATH]; //数据库文件位置 + }st_SQLite; }st_XSql; struct { @@ -99,6 +118,7 @@ typedef struct bool bSwitchDCode; //动态验证码 bool bSwitchMulti; //多端登录开关 bool bSwitchTry; //临时验证 + bool bSwitchBanned; //黑名单 }XENGINE_FUNCTIONSWITCH; ////////////////////////////////////////////////////////////////////////// // 导出的函数 diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 9eff1c2825665a2c95962c216df2e8eb54bb61d9..4de9063d356fc187cc7da8660aab092fb530d9ae 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -101,7 +101,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XMax.nWSThread = st_JsonXMax["nWSThread"].asInt(); pSt_ServerConfig->st_XMax.nHTTPThread = st_JsonXMax["nHTTPThread"].asInt(); //验证配置 - if (st_JsonRoot["XVerification"].empty() || (6 != st_JsonRoot["XVerification"].size())) + if (st_JsonRoot["XVerification"].empty() || (7 != st_JsonRoot["XVerification"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XVER; @@ -114,6 +114,9 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XVerification.nVerMode = st_JsonXVerification["nVerMode"].asInt(); pSt_ServerConfig->st_XVerification.nTryTime = st_JsonXVerification["nTryTime"].asInt(); pSt_ServerConfig->st_XVerification.nTryMode = st_JsonXVerification["nTryMode"].asInt(); + + _tcsxcpy(pSt_ServerConfig->st_XVerification.st_XCDKey.tszKeyFile, st_JsonXVerification["st_XCDKey"]["tszKeyFile"].asCString()); + _tcsxcpy(pSt_ServerConfig->st_XVerification.st_XCDKey.tszKeyPass, st_JsonXVerification["st_XCDKey"]["tszKeyPass"].asCString()); //登录配置 if (st_JsonRoot["XLogin"].empty() || (5 != st_JsonRoot["XLogin"].size())) { @@ -147,14 +150,22 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XCrypto.bEnable = st_JsonXCrypto["bEnable"].asBool(); pSt_ServerConfig->st_XCrypto.nPassword = st_JsonXCrypto["nPass"].asInt(); //数据库配置 - if (st_JsonRoot["XSQL"].empty() || (1 != st_JsonRoot["XSQL"].size())) + if (st_JsonRoot["XSql"].empty() || (6 != st_JsonRoot["XSql"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XSQL; return false; } - Json::Value st_JsonXSQL = st_JsonRoot["XSQL"]; - _tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLite, st_JsonXSQL["tszSQLFile"].asCString()); + Json::Value st_JsonXSql = st_JsonRoot["XSql"]; + + pSt_ServerConfig->st_XSql.nDBType = st_JsonXSql["nSQLType"].asInt(); + + _tcsxcpy(pSt_ServerConfig->st_XSql.st_SQLite.tszSQLite, st_JsonXSql["SQLFile"].asCString()); + + pSt_ServerConfig->st_XSql.st_MYSQL.nSQLPort = st_JsonXSql["SQLPort"].asInt(); + _tcsxcpy(pSt_ServerConfig->st_XSql.st_MYSQL.tszSQLAddr, st_JsonXSql["SQLAddr"].asCString()); + _tcsxcpy(pSt_ServerConfig->st_XSql.st_MYSQL.tszSQLUser, st_JsonXSql["SQLUser"].asCString()); + _tcsxcpy(pSt_ServerConfig->st_XSql.st_MYSQL.tszSQLPass, st_JsonXSql["SQLPass"].asCString()); //日志配置 if (st_JsonRoot["XLog"].empty() || (4 != st_JsonRoot["XLog"].size())) { @@ -330,5 +341,6 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_Switch(LPCXSTR lpszConfigFile, pSt_ServerConfig->bSwitchDCode = st_JsonRoot["bSwitchDCode"].asBool(); pSt_ServerConfig->bSwitchMulti = st_JsonRoot["bSwitchMulti"].asBool(); pSt_ServerConfig->bSwitchTry = st_JsonRoot["bSwitchTry"].asBool(); + pSt_ServerConfig->bSwitchBanned = st_JsonRoot["bSwitchBanned"].asBool(); return true; } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def index eed0328fcc53520348dc74e3e4d284f0781d68cb..ca0bf350e12e1a706d3ef9766727b37b1ed0d5f8 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def @@ -3,36 +3,70 @@ LIBRARY EXPORTS DBModule_GetLastError - Database_SQLite_Init - Database_SQLite_Destroy - - Database_SQLite_UserDelete - Database_SQLite_UserRegister - Database_SQLite_UserQuery - Database_SQLite_UserPay - Database_SQLite_UserLeave - Database_SQLite_UserSet - Database_SQLite_UserList - - Database_SQLite_SerialInsert - Database_SQLite_SerialDelete - Database_SQLite_SerialQuery - Database_SQLite_SerialQueryAll - Database_SQLite_SerialPush - - Database_SQLite_TryInsert - Database_SQLite_TryQuery - Database_SQLite_TryDelete - Database_SQLite_TryClear - Database_SQLite_TrySet - Database_SQLite_TryList - - Database_SQLite_BannedInsert - Database_SQLite_BannedDelete - Database_SQLite_BannedList - Database_SQLite_BannedExist - Database_SQLite_BannedUPDate - - Database_SQLite_AnnouncementInsert - Database_SQLite_AnnouncementDelete - Database_SQLite_AnnouncementList \ No newline at end of file + DBModule_SQLite_Init + DBModule_SQLite_Destroy + + DBModule_SQLite_UserDelete + DBModule_SQLite_UserRegister + DBModule_SQLite_UserQuery + DBModule_SQLite_UserPay + DBModule_SQLite_UserLeave + DBModule_SQLite_UserSet + DBModule_SQLite_UserList + + DBModule_SQLite_SerialInsert + DBModule_SQLite_SerialDelete + DBModule_SQLite_SerialQuery + DBModule_SQLite_SerialQueryAll + DBModule_SQLite_SerialPush + + DBModule_SQLite_TryInsert + DBModule_SQLite_TryQuery + DBModule_SQLite_TryDelete + DBModule_SQLite_TryClear + DBModule_SQLite_TrySet + DBModule_SQLite_TryList + + DBModule_SQLite_BannedInsert + DBModule_SQLite_BannedDelete + DBModule_SQLite_BannedList + DBModule_SQLite_BannedExist + DBModule_SQLite_BannedUPDate + + DBModule_SQLite_AnnouncementInsert + DBModule_SQLite_AnnouncementDelete + DBModule_SQLite_AnnouncementList + + DBModule_MySQL_Init + DBModule_MySQL_Destroy + + DBModule_MySQL_UserDelete + DBModule_MySQL_UserRegister + DBModule_MySQL_UserQuery + DBModule_MySQL_UserPay + DBModule_MySQL_UserLeave + DBModule_MySQL_UserSet + DBModule_MySQL_UserList + + DBModule_MySQL_SerialInsert + DBModule_MySQL_SerialDelete + DBModule_MySQL_SerialQuery + DBModule_MySQL_SerialQueryAll + DBModule_MySQL_SerialPush + + DBModule_MySQL_TryInsert + DBModule_MySQL_TryQuery + DBModule_MySQL_TryDelete + DBModule_MySQL_TryClear + DBModule_MySQL_TrySet + DBModule_MySQL_TryList + + DBModule_MySQL_BannedInsert + DBModule_MySQL_BannedDelete + DBModule_MySQL_BannedList + DBModule_MySQL_BannedExist + DBModule_MySQL_BannedUPDate + + DBModule_MySQL_AnnouncementInsert + DBModule_MySQL_AnnouncementDelete + DBModule_MySQL_AnnouncementList \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj index d5e921813a5c2121c12ec23c04542b130a534f1f..b71286a6a38f8f9689a238ae8764f620a1b85a1f 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj @@ -161,12 +161,14 @@ - + + - + + Create diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj.filters b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj.filters index 6cbd88b5afbe74bc87e3b05716325736e257c29b..1218446e3952a4d68041c738ce8154649b5816a4 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj.filters +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.vcxproj.filters @@ -13,10 +13,16 @@ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - + + {e8a2076d-4bed-4439-9493-1a33b0f6fd2b} + + + {dc9f7cbb-dd1b-4430-99ee-15793188c3a0} + + {bb64f825-b769-444e-b078-90c2727b694f} - + {be64df35-6ef0-4c8c-b95a-444977d7d1c4} @@ -27,15 +33,18 @@ 头文件 - - 头文件\Database_SQLite - 头文件 头文件 + + 头文件\DBModule_MySQL + + + 头文件\DBModule_SQLite + @@ -44,8 +53,11 @@ 源文件 - - 源文件\Database_SQLite + + 源文件\DBModule_MySQL + + + 源文件\DBModule_SQLite diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp new file mode 100644 index 0000000000000000000000000000000000000000..03b3ad5139dca45a66ac99cc22beb8d1b7bd6778 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp @@ -0,0 +1,1999 @@ +#include "pch.h" +#include "DBModule_MySQL.h" +/******************************************************************** +// Created: 2022/05/26 11:01:13 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Database\Database_MySQL\Database_MySQL.cpp +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Database\Database_MySQL +// File Base: Database_SQLite +// File Ext: cpp +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 数据库管理器 +// History: +*********************************************************************/ +CDBModule_MySQL::CDBModule_MySQL() +{ + m_bChange = false; + xhData = 0; +} + +CDBModule_MySQL::~CDBModule_MySQL() +{ +} +////////////////////////////////////////////////////////////////////////// +// 公有函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:DBModule_MySQL_Init +函数功能:初始化数据库管理器 + 参数.一:pSt_DBConnector + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:数据MYSQL数据库连接信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bIsChange) +{ + SQLPacket_IsErrorOccur = false; + m_bChange = bIsChange; + if (NULL == pSt_DBConnector) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + _tcsxcpy(pSt_DBConnector->tszDBName, _X("XEngine_Authorize")); //设置库名 + if (!DataBase_MySQL_Connect(&xhData, pSt_DBConnector)) //连接数据库 + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_Destroy +函数功能:销毁数据库管理器 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_Destroy() +{ + SQLPacket_IsErrorOccur = false; + + DataBase_MySQL_Close(xhData); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_UserDelete +函数功能:删除一个用户从数据库中 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要删除的用户 +返回值 + 类型:逻辑型 + 意思:是否删除成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserDelete(LPCXSTR lpszUserName) +{ + SQLPacket_IsErrorOccur = false; + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("delete from `Authorize_User` where UserName = '%s'"), lpszUserName); + //执行 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXEC; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_UserRegister +函数功能:用户注册处理数据库语句函数 + 参数.一:pSt_UserInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要插入的用户数据 +返回值 + 类型:逻辑型 + 意思:是否插入成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo) +{ + SQLPacket_IsErrorOccur = false; + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + if (DBModule_MySQL_UserQuery(pSt_UserInfo->st_UserInfo.tszUserName)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; + return false; + } + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_User`(UserName, Password, LeftTime, EmailAddr, HardCode, CardSerialType, PhoneNumber, IDCard, nUserLevel, CreateTime) values('%s','%s','%s','%s','%s','%d',%lld,%lld,%d,NOW())"), pSt_UserInfo->st_UserInfo.tszUserName, pSt_UserInfo->st_UserInfo.tszUserPass, pSt_UserInfo->tszLeftTime, pSt_UserInfo->st_UserInfo.tszEMailAddr, pSt_UserInfo->tszHardCode, pSt_UserInfo->enSerialType, pSt_UserInfo->st_UserInfo.nPhoneNumber, pSt_UserInfo->st_UserInfo.nIDNumber, pSt_UserInfo->st_UserInfo.nUserLevel); + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_INSERT; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_UserQuery +函数功能:查询用户相对应的值 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要查询的指定用户 + 参数.二:pSt_UserInfo + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:如果为空NULL,那么将只判断此用户是否存在 +返回值 + 类型:逻辑型 + 意思:是否查询成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo) +{ + SQLPacket_IsErrorOccur = false; + //查询 + XNETHANDLE xhTable = 0; + __int64u nColumn = 0; + __int64u nRow = 0; + + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("select * from `Authorize_User` where UserName = '%s'"), lpszUserName); + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + XCHAR** pptszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + + if (NULL != pSt_UserInfo) + { + memset(pSt_UserInfo, '\0', sizeof(AUTHREG_USERTABLE)); + + //ID + int nFliedValue = 0; + + //用户名 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserName, pptszResult[nFliedValue]); + } + + //密码 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszUserPass, pptszResult[nFliedValue]); + } + + //过期时间 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->tszLeftTime, pptszResult[nFliedValue]); + } + + //电子邮件 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszEMailAddr, pptszResult[nFliedValue]); + } + + //硬件码 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->tszHardCode, pptszResult[nFliedValue]); + } + + //充值卡类型 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + pSt_UserInfo->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(pptszResult[nFliedValue]); + } + + //QQ号 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + pSt_UserInfo->st_UserInfo.nPhoneNumber = _ttxoll(pptszResult[nFliedValue]); + } + + //身份证ID + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + pSt_UserInfo->st_UserInfo.nIDNumber = _ttxoll(pptszResult[nFliedValue]); + } + + //用户级别 -1表示封禁 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + pSt_UserInfo->st_UserInfo.nUserLevel = _ttxoi(pptszResult[nFliedValue]); + } + + //登录日期 + nFliedValue++; + if (NULL != pptszResult[nFliedValue] && _tcsxlen(pptszResult[nFliedValue]) > 0) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszLoginTime, pptszResult[nFliedValue]); + } + //注册日期 + nFliedValue++; + if (NULL != pptszResult[nFliedValue]) + { + _tcsxcpy(pSt_UserInfo->st_UserInfo.tszCreateTime, pptszResult[nFliedValue]); + } + + } + DataBase_MySQL_FreeResult(xhData, xhTable); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_UserPay +函数功能:用户充值函数 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要充值的用户名 + 参数.二:lpszSerialName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:充值使用的序列号 +返回值 + 类型:逻辑型 + 意思:是否成功充值 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) +{ + SQLPacket_IsErrorOccur = false; + + AUTHREG_SERIALTABLE st_SerialTable; + AUTHREG_USERTABLE st_UserTable; + XCHAR tszSQLStatement[1024]; //SQL语句 + + memset(tszSQLStatement, '\0', 1024); + memset(&st_SerialTable, '\0', sizeof(st_SerialTable)); + memset(&st_UserTable, '\0', sizeof(st_UserTable)); + //参数检查 + if ((NULL == lpszUserName) || (NULL == lpszSerialName)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + //查询充值卡是否存在 + if (!DBModule_MySQL_SerialQuery(lpszSerialName, &st_SerialTable)) + { + return false; + } + //充值卡是否被使用 + if (st_SerialTable.bIsUsed) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_ISUSED; + return false; + } + //查询用户信息 + if (!DBModule_MySQL_UserQuery(lpszUserName, &st_UserTable)) + { + return false; + } + //分析插入方式 + switch (st_SerialTable.enSerialType) + { + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND: + if (!DBModule_MySQL_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) + { + return false; + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY: + if (!DBModule_MySQL_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) + { + return false; + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME: + if (!DBModule_MySQL_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) + { + return false; + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM: + if (!DBModule_MySQL_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) + { + return false; + } + break; + default: + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTSUPPORT; + return false; + } + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_Serial` SET UserName = '%s',bIsUsed = '1' WHERE SerialNumber = '%s'"), lpszUserName, lpszSerialName); + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_UPDATAUSEDNAME; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_UserLeave +函数功能:用户离开处理事件 + 参数.一:pSt_TimeProtocol + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:离开的用户信息 +返回值 + 类型:逻辑型 + 意思:是否处理成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + + if ((ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == pSt_TimeProtocol->enSerialType) || (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == pSt_TimeProtocol->enSerialType)) + { + //天数卡只有剩余时间没有的时候才需要做处理 + if (pSt_TimeProtocol->nTimeLeft <= 0) + { + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '0' WHERE UserName = '%s'"), pSt_TimeProtocol->tszUserName); + } + } + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == pSt_TimeProtocol->enSerialType) + { + //分钟卡必须要有在线时间才能计算 + if (pSt_TimeProtocol->nTimeLeft <= 0) + { + pSt_TimeProtocol->nTimeLeft = 0; + } + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%lld' WHERE UserName = '%s'"), pSt_TimeProtocol->nTimeLeft, pSt_TimeProtocol->tszUserName); + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == pSt_TimeProtocol->enSerialType) + { + //次数卡不需要在线时间,直接减去一次就可以了 + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%lld' WHERE UserName = '%s'"), _ttxoll(pSt_TimeProtocol->tszLeftTime), pSt_TimeProtocol->tszUserName); + } + else + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_UNKNOWTYPE; + return false; + } + //更新用户剩余时间 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_UPDATA; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_UserSet +函数功能:设置用户信息 + 参数.一:pSt_UserTable + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要设置的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserSet(AUTHREG_USERTABLE* pSt_UserTable) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET Password = '%s',LeftTime = '%s',EmailAddr = '%s',HardCode = '%s',CardSerialType = '%d',PhoneNumber = '%lld',IDCard = '%lld',nUserLevel = '%d',UPTime = NOW(),CreateTime = '%s' WHERE UserName = '%s'"), pSt_UserTable->st_UserInfo.tszUserPass, pSt_UserTable->tszLeftTime, pSt_UserTable->st_UserInfo.tszEMailAddr, pSt_UserTable->tszHardCode, pSt_UserTable->enSerialType, pSt_UserTable->st_UserInfo.nPhoneNumber, pSt_UserTable->st_UserInfo.nIDNumber, pSt_UserTable->st_UserInfo.nUserLevel/*, pSt_UserTable->st_UserInfo.tszLoginTime*/, pSt_UserTable->st_UserInfo.tszCreateTime, pSt_UserTable->st_UserInfo.tszUserName); + + //更新用户剩余时间 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_UserList +函数功能:获取用户列表 + 参数.一:pppSt_UserInfo + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出用户列表,内存由用户释放 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型 + 可空:N + 意思:输出列表个数 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入起始位置 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入结束位置 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd) +{ + SQLPacket_IsErrorOccur = false; + + //查询 + XNETHANDLE xhTable = 0; + __int64u nRow = 0; + __int64u nColumn = 0; + char** ppszResult = NULL; + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_User` LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTUSER; + return false; + } + *pInt_ListCount = (int)nRow; + BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_UserInfo, (int)nRow, sizeof(AUTHREG_USERTABLE)); + + for (__int64u i = 0; i < nRow; i++) + { + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + + //ID + int nFliedValue = 0; + nFliedValue++; + //用户名 + _tcsxcpy((*pppSt_UserInfo)[i]->st_UserInfo.tszUserName, ppszResult[nFliedValue]); + //密码 + nFliedValue++; + _tcsxcpy((*pppSt_UserInfo)[i]->st_UserInfo.tszUserPass, ppszResult[nFliedValue]); + //过期时间 + nFliedValue++; + _tcsxcpy((*pppSt_UserInfo)[i]->tszLeftTime, ppszResult[nFliedValue]); + //电子邮件 + nFliedValue++; + _tcsxcpy((*pppSt_UserInfo)[i]->st_UserInfo.tszEMailAddr, ppszResult[nFliedValue]); + //硬件码 + nFliedValue++; + _tcsxcpy((*pppSt_UserInfo)[i]->tszHardCode, ppszResult[nFliedValue]); + //充值卡类型 + nFliedValue++; + (*pppSt_UserInfo)[i]->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + //QQ号 + nFliedValue++; + (*pppSt_UserInfo)[i]->st_UserInfo.nPhoneNumber = _ttxoll(ppszResult[nFliedValue]); + //身份证ID + nFliedValue++; + (*pppSt_UserInfo)[i]->st_UserInfo.nIDNumber = _ttxoll(ppszResult[nFliedValue]); + //用户级别 -1表示封禁 + nFliedValue++; + (*pppSt_UserInfo)[i]->st_UserInfo.nUserLevel = _ttxoi(ppszResult[nFliedValue]); + //登录日期 + nFliedValue++; + if (NULL != ppszResult[nFliedValue] && _tcsxlen(ppszResult[nFliedValue]) > 0) + { + _tcsxcpy((*pppSt_UserInfo)[i]->st_UserInfo.tszLoginTime, ppszResult[nFliedValue]); + } + //注册日期 + nFliedValue++; + _tcsxcpy((*pppSt_UserInfo)[i]->st_UserInfo.tszCreateTime, ppszResult[nFliedValue]); + nFliedValue++; + } + DataBase_MySQL_FreeResult(xhData, xhTable); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_SerialInsert +函数功能:插入一个序列号到数据库 + 参数.一:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要插入的序列号 +返回值 + 类型:逻辑型 + 意思:是否插入成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_SerialInsert(LPCXSTR lpszSerialNumber) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + if (DBModule_MySQL_SerialQuery(lpszSerialNumber)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; + return false; + } + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enAuthSerialType; + XENGINE_LIBTIMER st_AuthTimer; + memset(&st_AuthTimer, '\0', sizeof(st_AuthTimer)); + + if (!Authorize_Serial_GetType(lpszSerialNumber, &enAuthSerialType, &st_AuthTimer)) + { + return false; + } + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == enAuthSerialType) + { + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_Serial` values(NULL,'NOT','%s','%d','%d',0,NOW())"), lpszSerialNumber, st_AuthTimer.wSecond, enAuthSerialType); + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == enAuthSerialType) + { + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_Serial` values(NULL,'NOT','%s','%d','%d',0,NOW())"), lpszSerialNumber, st_AuthTimer.wDay, enAuthSerialType); + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == enAuthSerialType) + { + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_Serial` values(NULL,'NOT','%s','%d','%d',0,NOW())"), lpszSerialNumber, st_AuthTimer.wFlags, enAuthSerialType); + } + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == enAuthSerialType) + { + XCHAR tszLeftTime[MAX_PATH]; + memset(tszLeftTime, '\0', MAX_PATH); + _xstprintf(tszLeftTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), st_AuthTimer.wYear, st_AuthTimer.wMonth, st_AuthTimer.wDay, st_AuthTimer.wHour, st_AuthTimer.wMinute, st_AuthTimer.wSecond); + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_Serial` values(NULL,'NOT','%s','%s','%d',0,NOW())"), lpszSerialNumber, tszLeftTime, enAuthSerialType); + } + else + { + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_Serial` values(NULL,'NOT','%s',0,'%d',0,NOW())"), lpszSerialNumber, enAuthSerialType); + } + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_ISFAILED; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_SerialDelete +函数功能:从数据库删除指定序列号 + 参数.一:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要删除的序列号 +返回值 + 类型:逻辑型 + 意思:是否删除成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_SerialDelete(LPCXSTR lpszSerialNumber) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("delete from `Authorize_Serial` where SerialNumber = '%s'"), lpszSerialNumber); + //执行 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_ISFAILED; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_SerialQuery +函数功能:查询一个指定的序列号信息 + 参数.一:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要查询的序列号 + 参数.二:pSt_SerialTable + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:导出查询到的信息,如果为NULL,此参数将不起作用 +返回值 + 类型:逻辑型 + 意思:是否查询成功,如果第二个参数为NULL,那么将只返回是否有这个序列号 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_SerialQuery(LPCXSTR lpszSerialNumber, LPAUTHREG_SERIALTABLE pSt_SerialTable) +{ + SQLPacket_IsErrorOccur = false; + XCHAR tszSQLStatement[1024]; //SQL语句 + char** ppszResult = NULL; + XNETHANDLE xhTable = 0; + __int64u nRow = 0; + __int64u nColumn = 0; + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("select * from `Authorize_Serial` where SerialNumber = '%s'"), lpszSerialNumber); + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_SERIAL; + return false; + } + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + + if (NULL != pSt_SerialTable) + { + memset(pSt_SerialTable, '\0', sizeof(AUTHREG_SERIALTABLE)); + //ID + int nFliedValue = 0; + //使用者 + nFliedValue++; + _tcsxcpy(pSt_SerialTable->tszUserName, ppszResult[nFliedValue]); + //序列号 + nFliedValue++; + _tcsxcpy(pSt_SerialTable->tszSerialNumber, ppszResult[nFliedValue]); + //超时时间 + nFliedValue++; + _tcsxcpy(pSt_SerialTable->tszMaxTime, ppszResult[nFliedValue]); + //序列卡类型 + nFliedValue++; + pSt_SerialTable->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + //是否已经使用 + nFliedValue++; + pSt_SerialTable->bIsUsed = _ttxoi(ppszResult[nFliedValue]); + //超时时间 + nFliedValue++; + _tcsxcpy(pSt_SerialTable->tszCreateTime, ppszResult[nFliedValue]); + } + + DataBase_MySQL_FreeResult(xhData, xhTable); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_SerialQueryAll +函数功能:查询序列卡表中的所有序列号 + 参数.一:pppSt_SerialTable + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出序列卡列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:Y + 意思:输出多少张卡 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入起始位置 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入结束位置 +返回值 + 类型:逻辑型 + 意思:是否查询成功 +备注:参数一需要调用基础库的释放内存函数进行内存释放 +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_SerialQueryAll(AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd) +{ + SQLPacket_IsErrorOccur = false; + + XNETHANDLE xhTable = 0; + __int64u nRow = 0; + __int64u nColumn = 0; + char** ppszResult = NULL; + XCHAR tszSQLStatement[1024]; //SQL语句 + + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_Serial` LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_GETTABLE; + return false; + } + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NONE; + return false; + } + BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_SerialTable, (int)nRow, sizeof(AUTHREG_SERIALTABLE)); + + *pInt_ListCount = (int)nRow; + + for (__int64u i = 0; i < nRow; i++) + { + // 获取数据库结果 + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + + int nFliedValue = 0; + //ID + nFliedValue++; + //使用者 + _tcsxcpy((*pppSt_SerialTable)[i]->tszUserName, ppszResult[nFliedValue]); + nFliedValue++; + //序列号 + _tcsxcpy((*pppSt_SerialTable)[i]->tszSerialNumber, ppszResult[nFliedValue]); + nFliedValue++; + //超时时间 + _tcsxcpy((*pppSt_SerialTable)[i]->tszMaxTime, ppszResult[nFliedValue]); + nFliedValue++; + //序列卡类型 + (*pppSt_SerialTable)[i]->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //是否已经使用 + (*pppSt_SerialTable)[i]->bIsUsed = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //创建时间 + _tcsxcpy((*pppSt_SerialTable)[i]->tszCreateTime, ppszResult[nFliedValue]); + nFliedValue++; + } + DataBase_MySQL_FreeResult(xhData, xhTable); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_SerialPush +函数功能:插入一条指定的序列号信息到服务器 + 参数.一:pSt_SerialTable + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + if (DBModule_MySQL_SerialQuery(pSt_SerialTable->tszSerialNumber)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; + return false; + } + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_Serial` values(NULL,'%s','%s','%s',%d,%d,'%s')"), pSt_SerialTable->tszUserName, pSt_SerialTable->tszSerialNumber, pSt_SerialTable->tszMaxTime, pSt_SerialTable->enSerialType, pSt_SerialTable->bIsUsed, pSt_SerialTable->tszCreateTime); + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_ISFAILED; + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_TryInsert +函数功能:网络使用模式插入一条数据 + 参数.一:pSt_AuthVer + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer) +{ + SQLPacket_IsErrorOccur = false; + + if (NULL == pSt_AuthVer) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[1024]; + AUTHREG_TEMPVER st_AuthVer; + + memset(tszSQLStatement, '\0', 1024); + memset(&st_AuthVer, '\0', sizeof(AUTHREG_TEMPVER)); + //验证是否存在 + _tcsxcpy(st_AuthVer.tszVSerial, pSt_AuthVer->tszVSerial); + if (DBModule_MySQL_TryQuery(&st_AuthVer)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; + return false; + } + //插入数据库 + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_TempVer`(tszVSerial,nVMode,nVTime,nLTime,CreateTime) VALUES('%s',%d,%d,%d,NOW())"), pSt_AuthVer->tszVSerial, pSt_AuthVer->enVMode, pSt_AuthVer->nVTime, pSt_AuthVer->nVTime); + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_TryQuery +函数功能:试用序列号查询函数 + 参数.一:pSt_AuthVer + In/Out:In/Out + 类型:数据结构指针 + 可空:N + 意思:输入序列号,输出获取到的内容 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer) +{ + SQLPacket_IsErrorOccur = false; + + if (NULL == pSt_AuthVer) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + XNETHANDLE xhTable = 0; + __int64u nColumn = 0; + __int64u nRow = 0; + XCHAR** ppszResult = NULL; + XCHAR tszSQLStatement[1024]; //SQL语句 + + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_TempVer` WHERE tszVSerial = '%s'"), pSt_AuthVer->tszVSerial); + + + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NONE; + return false; + } + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + + //ID + int nFliedValue = 0; + nFliedValue++; + //序列号 + nFliedValue++; + + //试用类型 + if (NULL != ppszResult[nFliedValue]) + { + pSt_AuthVer->enVMode = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + } + + //试用时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + pSt_AuthVer->nVTime = _ttxoi(ppszResult[nFliedValue]); + } + + //剩余时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + pSt_AuthVer->nLTime = _ttxoi(ppszResult[nFliedValue]); + } + + //注册时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + _tcsxcpy(pSt_AuthVer->tszVDate, ppszResult[nFliedValue]); + } + + DataBase_MySQL_FreeResult(xhData, xhTable); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_TryDelete +函数功能:删除一条指定的试用数据 + 参数.一:lpszSerial + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要删除的序列号 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_TryDelete(LPCXSTR lpszSerial) +{ + SQLPacket_IsErrorOccur = false; + + if (NULL == lpszSerial) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("DELETE FROM `Authorize_TempVer` WHERE tszVSerial = '%s'"), lpszSerial); + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_TryClear +函数功能:清理函数,自动清理过期数据 + 参数.一:nThanValue + In/Out:In + 类型:整数型 + 可空:N + 意思:清理用于判断需要大于此的值 + 参数.二:enVMode + In/Out:In + 类型:枚举型 + 可空:Y + 意思:判断注册类型,默认不判断全部执行 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_TryClear(int nThanValue, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVerMode) +{ + SQLPacket_IsErrorOccur = false; + + XNETHANDLE xhTable = 0; + __int64u nRow = 0; + __int64u nColumn = 0; + XCHAR** ppszResult = NULL; + XCHAR tszSQLStatement[1024]; //SQL语句 + + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_TempVer`")); + + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + + list stl_ListVer; + //轮训所有内容 + for (__int64u i = 0; i < nRow; i++) + { + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + + int nFliedValue = 0; + AUTHREG_TEMPVER st_AuthVer; + memset(&st_AuthVer, '\0', sizeof(AUTHREG_TEMPVER)); + //ID + nFliedValue++; + //序列号 + _tcsxcpy(st_AuthVer.tszVSerial, ppszResult[nFliedValue]); + nFliedValue++; + //模式 + st_AuthVer.enVMode = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //测试时间 + st_AuthVer.nVTime = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //测试时间 + st_AuthVer.nLTime = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcsxcpy(st_AuthVer.tszVDate, ppszResult[nFliedValue]); + + stl_ListVer.push_back(st_AuthVer); + } + DataBase_MySQL_FreeResult(xhData, xhTable); + //清理 + list::const_iterator stl_ListIterator = stl_ListVer.begin(); + for (; stl_ListIterator != stl_ListVer.end(); stl_ListIterator++) + { + //判断是不是不关心注册的模式直接清理 + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW == enVerMode) + { + if (nThanValue > stl_ListIterator->nVTime) + { + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("DELETE FROM `Authorize_TempVer` WHERE tszVSerial = '%s'"), stl_ListIterator->tszVSerial); + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + } + } + else + { + if (enVerMode == stl_ListIterator->enVMode) + { + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("DELETE FROM `Authorize_TempVer` WHERE tszVSerial = '%s'"), stl_ListIterator->tszVSerial); + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + } + } + } + stl_ListVer.clear(); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_TrySet +函数功能:设置用户信息函数 + 参数.一:pSt_AuthVer + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要更新的用户信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_TrySet(AUTHREG_TEMPVER* pSt_AuthVer) +{ + SQLPacket_IsErrorOccur = false; + + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_TempVer` SET nVMode = '%d',nVTime = '%d',nLTime = '%d',CreateTime = '%s' WHERE tszVSerial = '%s'"), pSt_AuthVer->enVMode, pSt_AuthVer->nVTime, pSt_AuthVer->nLTime, pSt_AuthVer->tszVDate, pSt_AuthVer->tszVSerial); + //更新用户表 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_TryList +函数功能:请求试用期列表 + 参数.一:pppSt_AuthVer + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出获取到的列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:N + 意思:输入查询起始编号 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:N + 意思:输入查询结束编号 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart, int nPosEnd) +{ + SQLPacket_IsErrorOccur = false; + + XNETHANDLE xhTable = 0; + __int64u nColumn = 0; + __int64u nRow = 0; + XCHAR** ppszResult = NULL; + XCHAR tszSQLStr[1024]; //SQL语句 + + memset(tszSQLStr, '\0', 1024); + _xstprintf(tszSQLStr, _X("SELECT * FROM `Authorize_TempVer` LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); + + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStr, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_AuthVer, (int)nRow, sizeof(AUTHREG_TEMPVER)); + + //轮训所有内容 + for (__int64u i = 0; i < nRow; i++) + { + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + + int nFliedValue = 0; + //ID + (*pppSt_AuthVer)[i]->nID = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //是否启用 + _tcsxcpy((*pppSt_AuthVer)[i]->tszVSerial, ppszResult[nFliedValue]); + nFliedValue++; + //类型 + (*pppSt_AuthVer)[i]->enVMode = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //时间 + (*pppSt_AuthVer)[i]->nVTime = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //时间 + (*pppSt_AuthVer)[i]->nLTime = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcsxcpy((*pppSt_AuthVer)[i]->tszVDate, ppszResult[nFliedValue]); + nFliedValue++; + } + *pInt_ListCount = (int)nRow; + DataBase_MySQL_FreeResult(xhData, xhTable); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_BannedInsert +函数功能:黑名单列表插入 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_BannedInsert(AUTHREG_BANNED* pSt_Banned) +{ + SQLPacket_IsErrorOccur = false; + + if (NULL == pSt_Banned) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + //存在直接返回 + if (!DBModule_MySQL_BannedExist(pSt_Banned)) + { + return true; + } + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + //处理的类型 + if (_tcsxlen(pSt_Banned->tszUserName) > 0) + { + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_BannedUser`(bEnable,tszUserName,tszLeftTime,tszCreateTime) VALUES(%d,'%s','%s',NOW())"), pSt_Banned->bEnable, pSt_Banned->tszUserName, pSt_Banned->tszLeftTime); + } + else + { + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_BannedAddr`(bEnable,tszIPAddr,tszLeftTime,tszCreateTime) VALUES(%d,'%s','%s',NOW())"), pSt_Banned->bEnable, pSt_Banned->tszIPAddr, pSt_Banned->tszLeftTime); + } + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_BannedDelete +函数功能:黑名单列表删除 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_BannedDelete(AUTHREG_BANNED* pSt_Banned) +{ + SQLPacket_IsErrorOccur = false; + + if (NULL == pSt_Banned) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', 1024); + //处理的类型 + if (_tcsxlen(pSt_Banned->tszUserName) > 0) + { + _xstprintf(tszSQLStatement, _X("DELETE FROM `Authorize_BannedUser` WHERE tszUserName = '%s'"), pSt_Banned->tszUserName); + } + else + { + _xstprintf(tszSQLStatement, _X("DELETE FROM `Authorize_BannedAddr` WHERE tszIPAddr = '%s'"), pSt_Banned->tszIPAddr); + } + + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_BannedList +函数功能:黑名单列表查询 + 参数.一:pppSt_BannedUser + In/Out:Out + 类型:三级指针 + 可空:N + 意思:禁用的用户名列表 + 参数.二:pInt_UserCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出用户禁用列表个数 + 参数.三:pppSt_BannedAddr + In/Out:Out + 类型:三级指针 + 可空:N + 意思:禁用的IP地址列表 + 参数.四:pInt_AddrCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出地址禁用列表个数 + 参数.五:nPosStart + In/Out:In + 类型:整数型 + 可空:N + 意思:输入查找起始位置 + 参数.六:nPosEnd + In/Out:In + 类型:整数型 + 可空:N + 意思:输入查找结束位置 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd) +{ + SQLPacket_IsErrorOccur = false; + //查询 + XNETHANDLE xhTable = 0; + __int64u nColumn = 0; + __int64u nRow = 0; + + XCHAR** ppszResult = NULL; + XCHAR tszSQLStatement[1024]; //SQL语句 + + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_BannedAddr` LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); + + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + + list stl_ListAddr; + //轮训所有内容 + for (__int64u i = 0; i < nRow; i++) + { + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + int nFliedValue = 0; + + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + //ID + st_Banned.nID = _ttxoll(ppszResult[nFliedValue]); + nFliedValue++; + //是否启用 + st_Banned.bEnable = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //地址 + _tcsxcpy(st_Banned.tszIPAddr, ppszResult[nFliedValue]); + nFliedValue++; + //过期时间 + _tcsxcpy(st_Banned.tszLeftTime, ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcsxcpy(st_Banned.tszCreateTime, ppszResult[nFliedValue]); + nFliedValue++; + + stl_ListAddr.push_back(st_Banned); + } + DataBase_MySQL_FreeResult(xhData, xhTable); + //用户列表 + xhTable = 0; + nRow = 0; + nColumn = 0; + ppszResult = NULL; + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_BannedUser` LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); + + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + + list stl_ListUser; + //轮训所有内容 + for (__int64u i = 0; i < nRow; i++) + { + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + int nFliedValue = 0; + + //ID + st_Banned.nID = _ttxoll(ppszResult[nFliedValue]); + nFliedValue++; + //是否启用 + st_Banned.bEnable = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //用户名 + _tcsxcpy(st_Banned.tszUserName, ppszResult[nFliedValue]); + nFliedValue++; + //过期时间 + _tcsxcpy(st_Banned.tszLeftTime, ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcsxcpy(st_Banned.tszCreateTime, ppszResult[nFliedValue]); + nFliedValue++; + + stl_ListUser.push_back(st_Banned); + } + DataBase_MySQL_FreeResult(xhData, xhTable); + //导出 + *pInt_AddrCount = stl_ListAddr.size(); + *pInt_UserCount = stl_ListUser.size(); + BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_BannedAddr, stl_ListAddr.size(), sizeof(AUTHREG_BANNED)); + BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_BannedUser, stl_ListUser.size(), sizeof(AUTHREG_BANNED)); + + list::const_iterator stl_ListIterator = stl_ListAddr.begin(); + for (int i = 0; stl_ListIterator != stl_ListAddr.end(); stl_ListIterator++, i++) + { + (*pppSt_BannedAddr)[i]->nID = stl_ListIterator->nID; + (*pppSt_BannedAddr)[i]->bEnable = stl_ListIterator->bEnable; + _tcsxcpy((*pppSt_BannedAddr)[i]->tszIPAddr, stl_ListIterator->tszIPAddr); + _tcsxcpy((*pppSt_BannedAddr)[i]->tszLeftTime, stl_ListIterator->tszLeftTime); + _tcsxcpy((*pppSt_BannedAddr)[i]->tszCreateTime, stl_ListIterator->tszCreateTime); + } + stl_ListIterator = stl_ListUser.begin(); + for (int i = 0; stl_ListIterator != stl_ListUser.end(); stl_ListIterator++, i++) + { + (*pppSt_BannedUser)[i]->nID = stl_ListIterator->nID; + (*pppSt_BannedUser)[i]->bEnable = stl_ListIterator->bEnable; + _tcsxcpy((*pppSt_BannedUser)[i]->tszUserName, stl_ListIterator->tszUserName); + _tcsxcpy((*pppSt_BannedUser)[i]->tszLeftTime, stl_ListIterator->tszLeftTime); + _tcsxcpy((*pppSt_BannedUser)[i]->tszCreateTime, stl_ListIterator->tszCreateTime); + } + + stl_ListAddr.clear(); + stl_ListUser.clear(); + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_BannedExist +函数功能:名单是否存在黑名单列表 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_BannedExist(AUTHREG_BANNED* pSt_Banned) +{ + SQLPacket_IsErrorOccur = false; + + //判断用户名是否存在 + if (_tcsxlen(pSt_Banned->tszUserName) > 0) + { + __int64u nRow = 0; + __int64u nColumn = 0; + XNETHANDLE xhTable = 0; + + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM Authorize_BannedUser WHERE tszUserName = '%s'"), pSt_Banned->tszUserName); + + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + + if (nRow > 0) + { + XCHAR** ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //ID + int nFliedValue = 0; + if (NULL != ppszResult[nFliedValue]) + { + pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); + } + //是否启用 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); + } + //地址 + nFliedValue++; + //过期时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); + } + //注册时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); + } + //如果启用 且 tszLeftTime 大于 0 + if (pSt_Banned->bEnable) + { + if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) + { + __int64x nTimer = 0; + XCHAR tszTimeEnd[128]; + memset(tszTimeEnd, '\0', sizeof(tszTimeEnd)); + BaseLib_OperatorTime_TimeToStr(tszTimeEnd); + BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszTimeEnd, &nTimer, 3); + //如果没有超过禁用时间 直接返回 说明存在黑名单 不在执行判断IP地址 + if (nTimer < 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_BANNED; + return false; + } + } + else + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_BANNED; + return false; + } + } + } + DataBase_MySQL_FreeResult(xhData, xhTable); + } + //判断IP地址是否存在 + if (_tcsxlen(pSt_Banned->tszIPAddr) > 0) + { + XNETHANDLE xhTable = 0; + __int64u nRow = 0; + __int64u nColumn = 0; + + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', 1024); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM Authorize_BannedAddr WHERE tszIPAddr = '%s'"), pSt_Banned->tszIPAddr); + + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + DataBase_MySQL_FreeResult(xhData, xhTable); + return false; + } + + if (nRow > 0) + { + XCHAR** ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //ID + int nFliedValue = 0; + if (NULL != ppszResult[nFliedValue]) + { + pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); + } + //是否启用 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); + } + //地址 + nFliedValue++; + //过期时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); + } + //注册时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) + { + _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); + } + //处理是否被禁用 + if (pSt_Banned->bEnable) + { + if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) + { + __int64x nTimer = 0; + XCHAR tszStrTime[128]; + memset(tszStrTime, '\0', sizeof(tszStrTime)); + BaseLib_OperatorTime_TimeToStr(tszStrTime); + BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); + if (nTimer < 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_BANNED; + return false; + } + } + else + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTENABLE; + return false; + } + } + } + DataBase_MySQL_FreeResult(xhData, xhTable); + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_BannedUPDate +函数功能:更新名单列表信息 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_BannedUPDate(AUTHREG_BANNED* pSt_Banned) +{ + SQLPacket_IsErrorOccur = false; + + if (NULL == pSt_Banned) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + //处理的类型 + if (_tcsxlen(pSt_Banned->tszUserName) > 0) + { + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_BannedUser` SET bEnable = %d,tszLeftTime = '%s' WHERE tszUserName = '%s'"), pSt_Banned->bEnable, pSt_Banned->tszLeftTime, pSt_Banned->tszUserName); + } + else + { + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_BannedAddr` SET bEnable = %d,tszLeftTime = '%s' WHERE tszIPAddr = '%s'"), pSt_Banned->bEnable, pSt_Banned->tszLeftTime, pSt_Banned->tszIPAddr); + } + //插入数据库 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_AnnouncementInsert +函数功能:公告插入 + 参数.一:pSt_Announcement + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement) +{ + SQLPacket_IsErrorOccur = false; + + if (NULL == pSt_Announcement) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[8192]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + _xstprintf(tszSQLStatement, _X("INSERT INTO `Authorize_Announcement`(tszContext,tszCreateTime) VALUES('%s',NOW())"), pSt_Announcement->tszContext); + + //插入数据库 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_AnnouncementDelete +函数功能:公告删除 + 参数.一:pSt_Announcement + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要删除的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement) +{ + SQLPacket_IsErrorOccur = false; + + if (NULL == pSt_Announcement) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + _xstprintf(tszSQLStatement, _X("DELETE FROM `Authorize_Announcement` WHERE ID = %lld"), pSt_Announcement->nID); + //插入数据库 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:DBModule_MySQL_AnnouncementList +函数功能:列举所有公告 + 参数.一:ppppSt_Announcement + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出列举数据 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:导出数据个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount) +{ + SQLPacket_IsErrorOccur = false; + XNETHANDLE xhTable = 0; + __int64u nRow = 0; + __int64u nColumn = 0; + XCHAR** ppszResult = NULL; + XCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + _xstprintf(tszSQLStatement, _X("SELECT * FROM `Authorize_Announcement`")); + + if (!DataBase_MySQL_ExecuteQuery(xhData, &xhTable, tszSQLStatement, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return false; + } + *pInt_ListCount = (int)nRow; + if (NULL == ppppSt_Announcement) + { + return true; + } + BaseLib_OperatorMemory_Malloc((XPPPMEM)ppppSt_Announcement, (int)nRow, sizeof(AUTHREG_ANNOUNCEMENT)); + + //轮训所有内容 + for (__int64u i = 0; i < nRow; i++) + { + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + //XLONG* pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + int nFliedValue = 0; + (*ppppSt_Announcement)[i]->nID = _ttxoll(ppszResult[nFliedValue]); + nFliedValue++; + _tcsxcpy((*ppppSt_Announcement)[i]->tszContext, ppszResult[nFliedValue]); + nFliedValue++; + _tcsxcpy((*ppppSt_Announcement)[i]->tszCreateTime, ppszResult[nFliedValue]); + nFliedValue++; + + } + DataBase_MySQL_FreeResult(xhData, xhTable); + return true; +} +////////////////////////////////////////////////////////////////////////// +// 保护函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:DBModule_MySQL_UserPayTime +函数功能:日期方式充值方式 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:充值的用户 + 参数.二:lpszUserTime + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:用户以前的超时时间 + 参数.三:lpszCardTime + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:充值卡时间 + 参数.四:en_AuthSerialType + In/Out:In + 类型:枚举型 + 可空:N + 意思:充值卡的充值类型 + 参数.五:en_AuthUserType + In/Out:In + 类型:枚举型 + 可空:N + 意思:用户表中以前的充值卡类型 +返回值 + 类型:逻辑型 + 意思:是否成功充值 +备注: +*********************************************************************/ +bool CDBModule_MySQL::DBModule_MySQL_UserPayTime(LPCXSTR lpszUserName, LPCXSTR lpszUserTime, LPCXSTR lpszCardTime, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_AuthSerialType, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_AuthUserType) +{ + SQLPacket_IsErrorOccur = false; + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + //判断和以前的充值卡是否匹配。 + if (en_AuthSerialType != en_AuthUserType) + { + //如果不等于,需要重写 + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW != en_AuthUserType) + { + //判断是否允许改写。 + if (!m_bChange) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; + return false; + } + } + //更新用户表的充值卡类型 + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET CardSerialType = '%d' WHERE UserName = '%s'"), en_AuthSerialType, lpszUserName); + //执行用户表更新,因为序列卡类型被改变,所以需要更新。 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_UPDATATYPE; + return false; + } + //处理卡类型 + switch (en_AuthSerialType) + { + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND: + { + //如果是分钟卡 + //如果当前的充值卡类型不匹配,那么他以前的充值内容全部都会被删除! + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%d' WHERE UserName = '%s'"), _ttxoi(lpszCardTime), lpszUserName); //更新用户表的过期时间 + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY: + { + //如果是天数卡 + //更新用户表的过期时间 + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%d' WHERE UserName = '%s'"), _ttxoi(lpszCardTime), lpszUserName); //更新用户表的过期时间 + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME: + { + //如果是次数卡 + //更新用户表的过期时间 + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%d' WHERE UserName = '%s'"), _ttxoi(lpszCardTime), lpszUserName); + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM: + { + XCHAR tszTime[128]; + XENGINE_LIBTIMER st_AuthTime; + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_GeneraterSerialType; + + memset(tszTime, '\0', sizeof(tszTime)); + memset(&st_AuthTime, '\0', sizeof(XENGINE_LIBTIMER)); + //获取重置卡类型和时间 + if (!Authorize_Serial_GetType(lpszCardTime, &en_GeneraterSerialType, &st_AuthTime)) + { + return false; + } + _xstprintf(tszTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), st_AuthTime.wYear, st_AuthTime.wMonth, st_AuthTime.wDay, st_AuthTime.wHour, st_AuthTime.wMinute, st_AuthTime.wSecond); + //更新用户表的过期时间 + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%s' WHERE UserName = '%s'"), tszTime, lpszUserName); + } + break; + default: + break; + } + } + else + { + switch (en_AuthSerialType) + { + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND: + { + int nCardTime = _ttxoi(lpszCardTime); + nCardTime += _ttxoi(lpszUserTime); //我们把用户以前的时间也加上 + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); //更新用户表的过期时间 + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY: + { + int nCardTime = _ttxoi(lpszCardTime); + nCardTime += _ttxoi(lpszUserTime); //我们把用户以前的时间也加上 + //更新用户表的过期时间 + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME: + { + //如果是次数卡 + int nCardTime = _ttxoi(lpszCardTime); + nCardTime += _ttxoi(lpszUserTime); //我们把用户以前的时间也加上 + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); //更新用户表的过期时间 + } + break; + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM: + { + //自定义卡,无法相加 + XCHAR tszTime[128]; + XENGINE_LIBTIMER st_AuthTime; + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_GeneraterSerialType; + + memset(tszTime, '\0', sizeof(tszTime)); + memset(&st_AuthTime, '\0', sizeof(XENGINE_LIBTIMER)); + //获取重置卡类型和时间 + if (!Authorize_Serial_GetType(lpszCardTime, &en_GeneraterSerialType, &st_AuthTime)) + { + return false; + } + _xstprintf(tszTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), st_AuthTime.wYear, st_AuthTime.wMonth, st_AuthTime.wDay, st_AuthTime.wHour, st_AuthTime.wMinute, st_AuthTime.wSecond); + //更新用户表的过期时间 + _xstprintf(tszSQLStatement, _X("UPDATE `Authorize_User` SET LeftTime = '%s' WHERE UserName = '%s'"), tszTime, lpszUserName); + } + break; + default: + break; + } + } + //更新用户表的过期时间 + if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_UPDATA; + return false; + } + return true; +} + diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h new file mode 100644 index 0000000000000000000000000000000000000000..b2df45f5ec36a329aefeee69159ff1ea4d443fd6 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h @@ -0,0 +1,61 @@ +#pragma once +/******************************************************************** +// Created: 2022/05/26 11:01:06 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Database\Database_MySQL\Database_MySQL.h +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Database\Database_MySQL +// File Base: Database_MySQL +// File Ext: h +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 数据库管理器 +// History: +*********************************************************************/ +////////////////////////////////////////////////////////////////////////// +// AuthReg_UserTable内容:ID 用户名 密码 注册日期 剩余时间 硬件码 注册文件密码 QQ 身份证 +// AuthReg_SerialTable内容:ID 使用者 序列号 使用时间 最大可允许时间 是否使用 +////////////////////////////////////////////////////////////////////////// +class CDBModule_MySQL +{ +public: + CDBModule_MySQL(); + ~CDBModule_MySQL(); +public: + bool DBModule_MySQL_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bIsChange = true); //初始化 + bool DBModule_MySQL_Destroy(); //销毁 +public: + bool DBModule_MySQL_UserDelete(LPCXSTR lpszUserName); //删除用户 + bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo); //用户注册 + bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 + bool DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName); //充值卡充值 + bool DBModule_MySQL_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 + bool DBModule_MySQL_UserSet(AUTHREG_USERTABLE* pSt_UserTable); //设置用户信息 + bool DBModule_MySQL_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); //获取用户列表 +public: + bool DBModule_MySQL_SerialInsert(LPCXSTR lpszSerialNumber); //插入序列卡 + bool DBModule_MySQL_SerialDelete(LPCXSTR lpszSerialNumber); //删除一个序列号 + bool DBModule_MySQL_SerialQuery(LPCXSTR lpszSerialNumber, LPAUTHREG_SERIALTABLE pSt_SerialTable = NULL); //按照卡号或者用户查询 + bool DBModule_MySQL_SerialQueryAll(AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd);//查询所有序列卡 + bool DBModule_MySQL_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable);//插入一条指定的序列号信息到服务器 +public: + bool DBModule_MySQL_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer); //网络使用模式插入一条数据 + bool DBModule_MySQL_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer); //试用序列号查询函数 + bool DBModule_MySQL_TryDelete(LPCXSTR lpszSerial); //删除一条指定的试用数据 + bool DBModule_MySQL_TryClear(int nThanValue, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVerMode = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW); //清理函数,自动清理过期数据 + bool DBModule_MySQL_TrySet(AUTHREG_TEMPVER* pSt_AuthVer); //设置用户信息函数 + bool DBModule_MySQL_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart = 0, int nPosEnd = 1000); //请求试用期列表 +public: + bool DBModule_MySQL_BannedInsert(AUTHREG_BANNED* pSt_Banned); //黑名单列表插入 + bool DBModule_MySQL_BannedDelete(AUTHREG_BANNED* pSt_Banned); //黑名单列表删除 + bool DBModule_MySQL_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd); //黑名单列表查询 + bool DBModule_MySQL_BannedExist(AUTHREG_BANNED* pSt_Banned); //名单是否存在黑名单列表 + bool DBModule_MySQL_BannedUPDate(AUTHREG_BANNED* pSt_Banned); //更新名单列表信息 +public: + bool DBModule_MySQL_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement); //公告插入 + bool DBModule_MySQL_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement); //公告删除 + bool DBModule_MySQL_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount); //列举所有公告 +protected: + bool DBModule_MySQL_UserPayTime(LPCXSTR lpszUserName, LPCXSTR lpszUserTime, LPCXSTR lpszCardTime, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_AuthSerialType, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_AuthUserType); //日期方式充值方式 +private: + bool m_bChange; + XNETHANDLE xhData; //数据库句柄 +}; diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp similarity index 86% rename from XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp rename to XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp index e5c42f09119f2ea08fd2cb3b6ca16d20ff61c8cf..8468868d5fe9754791f0b75f3ab74476aec7da23 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp @@ -1,5 +1,5 @@ #include "pch.h" -#include "Database_SQLite.h" +#include "DBModule_SQLite.h" /******************************************************************** // Created: 2022/05/26 11:01:13 // File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Database\Database_SQLite\Database_SQLite.cpp @@ -11,11 +11,11 @@ // Purpose: 数据库管理器 // History: *********************************************************************/ -CDatabase_SQLite::CDatabase_SQLite() +CDBModule_SQLite::CDBModule_SQLite() { m_bChange = false; } -CDatabase_SQLite::~CDatabase_SQLite() +CDBModule_SQLite::~CDBModule_SQLite() { } @@ -23,7 +23,7 @@ CDatabase_SQLite::~CDatabase_SQLite() // 公有函数 ////////////////////////////////////////////////////////////////////////// /******************************************************************** -函数名称:Database_SQLite_Init +函数名称:DBModule_SQLite_Init 函数功能:初始化数据库服务 参数.一:lpszSQLFile In/Out:In @@ -40,7 +40,7 @@ CDatabase_SQLite::~CDatabase_SQLite() 意思:是否成功 备注:先初始化数据库服务,在初始化网络服务,才可以使用本验证服务器! *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange /* = true */) +bool CDBModule_SQLite::DBModule_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange /* = true */) { SQLPacket_IsErrorOccur = false; m_bChange = bIsChange; @@ -54,14 +54,14 @@ bool CDatabase_SQLite::Database_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange return true; } /******************************************************************** -函数名称:Database_SQLite_Destroy +函数名称:DBModule_SQLite_Destroy 函数功能:销毁数据库服务 返回值 类型:逻辑型 意思:是否销毁成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_Destroy() +bool CDBModule_SQLite::DBModule_SQLite_Destroy() { SQLPacket_IsErrorOccur = false; @@ -74,7 +74,7 @@ bool CDatabase_SQLite::Database_SQLite_Destroy() return true; } /******************************************************************** -函数名称:Database_SQLite_UserDelete +函数名称:DBModule_SQLite_UserDelete 函数功能:删除一个用户从数据库中 参数.一:lpszUserName In/Out:In @@ -86,7 +86,7 @@ bool CDatabase_SQLite::Database_SQLite_Destroy() 意思:是否删除成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_UserDelete(LPCXSTR lpszUserName) +bool CDBModule_SQLite::DBModule_SQLite_UserDelete(LPCXSTR lpszUserName) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 @@ -102,7 +102,7 @@ bool CDatabase_SQLite::Database_SQLite_UserDelete(LPCXSTR lpszUserName) return true; } /******************************************************************** -函数名称:Database_SQLite_UserRegister +函数名称:DBModule_SQLite_UserRegister 函数功能:用户注册处理数据库语句函数 参数.一:pSt_UserInfo In/Out:In @@ -114,13 +114,13 @@ bool CDatabase_SQLite::Database_SQLite_UserDelete(LPCXSTR lpszUserName) 意思:是否插入成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo) +bool CDBModule_SQLite::DBModule_SQLite_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - if (Database_SQLite_UserQuery(pSt_UserInfo->st_UserInfo.tszUserName)) + if (DBModule_SQLite_UserQuery(pSt_UserInfo->st_UserInfo.tszUserName)) { SQLPacket_IsErrorOccur = true; SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; @@ -136,7 +136,7 @@ bool CDatabase_SQLite::Database_SQLite_UserRegister(AUTHREG_USERTABLE* pSt_UserI return true; } /******************************************************************** -函数名称:Database_SQLite_UserQuery +函数名称:DBModule_SQLite_UserQuery 函数功能:查询用户相对应的值 参数.一:lpszUserName In/Out:In @@ -153,7 +153,7 @@ bool CDatabase_SQLite::Database_SQLite_UserRegister(AUTHREG_USERTABLE* pSt_UserI 意思:是否查询成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo /* = NULL */) +bool CDBModule_SQLite::DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo /* = NULL */) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 @@ -198,7 +198,7 @@ bool CDatabase_SQLite::Database_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_U _tcsxcpy(pSt_UserInfo->tszHardCode, ppszResult[nFliedValue]); //充值卡类型 nFliedValue++; - pSt_UserInfo->enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + pSt_UserInfo->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); //QQ号 nFliedValue++; pSt_UserInfo->st_UserInfo.nPhoneNumber = _ttxoll(ppszResult[nFliedValue]); @@ -223,7 +223,7 @@ bool CDatabase_SQLite::Database_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_U return true; } /******************************************************************** -函数名称:Database_SQLite_UserPay +函数名称:DBModule_SQLite_UserPay 函数功能:用户充值函数 参数.一:lpszUserName In/Out:In @@ -240,7 +240,7 @@ bool CDatabase_SQLite::Database_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_U 意思:是否成功充值 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) +bool CDBModule_SQLite::DBModule_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) { SQLPacket_IsErrorOccur = false; @@ -259,7 +259,7 @@ bool CDatabase_SQLite::Database_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lps return false; } //查询充值卡是否存在 - if (!Database_SQLite_SerialQuery(lpszSerialName, &st_SerialTable)) + if (!DBModule_SQLite_SerialQuery(lpszSerialName, &st_SerialTable)) { return false; } @@ -271,33 +271,33 @@ bool CDatabase_SQLite::Database_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lps return false; } //查询用户信息 - if (!Database_SQLite_UserQuery(lpszUserName, &st_UserTable)) + if (!DBModule_SQLite_UserQuery(lpszUserName, &st_UserTable)) { return false; } //分析插入方式 switch (st_SerialTable.enSerialType) { - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND: - if (!Database_SQLite_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND: + if (!DBModule_SQLite_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) { return false; } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY: - if (!Database_SQLite_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY: + if (!DBModule_SQLite_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) { return false; } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME: - if (!Database_SQLite_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME: + if (!DBModule_SQLite_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) { return false; } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM: - if (!Database_SQLite_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM: + if (!DBModule_SQLite_UserPayTime(lpszUserName, st_UserTable.tszLeftTime, st_SerialTable.tszMaxTime, st_SerialTable.enSerialType, st_UserTable.enSerialType)) { return false; } @@ -317,7 +317,7 @@ bool CDatabase_SQLite::Database_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lps return true; } /******************************************************************** -函数名称:Database_SQLite_UserLeave +函数名称:DBModule_SQLite_UserLeave 函数功能:用户离开处理事件 参数.一:pSt_TimeProtocol In/Out:In @@ -329,14 +329,14 @@ bool CDatabase_SQLite::Database_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lps 意思:是否处理成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol) +bool CDBModule_SQLite::DBModule_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - if ((ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY == pSt_TimeProtocol->enSerialType) || (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM == pSt_TimeProtocol->enSerialType)) + if ((ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == pSt_TimeProtocol->enSerialType) || (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == pSt_TimeProtocol->enSerialType)) { //天数卡只有剩余时间没有的时候才需要做处理 if (pSt_TimeProtocol->nTimeLeft <= 0) @@ -344,7 +344,7 @@ bool CDatabase_SQLite::Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_Time _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '0' WHERE UserName = '%s'"), pSt_TimeProtocol->tszUserName); } } - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND == pSt_TimeProtocol->enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == pSt_TimeProtocol->enSerialType) { //分钟卡必须要有在线时间才能计算 if (pSt_TimeProtocol->nTimeLeft <= 0) @@ -353,7 +353,7 @@ bool CDatabase_SQLite::Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_Time } _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '%lld' WHERE UserName = '%s'"), pSt_TimeProtocol->nTimeLeft, pSt_TimeProtocol->tszUserName); } - else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME == pSt_TimeProtocol->enSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == pSt_TimeProtocol->enSerialType) { //次数卡不需要在线时间,直接减去一次就可以了 _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '%lld' WHERE UserName = '%s'"), _ttxoll(pSt_TimeProtocol->tszLeftTime), pSt_TimeProtocol->tszUserName); @@ -374,7 +374,7 @@ bool CDatabase_SQLite::Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_Time return true; } /******************************************************************** -函数名称:Database_SQLite_UserSet +函数名称:DBModule_SQLite_UserSet 函数功能:设置用户信息 参数.一:pSt_UserTable In/Out:In @@ -386,7 +386,7 @@ bool CDatabase_SQLite::Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_Time 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable) +bool CDBModule_SQLite::DBModule_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable) { SQLPacket_IsErrorOccur = false; @@ -404,7 +404,7 @@ bool CDatabase_SQLite::Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable) return true; } /******************************************************************** -函数名称:Database_SQLite_UserList +函数名称:DBModule_SQLite_UserList 函数功能:获取用户列表 参数.一:pppSt_UserInfo In/Out:Out @@ -431,7 +431,7 @@ bool CDatabase_SQLite::Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd) +bool CDBModule_SQLite::DBModule_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd) { SQLPacket_IsErrorOccur = false; @@ -477,7 +477,7 @@ bool CDatabase_SQLite::Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserI _tcsxcpy((*pppSt_UserInfo)[i]->tszHardCode, ppszResult[nFliedValue]); //充值卡类型 nFliedValue++; - (*pppSt_UserInfo)[i]->enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + (*pppSt_UserInfo)[i]->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); //QQ号 nFliedValue++; (*pppSt_UserInfo)[i]->st_UserInfo.nPhoneNumber = _ttxoll(ppszResult[nFliedValue]); @@ -502,7 +502,7 @@ bool CDatabase_SQLite::Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserI return true; } /******************************************************************** -函数名称:Database_SQLite_SerialInsert +函数名称:DBModule_SQLite_SerialInsert 函数功能:插入一个序列号到数据库 参数.一:lpszSerialNumber In/Out:In @@ -514,20 +514,20 @@ bool CDatabase_SQLite::Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserI 意思:是否插入成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_SerialInsert(LPCXSTR lpszSerialNumber) +bool CDBModule_SQLite::DBModule_SQLite_SerialInsert(LPCXSTR lpszSerialNumber) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - if (Database_SQLite_SerialQuery(lpszSerialNumber)) + if (DBModule_SQLite_SerialQuery(lpszSerialNumber)) { SQLPacket_IsErrorOccur = true; SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; return false; } - ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enAuthSerialType; + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enAuthSerialType; XENGINE_LIBTIMER st_AuthTimer; memset(&st_AuthTimer, '\0', sizeof(st_AuthTimer)); @@ -535,19 +535,19 @@ bool CDatabase_SQLite::Database_SQLite_SerialInsert(LPCXSTR lpszSerialNumber) { return false; } - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND == enAuthSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == enAuthSerialType) { _xstprintf(tszSQLStatement, _X("INSERT INTO Authorize_Serial values(NULL,'NOT','%s','%d','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, st_AuthTimer.wSecond, enAuthSerialType); } - else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY == enAuthSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == enAuthSerialType) { _xstprintf(tszSQLStatement, _X("INSERT INTO Authorize_Serial values(NULL,'NOT','%s','%d','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, st_AuthTimer.wDay, enAuthSerialType); } - else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME == enAuthSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == enAuthSerialType) { _xstprintf(tszSQLStatement, _X("INSERT INTO Authorize_Serial values(NULL,'NOT','%s','%d','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, st_AuthTimer.wFlags, enAuthSerialType); } - else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM == enAuthSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == enAuthSerialType) { XCHAR tszLeftTime[MAX_PATH]; memset(tszLeftTime, '\0', MAX_PATH); @@ -568,7 +568,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialInsert(LPCXSTR lpszSerialNumber) return true; } /******************************************************************** -函数名称:Database_SQLite_SerialDelete +函数名称:DBModule_SQLite_SerialDelete 函数功能:从数据库删除指定序列号 参数.一:lpszSerialNumber In/Out:In @@ -580,7 +580,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialInsert(LPCXSTR lpszSerialNumber) 意思:是否删除成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_SerialDelete(LPCXSTR lpszSerialNumber) +bool CDBModule_SQLite::DBModule_SQLite_SerialDelete(LPCXSTR lpszSerialNumber) { SQLPacket_IsErrorOccur = false; @@ -597,7 +597,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialDelete(LPCXSTR lpszSerialNumber) return true; } /******************************************************************** -函数名称:Database_SQLite_SerialQuery +函数名称:DBModule_SQLite_SerialQuery 函数功能:查询一个指定的序列号信息 参数.一:lpszSerialNumber In/Out:In @@ -614,7 +614,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialDelete(LPCXSTR lpszSerialNumber) 意思:是否查询成功,如果第二个参数为NULL,那么将只返回是否有这个序列号 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_SerialQuery(LPCXSTR lpszSerialNumber, LPAUTHREG_SERIALTABLE pSt_SerialTable /* = NULL */) +bool CDBModule_SQLite::DBModule_SQLite_SerialQuery(LPCXSTR lpszSerialNumber, LPAUTHREG_SERIALTABLE pSt_SerialTable /* = NULL */) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 @@ -652,7 +652,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialQuery(LPCXSTR lpszSerialNumber, LPA _tcsxcpy(pSt_SerialTable->tszMaxTime, ppszResult[nFliedValue]); //序列卡类型 nFliedValue++; - pSt_SerialTable->enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + pSt_SerialTable->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); //是否已经使用 nFliedValue++; pSt_SerialTable->bIsUsed = _ttxoi(ppszResult[nFliedValue]); @@ -665,7 +665,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialQuery(LPCXSTR lpszSerialNumber, LPA return true; } /******************************************************************** -函数名称:Database_SQLite_SerialQueryAll +函数名称:DBModule_SQLite_SerialQueryAll 函数功能:查询序列卡表中的所有序列号 参数.一:pppSt_SerialTable In/Out:Out @@ -692,7 +692,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialQuery(LPCXSTR lpszSerialNumber, LPA 意思:是否查询成功 备注:参数一需要调用基础库的释放内存函数进行内存释放 *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd) +bool CDBModule_SQLite::DBModule_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd) { SQLPacket_IsErrorOccur = false; @@ -734,7 +734,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE*** ppp _tcsxcpy((*pppSt_SerialTable)[i]->tszMaxTime, ppszResult[nFliedValue]); nFliedValue++; //序列卡类型 - (*pppSt_SerialTable)[i]->enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + (*pppSt_SerialTable)[i]->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); nFliedValue++; //是否已经使用 (*pppSt_SerialTable)[i]->bIsUsed = _ttxoi(ppszResult[nFliedValue]); @@ -747,7 +747,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE*** ppp return true; } /******************************************************************** -函数名称:Database_SQLite_SerialPush +函数名称:DBModule_SQLite_SerialPush 函数功能:插入一条指定的序列号信息到服务器 参数.一:pSt_SerialTable In/Out:In @@ -759,14 +759,14 @@ bool CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE*** ppp 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable) +bool CDBModule_SQLite::DBModule_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - if (Database_SQLite_SerialQuery(pSt_SerialTable->tszSerialNumber)) + if (DBModule_SQLite_SerialQuery(pSt_SerialTable->tszSerialNumber)) { SQLPacket_IsErrorOccur = true; SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; @@ -783,7 +783,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_Seria return true; } /******************************************************************** -函数名称:Database_SQLite_TryInsert +函数名称:DBModule_SQLite_TryInsert 函数功能:网络使用模式插入一条数据 参数.一:pSt_AuthVer In/Out:In @@ -795,7 +795,7 @@ bool CDatabase_SQLite::Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_Seria 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer) +bool CDBModule_SQLite::DBModule_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer) { SQLPacket_IsErrorOccur = false; @@ -813,7 +813,7 @@ bool CDatabase_SQLite::Database_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer) //验证是否存在 _tcsxcpy(st_AuthVer.tszVSerial, pSt_AuthVer->tszVSerial); - if (Database_SQLite_TryQuery(&st_AuthVer)) + if (DBModule_SQLite_TryQuery(&st_AuthVer)) { SQLPacket_IsErrorOccur = true; SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; @@ -830,7 +830,7 @@ bool CDatabase_SQLite::Database_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer) return true; } /******************************************************************** -函数名称:Database_SQLite_TryQuery +函数名称:DBModule_SQLite_TryQuery 函数功能:试用序列号查询函数 参数.一:pSt_AuthVer In/Out:In/Out @@ -842,7 +842,7 @@ bool CDatabase_SQLite::Database_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer) +bool CDBModule_SQLite::DBModule_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer) { SQLPacket_IsErrorOccur = false; @@ -878,7 +878,7 @@ bool CDatabase_SQLite::Database_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer) //序列号 nFliedValue++; //试用类型 - pSt_AuthVer->enVMode = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + pSt_AuthVer->enVMode = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); nFliedValue++; //试用时间 pSt_AuthVer->nVTime = _ttxoi(ppszResult[nFliedValue]); @@ -892,7 +892,7 @@ bool CDatabase_SQLite::Database_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer) return true; } /******************************************************************** -函数名称:Database_SQLite_TryDelete +函数名称:DBModule_SQLite_TryDelete 函数功能:删除一条指定的试用数据 参数.一:lpszSerial In/Out:In @@ -904,7 +904,7 @@ bool CDatabase_SQLite::Database_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_TryDelete(LPCXSTR lpszSerial) +bool CDBModule_SQLite::DBModule_SQLite_TryDelete(LPCXSTR lpszSerial) { SQLPacket_IsErrorOccur = false; @@ -928,7 +928,7 @@ bool CDatabase_SQLite::Database_SQLite_TryDelete(LPCXSTR lpszSerial) return true; } /******************************************************************** -函数名称:Database_SQLite_TryClear +函数名称:DBModule_SQLite_TryClear 函数功能:清理函数,自动清理过期数据 参数.一:nThanValue In/Out:In @@ -945,7 +945,7 @@ bool CDatabase_SQLite::Database_SQLite_TryDelete(LPCXSTR lpszSerial) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enVMode /* = ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW */) +bool CDBModule_SQLite::DBModule_SQLite_TryClear(int nThanValue, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVMode /* = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW */) { SQLPacket_IsErrorOccur = false; @@ -976,7 +976,7 @@ bool CDatabase_SQLite::Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONE _tcsxcpy(st_AuthVer.tszVSerial, ppszResult[nFliedValue]); nFliedValue++; //模式 - st_AuthVer.enVMode = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + st_AuthVer.enVMode = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); nFliedValue++; //测试时间 st_AuthVer.nVTime = _ttxoi(ppszResult[nFliedValue]); @@ -995,7 +995,7 @@ bool CDatabase_SQLite::Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONE for (; stl_ListIterator != stl_ListVer.end(); stl_ListIterator++) { //判断是不是不关心注册的模式直接清理 - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW == enVMode) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW == enVMode) { if (nThanValue > stl_ListIterator->nVTime) { @@ -1030,7 +1030,7 @@ bool CDatabase_SQLite::Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONE return true; } /******************************************************************** -函数名称:Database_SQLite_TrySet +函数名称:DBModule_SQLite_TrySet 函数功能:设置用户信息函数 参数.一:pSt_AuthVer In/Out:In @@ -1042,7 +1042,7 @@ bool CDatabase_SQLite::Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONE 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer) +bool CDBModule_SQLite::DBModule_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer) { SQLPacket_IsErrorOccur = false; @@ -1060,7 +1060,7 @@ bool CDatabase_SQLite::Database_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer) return true; } /******************************************************************** -函数名称:Database_SQLite_TryList +函数名称:DBModule_SQLite_TryList 函数功能:请求试用期列表 参数.一:pppSt_AuthVer In/Out:Out @@ -1087,7 +1087,7 @@ bool CDatabase_SQLite::Database_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart, int nPosEnd) +bool CDBModule_SQLite::DBModule_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart, int nPosEnd) { SQLPacket_IsErrorOccur = false; @@ -1117,7 +1117,7 @@ bool CDatabase_SQLite::Database_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, _tcsxcpy((*pppSt_AuthVer)[i]->tszVSerial, ppszResult[nFliedValue]); nFliedValue++; //类型 - (*pppSt_AuthVer)[i]->enVMode = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); + (*pppSt_AuthVer)[i]->enVMode = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)_ttxoi(ppszResult[nFliedValue]); nFliedValue++; //时间 (*pppSt_AuthVer)[i]->nVTime = _ttxoi(ppszResult[nFliedValue]); @@ -1134,7 +1134,7 @@ bool CDatabase_SQLite::Database_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, return true; } /******************************************************************** -函数名称:Database_SQLite_BannedInsert +函数名称:DBModule_SQLite_BannedInsert 函数功能:黑名单列表插入 参数.一:pSt_Banned In/Out:In @@ -1146,7 +1146,7 @@ bool CDatabase_SQLite::Database_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned) +bool CDBModule_SQLite::DBModule_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned) { SQLPacket_IsErrorOccur = false; @@ -1157,7 +1157,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned) return false; } //存在直接返回 - if (Database_SQLite_BannedExist(pSt_Banned)) + if (!DBModule_SQLite_BannedExist(pSt_Banned)) { return true; } @@ -1182,7 +1182,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned) return true; } /******************************************************************** -函数名称:Database_SQLite_BannedDelete +函数名称:DBModule_SQLite_BannedDelete 函数功能:黑名单列表删除 参数.一:pSt_Banned In/Out:In @@ -1194,7 +1194,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned) +bool CDBModule_SQLite::DBModule_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned) { SQLPacket_IsErrorOccur = false; @@ -1225,7 +1225,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned) return true; } /******************************************************************** -函数名称:Database_SQLite_BannedList +函数名称:DBModule_SQLite_BannedList 函数功能:黑名单列表查询 参数.一:pppSt_BannedUser In/Out:Out @@ -1262,7 +1262,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd) +bool CDBModule_SQLite::DBModule_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd) { SQLPacket_IsErrorOccur = false; @@ -1374,7 +1374,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_Banned return true; } /******************************************************************** -函数名称:Database_SQLite_BannedExist +函数名称:DBModule_SQLite_BannedExist 函数功能:名单是否存在黑名单列表 参数.一:pSt_Banned In/Out:In @@ -1386,10 +1386,10 @@ bool CDatabase_SQLite::Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_Banned 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) +bool CDBModule_SQLite::DBModule_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) { SQLPacket_IsErrorOccur = false; - //判断用域名是否存在 + //判断用户名是否存在 if (_tcsxlen(pSt_Banned->tszUserName) > 0) { int nRow = 0; @@ -1405,28 +1405,49 @@ bool CDatabase_SQLite::Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) SQLPacket_dwErrorCode = DataBase_GetLastError(); return false; } - if (nRow <= 0) + if (nRow > 0) { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; - DataBase_SQLite_FreeTable(ppszResult); - return false; + int nFliedValue = nColumn; + //ID + pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); + nFliedValue++; + //是否启用 + pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //地址 + nFliedValue++; + //过期时间 + _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); + //如果启用 且 tszLeftTime 大于 0 + if (pSt_Banned->bEnable) + { + if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) + { + __int64x nTimer = 0; + XCHAR tszStrTime[128]; + memset(tszStrTime, '\0', sizeof(tszStrTime)); + + BaseLib_OperatorTime_TimeToStr(tszStrTime); + BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); + if (nTimer < 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_BANNED; + return false; + } + } + else + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_BANNED; + return false; + } + } } - int nFliedValue = nColumn; - //ID - pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); - nFliedValue++; - //是否启用 - pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); - nFliedValue++; - //地址 - nFliedValue++; - //过期时间 - _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); - nFliedValue++; - //注册时间 - _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); - DataBase_SQLite_FreeTable(ppszResult); + DataBase_SQLite_FreeTable(ppszResult); } //判断IP地址是否存在 if (_tcsxlen(pSt_Banned->tszIPAddr) > 0) @@ -1437,63 +1458,62 @@ bool CDatabase_SQLite::Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) XCHAR tszSQLStatement[1024]; memset(tszSQLStatement, '\0', 1024); - _xstprintf(tszSQLStatement, _X("SELECT * FROM Authorize_BannedAddr WHERE tszIPAddr = '%s'"), pSt_Banned->tszIPAddr); + _xstprintf(tszSQLStatement, _X("SELECT * FROM Authorize_BannedAddr WHERE tszIPAddr = '%s'"), pSt_Banned->tszIPAddr); if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) { SQLPacket_IsErrorOccur = true; SQLPacket_dwErrorCode = DataBase_GetLastError(); return false; } - if (nRow <= 0) + if (nRow > 0) { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; - DataBase_SQLite_FreeTable(ppszResult); - return false; + int nFliedValue = nColumn; + //ID + pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); + nFliedValue++; + //是否启用 + pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //地址 + nFliedValue++; + //过期时间 + _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); + + //处理是否被禁用 + if (pSt_Banned->bEnable) + { + if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) + { + __int64x nTimer = 0; + XCHAR tszStrTime[128]; + memset(tszStrTime, '\0', sizeof(tszStrTime)); + + BaseLib_OperatorTime_TimeToStr(tszStrTime); + BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); + if (nTimer < 0) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT; + return false; + } + } + } + else + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT; + return false; + } } - int nFliedValue = nColumn; - //ID - pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); - nFliedValue++; - //是否启用 - pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); - nFliedValue++; - //地址 - nFliedValue++; - //过期时间 - _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); - nFliedValue++; - //注册时间 - _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); - DataBase_SQLite_FreeTable(ppszResult); - } - //处理是否被禁用 - if (!pSt_Banned->bEnable) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTENABLE; - return false; - } - if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) - { - __int64x nTimer = 0; - XCHAR tszStrTime[128]; - memset(tszStrTime, '\0', sizeof(tszStrTime)); - - BaseLib_OperatorTime_TimeToStr(tszStrTime); - BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); - if (nTimer > 0) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT; - return false; - } + DataBase_SQLite_FreeTable(ppszResult); } - return true; } /******************************************************************** -函数名称:Database_SQLite_BannedUPDate +函数名称:DBModule_SQLite_BannedUPDate 函数功能:更新名单列表信息 参数.一:pSt_Banned In/Out:In @@ -1505,7 +1525,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned) +bool CDBModule_SQLite::DBModule_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned) { SQLPacket_IsErrorOccur = false; @@ -1536,7 +1556,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned) return true; } /******************************************************************** -函数名称:Database_SQLite_AnnouncementInsert +函数名称:DBModule_SQLite_AnnouncementInsert 函数功能:公告插入 参数.一:pSt_Announcement In/Out:In @@ -1548,7 +1568,7 @@ bool CDatabase_SQLite::Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned) 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement) +bool CDBModule_SQLite::DBModule_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement) { SQLPacket_IsErrorOccur = false; @@ -1572,7 +1592,7 @@ bool CDatabase_SQLite::Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* return true; } /******************************************************************** -函数名称:Database_SQLite_AnnouncementDelete +函数名称:DBModule_SQLite_AnnouncementDelete 函数功能:公告删除 参数.一:pSt_Announcement In/Out:In @@ -1584,7 +1604,7 @@ bool CDatabase_SQLite::Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement) +bool CDBModule_SQLite::DBModule_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement) { SQLPacket_IsErrorOccur = false; @@ -1608,7 +1628,7 @@ bool CDatabase_SQLite::Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* return true; } /******************************************************************** -函数名称:Database_SQLite_AnnouncementList +函数名称:DBModule_SQLite_AnnouncementList 函数功能:列举所有公告 参数.一:ppppSt_Announcement In/Out:Out @@ -1625,7 +1645,7 @@ bool CDatabase_SQLite::Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* 意思:是否成功 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount) +bool CDBModule_SQLite::DBModule_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount) { SQLPacket_IsErrorOccur = false; @@ -1669,7 +1689,7 @@ bool CDatabase_SQLite::Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** // 保护函数 ////////////////////////////////////////////////////////////////////////// /******************************************************************** -函数名称:Database_SQLite_UserPayTime +函数名称:DBModule_SQLite_UserPayTime 函数功能:日期方式充值方式 参数.一:lpszUserName In/Out:In @@ -1701,7 +1721,7 @@ bool CDatabase_SQLite::Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** 意思:是否成功充值 备注: *********************************************************************/ -bool CDatabase_SQLite::Database_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR lpszUserTime, LPCXSTR lpszCardTime, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_AuthSerialType, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_AuthUserType) +bool CDBModule_SQLite::DBModule_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR lpszUserTime, LPCXSTR lpszCardTime, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_AuthSerialType, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_AuthUserType) { SQLPacket_IsErrorOccur = false; @@ -1711,7 +1731,7 @@ bool CDatabase_SQLite::Database_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR if (en_AuthSerialType != en_AuthUserType) { //如果不等于,需要重写 - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW != en_AuthUserType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW != en_AuthUserType) { //判断是否允许改写。 if (!m_bChange) @@ -1734,32 +1754,32 @@ bool CDatabase_SQLite::Database_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR //处理卡类型 switch (en_AuthSerialType) { - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND: { //如果是分钟卡 //如果当前的充值卡类型不匹配,那么他以前的充值内容全部都会被删除! _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), _ttxoi(lpszCardTime), lpszUserName); //更新用户表的过期时间 } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY: { //如果是天数卡 //更新用户表的过期时间 _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), _ttxoi(lpszCardTime), lpszUserName); //更新用户表的过期时间 } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME: { //如果是次数卡 //更新用户表的过期时间 _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), _ttxoi(lpszCardTime), lpszUserName); } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM: { XCHAR tszTime[128]; XENGINE_LIBTIMER st_AuthTime; - ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_GeneraterSerialType; + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_GeneraterSerialType; memset(tszTime, '\0', sizeof(tszTime)); memset(&st_AuthTime, '\0', sizeof(XENGINE_LIBTIMER)); @@ -1781,14 +1801,14 @@ bool CDatabase_SQLite::Database_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR { switch (en_AuthSerialType) { - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND: { int nCardTime = _ttxoi(lpszCardTime); nCardTime += _ttxoi(lpszUserTime); //我们把用户以前的时间也加上 _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); //更新用户表的过期时间 } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY: { int nCardTime = _ttxoi(lpszCardTime); nCardTime += _ttxoi(lpszUserTime); //我们把用户以前的时间也加上 @@ -1796,7 +1816,7 @@ bool CDatabase_SQLite::Database_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME: { //如果是次数卡 int nCardTime = _ttxoi(lpszCardTime); @@ -1804,12 +1824,12 @@ bool CDatabase_SQLite::Database_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR _xstprintf(tszSQLStatement, _X("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); //更新用户表的过期时间 } break; - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM: { //自定义卡,无法相加 XCHAR tszTime[128]; XENGINE_LIBTIMER st_AuthTime; - ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_GeneraterSerialType; + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_GeneraterSerialType; memset(tszTime, '\0', sizeof(tszTime)); memset(&st_AuthTime, '\0', sizeof(XENGINE_LIBTIMER)); diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h similarity index 49% rename from XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h rename to XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h index 5f8a66fed99a1e95b0c06b35b612dc78915ecafb..a47bfd48585a365eb2d02e36044bb0e0dd51b1f4 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h @@ -14,47 +14,47 @@ // AuthReg_UserTable内容:ID 用户名 密码 注册日期 剩余时间 硬件码 注册文件密码 QQ 身份证 // AuthReg_SerialTable内容:ID 使用者 序列号 使用时间 最大可允许时间 是否使用 ////////////////////////////////////////////////////////////////////////// -class CDatabase_SQLite +class CDBModule_SQLite { public: - CDatabase_SQLite(); - ~CDatabase_SQLite(); + CDBModule_SQLite(); + ~CDBModule_SQLite(); public: - bool Database_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange = true); //初始化 - bool Database_SQLite_Destroy(); //销毁 + bool DBModule_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange = true); //初始化 + bool DBModule_SQLite_Destroy(); //销毁 public: - bool Database_SQLite_UserDelete(LPCXSTR lpszUserName); //删除用户 - bool Database_SQLite_UserRegister(AUTHREG_USERTABLE*pSt_UserInfo); //用户注册 - bool Database_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 - bool Database_SQLite_UserPay(LPCXSTR lpszUserName,LPCXSTR lpszSerialName); //充值卡充值 - bool Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 - bool Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); - bool Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); + bool DBModule_SQLite_UserDelete(LPCXSTR lpszUserName); //删除用户 + bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE*pSt_UserInfo); //用户注册 + bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 + bool DBModule_SQLite_UserPay(LPCXSTR lpszUserName,LPCXSTR lpszSerialName); //充值卡充值 + bool DBModule_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 + bool DBModule_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); + bool DBModule_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); public: - bool Database_SQLite_SerialInsert(LPCXSTR lpszSerialNumber); //插入序列卡 - bool Database_SQLite_SerialDelete(LPCXSTR lpszSerialNumber); //删除一个序列号 - bool Database_SQLite_SerialQuery(LPCXSTR lpszSerialNumber,LPAUTHREG_SERIALTABLE pSt_SerialTable = NULL); //按照卡号或者用户查询 - bool Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE ***pppSt_SerialTable,int *pInt_ListCount, int nPosStart, int nPosEnd);//查询所有序列卡 - bool Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable); + bool DBModule_SQLite_SerialInsert(LPCXSTR lpszSerialNumber); //插入序列卡 + bool DBModule_SQLite_SerialDelete(LPCXSTR lpszSerialNumber); //删除一个序列号 + bool DBModule_SQLite_SerialQuery(LPCXSTR lpszSerialNumber,LPAUTHREG_SERIALTABLE pSt_SerialTable = NULL); //按照卡号或者用户查询 + bool DBModule_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE ***pppSt_SerialTable,int *pInt_ListCount, int nPosStart, int nPosEnd);//查询所有序列卡 + bool DBModule_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable); public: - bool Database_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer); - bool Database_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer); - bool Database_SQLite_TryDelete(LPCXSTR lpszSerial); - bool Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enVerMode = ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW); - bool Database_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer); - bool Database_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart = 0, int nPosEnd = 1000); + bool DBModule_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer); + bool DBModule_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer); + bool DBModule_SQLite_TryDelete(LPCXSTR lpszSerial); + bool DBModule_SQLite_TryClear(int nThanValue, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVerMode = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW); + bool DBModule_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer); + bool DBModule_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart = 0, int nPosEnd = 1000); public: - bool Database_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned); - bool Database_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned); - bool Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd); - bool Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned); - bool Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned); + bool DBModule_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned); + bool DBModule_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned); + bool DBModule_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd); + bool DBModule_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned); + bool DBModule_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); + bool DBModule_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement); + bool DBModule_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement); + bool DBModule_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount); protected: - bool Database_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR lpszUserTime, LPCXSTR lpszCardTime, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_AuthSerialType, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_AuthUserType); + bool DBModule_SQLite_UserPayTime(LPCXSTR lpszUserName, LPCXSTR lpszUserTime, LPCXSTR lpszCardTime, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_AuthSerialType, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE en_AuthUserType); private: bool m_bChange; XNETHANDLE xhData; //数据库句柄 diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Define.h b/XEngine_Source/AuthorizeModule_Database/Database_Define.h index dd02840759a5cb55b6e5215f7c3f1dc5b5a4a8e3..cceec65e93e566794e9b28d2783dee3588d0ec67 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Define.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Define.h @@ -18,7 +18,7 @@ extern "C" XLONG DBModule_GetLastError(int *pInt_SysError = NULL); /* 数据库服务导出函数 */ /************************************************************************/ /******************************************************************** -函数名称:Database_SQLite_Init +函数名称:DBModule_SQLite_Init 函数功能:初始化数据库服务 参数.一:lpszSQLFile In/Out:In @@ -35,18 +35,18 @@ extern "C" XLONG DBModule_GetLastError(int *pInt_SysError = NULL); 意思:是否成功 备注:先初始化数据库服务,在初始化网络服务,才可以使用本验证服务器! *********************************************************************/ -extern "C" bool Database_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange = true); +extern "C" bool DBModule_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange = true); /******************************************************************** -函数名称:Database_SQLite_Destroy +函数名称:DBModule_SQLite_Destroy 函数功能:销毁数据库服务 返回值 类型:逻辑型 意思:是否销毁成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_Destroy(); +extern "C" bool DBModule_SQLite_Destroy(); /******************************************************************** -函数名称:Database_SQLite_UserDelete +函数名称:DBModule_SQLite_UserDelete 函数功能:删除一个用户从数据库中 参数.一:lpszUserName In/Out:In @@ -58,9 +58,9 @@ extern "C" bool Database_SQLite_Destroy(); 意思:是否删除成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_UserDelete(LPCXSTR lpszUserName); +extern "C" bool DBModule_SQLite_UserDelete(LPCXSTR lpszUserName); /******************************************************************** -函数名称:Database_SQLite_UserRegister +函数名称:DBModule_SQLite_UserRegister 函数功能:用户注册处理数据库语句函数 参数.一:pSt_UserInfo In/Out:In @@ -72,9 +72,9 @@ extern "C" bool Database_SQLite_UserDelete(LPCXSTR lpszUserName); 意思:是否插入成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo); +extern "C" bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo); /******************************************************************** -函数名称:Database_SQLite_UserQuery +函数名称:DBModule_SQLite_UserQuery 函数功能:查询用户相对应的值 参数.一:lpszUserName In/Out:In @@ -91,9 +91,9 @@ extern "C" bool Database_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo); 意思:是否查询成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_UserQuery(LPCXSTR lpszUserName,AUTHREG_USERTABLE *pSt_UserInfo); +extern "C" bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName,AUTHREG_USERTABLE *pSt_UserInfo); /******************************************************************** -函数名称:Database_SQLite_UserPay +函数名称:DBModule_SQLite_UserPay 函数功能:用户充值函数 参数.一:lpszUserName In/Out:In @@ -110,9 +110,9 @@ extern "C" bool Database_SQLite_UserQuery(LPCXSTR lpszUserName,AUTHREG_USERTABLE 意思:是否成功充值 备注: *********************************************************************/ -extern "C" bool Database_SQLite_UserPay(LPCXSTR lpszUserName,LPCXSTR lpszSerialName); +extern "C" bool DBModule_SQLite_UserPay(LPCXSTR lpszUserName,LPCXSTR lpszSerialName); /******************************************************************** -函数名称:Database_SQLite_UserLeave +函数名称:DBModule_SQLite_UserLeave 函数功能:用户离开处理事件 参数.一:pSt_TimeProtocol In/Out:In @@ -124,9 +124,9 @@ extern "C" bool Database_SQLite_UserPay(LPCXSTR lpszUserName,LPCXSTR lpszSerialN 意思:是否处理成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME * pSt_TimeProtocol); +extern "C" bool DBModule_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME * pSt_TimeProtocol); /******************************************************************** -函数名称:Database_SQLite_UserSet +函数名称:DBModule_SQLite_UserSet 函数功能:设置用户信息 参数.一:pSt_UserTable In/Out:In @@ -138,9 +138,9 @@ extern "C" bool Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME * pSt_TimeProtoc 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); +extern "C" bool DBModule_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); /******************************************************************** -函数名称:Database_SQLite_UserList +函数名称:DBModule_SQLite_UserList 函数功能:获取用户列表 参数.一:pppSt_UserInfo In/Out:Out @@ -167,9 +167,9 @@ extern "C" bool Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); +extern "C" bool DBModule_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); /******************************************************************** -函数名称:Database_SQLite_SerialInsert +函数名称:DBModule_SQLite_SerialInsert 函数功能:插入一个序列号到数据库 参数.一:lpszSerialNumber In/Out:In @@ -181,9 +181,9 @@ extern "C" bool Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, in 意思:是否插入成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_SerialInsert(LPCXSTR lpszSerialNumber); +extern "C" bool DBModule_SQLite_SerialInsert(LPCXSTR lpszSerialNumber); /******************************************************************** -函数名称:Database_SQLite_SerialDelete +函数名称:DBModule_SQLite_SerialDelete 函数功能:从数据库删除指定序列号 参数.一:lpszSerialNumber In/Out:In @@ -195,9 +195,9 @@ extern "C" bool Database_SQLite_SerialInsert(LPCXSTR lpszSerialNumber); 意思:是否删除成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_SerialDelete(LPCXSTR lpszSerialNumber); +extern "C" bool DBModule_SQLite_SerialDelete(LPCXSTR lpszSerialNumber); /******************************************************************** -函数名称:Database_SQLite_SerialQuery +函数名称:DBModule_SQLite_SerialQuery 函数功能:查询一个指定的序列号信息 参数.一:lpszSerialNumber In/Out:In @@ -214,9 +214,9 @@ extern "C" bool Database_SQLite_SerialDelete(LPCXSTR lpszSerialNumber); 意思:是否查询成功,如果第二个参数为NULL,那么将只返回是否有这个序列号 备注: *********************************************************************/ -extern "C" bool Database_SQLite_SerialQuery(LPCXSTR lpszSerialNumber,LPAUTHREG_SERIALTABLE pSt_SerialTable); +extern "C" bool DBModule_SQLite_SerialQuery(LPCXSTR lpszSerialNumber,LPAUTHREG_SERIALTABLE pSt_SerialTable); /******************************************************************** -函数名称:Database_SQLite_SerialQueryAll +函数名称:DBModule_SQLite_SerialQueryAll 函数功能:查询序列卡表中的所有序列号 参数.一:pppSt_SerialTable In/Out:Out @@ -243,9 +243,9 @@ extern "C" bool Database_SQLite_SerialQuery(LPCXSTR lpszSerialNumber,LPAUTHREG_S 意思:是否查询成功 备注:参数一需要调用基础库的释放内存函数进行内存释放 *********************************************************************/ -extern "C" bool Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd); +extern "C" bool DBModule_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd); /******************************************************************** -函数名称:Database_SQLite_SerialPush +函数名称:DBModule_SQLite_SerialPush 函数功能:插入一条指定的序列号信息到服务器 参数.一:pSt_SerialTable In/Out:In @@ -257,9 +257,9 @@ extern "C" bool Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_Ser 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable); +extern "C" bool DBModule_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable); /******************************************************************** -函数名称:Database_SQLite_TryInsert +函数名称:DBModule_SQLite_TryInsert 函数功能:网络使用模式插入一条数据 参数.一:pSt_AuthVer In/Out:In @@ -271,9 +271,9 @@ extern "C" bool Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable) 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer); +extern "C" bool DBModule_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer); /******************************************************************** -函数名称:Database_SQLite_TryQuery +函数名称:DBModule_SQLite_TryQuery 函数功能:试用序列号查询函数 参数.一:pSt_AuthVer In/Out:In/Out @@ -285,9 +285,9 @@ extern "C" bool Database_SQLite_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer); +extern "C" bool DBModule_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer); /******************************************************************** -函数名称:Database_SQLite_TryDelete +函数名称:DBModule_SQLite_TryDelete 函数功能:删除一条指定的试用数据 参数.一:lpszSerial In/Out:In @@ -299,9 +299,9 @@ extern "C" bool Database_SQLite_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_TryDelete(LPCXSTR lpszSerial); +extern "C" bool DBModule_SQLite_TryDelete(LPCXSTR lpszSerial); /******************************************************************** -函数名称:Database_SQLite_TryClear +函数名称:DBModule_SQLite_TryClear 函数功能:清理函数,自动清理过期数据 参数.一:nThanValue In/Out:In @@ -318,9 +318,9 @@ extern "C" bool Database_SQLite_TryDelete(LPCXSTR lpszSerial); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enVerMode = ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW); +extern "C" bool DBModule_SQLite_TryClear(int nThanValue, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVerMode = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW); /******************************************************************** -函数名称:Database_SQLite_TrySet +函数名称:DBModule_SQLite_TrySet 函数功能:设置用户信息函数 参数.一:pSt_AuthVer In/Out:In @@ -332,9 +332,9 @@ extern "C" bool Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONENTS_AUT 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer); +extern "C" bool DBModule_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer); /******************************************************************** -函数名称:Database_SQLite_TryList +函数名称:DBModule_SQLite_TryList 函数功能:请求试用期列表 参数.一:pppSt_AuthVer In/Out:Out @@ -361,9 +361,9 @@ extern "C" bool Database_SQLite_TrySet(AUTHREG_TEMPVER* pSt_AuthVer); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart = 0, int nPosEnd = 1000); +extern "C" bool DBModule_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart = 0, int nPosEnd = 1000); /******************************************************************** -函数名称:Database_SQLite_BannedInsert +函数名称:DBModule_SQLite_BannedInsert 函数功能:黑名单列表插入 参数.一:pSt_Banned In/Out:In @@ -375,9 +375,9 @@ extern "C" bool Database_SQLite_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* p 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned); +extern "C" bool DBModule_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned); /******************************************************************** -函数名称:Database_SQLite_BannedDelete +函数名称:DBModule_SQLite_BannedDelete 函数功能:黑名单列表删除 参数.一:pSt_Banned In/Out:In @@ -389,9 +389,9 @@ extern "C" bool Database_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned); +extern "C" bool DBModule_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned); /******************************************************************** -函数名称:Database_SQLite_BannedList +函数名称:DBModule_SQLite_BannedList 函数功能:黑名单列表查询 参数.一:pppSt_BannedUser In/Out:Out @@ -428,9 +428,9 @@ extern "C" bool Database_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd); +extern "C" bool DBModule_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd); /******************************************************************** -函数名称:Database_SQLite_BannedExist +函数名称:DBModule_SQLite_BannedExist 函数功能:名单是否存在黑名单列表 参数.一:pSt_Banned In/Out:In @@ -442,9 +442,9 @@ extern "C" bool Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, i 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned); +extern "C" bool DBModule_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned); /******************************************************************** -函数名称:Database_SQLite_BannedUPDate +函数名称:DBModule_SQLite_BannedUPDate 函数功能:更新名单列表信息 参数.一:pSt_Banned In/Out:In @@ -456,9 +456,9 @@ extern "C" bool Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned); +extern "C" bool DBModule_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned); /******************************************************************** -函数名称:Database_SQLite_AnnouncementInsert +函数名称:DBModule_SQLite_AnnouncementInsert 函数功能:公告插入 参数.一:pSt_Announcement In/Out:In @@ -470,9 +470,9 @@ extern "C" bool Database_SQLite_BannedUPDate(AUTHREG_BANNED* pSt_Banned); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement); +extern "C" bool DBModule_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement); /******************************************************************** -函数名称:Database_SQLite_AnnouncementDelete +函数名称:DBModule_SQLite_AnnouncementDelete 函数功能:公告删除 参数.一:pSt_Announcement In/Out:In @@ -484,9 +484,9 @@ extern "C" bool Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Ann 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement); +extern "C" bool DBModule_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement); /******************************************************************** -函数名称:Database_SQLite_AnnouncementList +函数名称:DBModule_SQLite_AnnouncementList 函数功能:列举所有公告 参数.一:ppppSt_Announcement In/Out:Out @@ -503,4 +503,493 @@ extern "C" bool Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Ann 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount); \ No newline at end of file +extern "C" bool DBModule_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount); + +/************************************************************************/ +/* MYSQL数据库服务导出函数 */ +/************************************************************************/ +/******************************************************************** +函数名称:DBModule_MySQL_Init +函数功能:初始化数据库管理器 + 参数.一:pSt_DBConnector + In/Out:In + 类型:数据结构指针 + 参数.二:bIsChange + In/Out:In + 类型:逻辑型 + 可空:Y + 意思:是否允许更改用户充值类型 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注:先初始化数据库服务,在初始化网络服务,才可以使用本验证服务器! +*********************************************************************/ +extern "C" bool DBModule_MySQL_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bIsChange = true); +/******************************************************************** +函数名称:DBModule_MySQL_Destroy +函数功能:销毁数据库服务 +返回值 + 类型:逻辑型 + 意思:是否销毁成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_Destroy(); +/******************************************************************** +函数名称:DBModule_MySQL_UserDelete +函数功能:删除一个用户从数据库中 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要删除的用户 +返回值 + 类型:逻辑型 + 意思:是否删除成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_UserDelete(LPCXSTR lpszUserName); +/******************************************************************** +函数名称:DBModule_MySQL_UserRegister +函数功能:用户注册处理数据库语句函数 + 参数.一:pSt_UserInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要插入的用户数据 +返回值 + 类型:逻辑型 + 意思:是否插入成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo); +/******************************************************************** +函数名称:DBModule_MySQL_UserQuery +函数功能:查询用户相对应的值 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要查询的指定用户 + 参数.二:pSt_UserInfo + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:如果为空NULL,那么将只判断此用户是否存在 +返回值 + 类型:逻辑型 + 意思:是否查询成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo); +/******************************************************************** +函数名称:DBModule_MySQL_UserPay +函数功能:用户充值函数 + 参数.一:lpszUserName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要充值的用户名 + 参数.二:lpszSerialName + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:充值使用的序列号 +返回值 + 类型:逻辑型 + 意思:是否成功充值 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName); +/******************************************************************** +函数名称:DBModule_MySQL_UserLeave +函数功能:用户离开处理事件 + 参数.一:pSt_TimeProtocol + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:离开的用户信息 +返回值 + 类型:逻辑型 + 意思:是否处理成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); +/******************************************************************** +函数名称:DBModule_MySQL_UserSet +函数功能:设置用户信息 + 参数.一:pSt_UserTable + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要设置的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_UserSet(AUTHREG_USERTABLE* pSt_UserTable); +/******************************************************************** +函数名称:DBModule_MySQL_UserList +函数功能:获取用户列表 + 参数.一:pppSt_UserInfo + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出用户列表,内存由用户释放 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型 + 可空:N + 意思:输出列表个数 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入起始位置 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入结束位置 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); +/******************************************************************** +函数名称:DBModule_MySQL_SerialInsert +函数功能:插入一个序列号到数据库 + 参数.一:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要插入的序列号 +返回值 + 类型:逻辑型 + 意思:是否插入成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_SerialInsert(LPCXSTR lpszSerialNumber); +/******************************************************************** +函数名称:DBModule_MySQL_SerialDelete +函数功能:从数据库删除指定序列号 + 参数.一:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要删除的序列号 +返回值 + 类型:逻辑型 + 意思:是否删除成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_SerialDelete(LPCXSTR lpszSerialNumber); +/******************************************************************** +函数名称:DBModule_MySQL_SerialQuery +函数功能:查询一个指定的序列号信息 + 参数.一:lpszSerialNumber + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要查询的序列号 + 参数.二:pSt_SerialTable + In/Out:Out + 类型:数据结构指针 + 可空:Y + 意思:导出查询到的信息,如果为NULL,此参数将不起作用 +返回值 + 类型:逻辑型 + 意思:是否查询成功,如果第二个参数为NULL,那么将只返回是否有这个序列号 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_SerialQuery(LPCXSTR lpszSerialNumber, LPAUTHREG_SERIALTABLE pSt_SerialTable); +/******************************************************************** +函数名称:DBModule_MySQL_SerialQueryAll +函数功能:查询序列卡表中的所有序列号 + 参数.一:pppSt_SerialTable + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出序列卡列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:Y + 意思:输出多少张卡 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入起始位置 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入结束位置 +返回值 + 类型:逻辑型 + 意思:是否查询成功 +备注:参数一需要调用基础库的释放内存函数进行内存释放 +*********************************************************************/ +extern "C" bool DBModule_MySQL_SerialQueryAll(AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd); +/******************************************************************** +函数名称:DBModule_MySQL_SerialPush +函数功能:插入一条指定的序列号信息到服务器 + 参数.一:pSt_SerialTable + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable); +/******************************************************************** +函数名称:DBModule_MySQL_TryInsert +函数功能:网络使用模式插入一条数据 + 参数.一:pSt_AuthVer + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer); +/******************************************************************** +函数名称:DBModule_MySQL_TryQuery +函数功能:试用序列号查询函数 + 参数.一:pSt_AuthVer + In/Out:In/Out + 类型:数据结构指针 + 可空:N + 意思:输入序列号,输出获取到的内容 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer); +/******************************************************************** +函数名称:DBModule_MySQL_TryDelete +函数功能:删除一条指定的试用数据 + 参数.一:lpszSerial + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要删除的序列号 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_TryDelete(LPCXSTR lpszSerial); +/******************************************************************** +函数名称:DBModule_MySQL_TryClear +函数功能:清理函数,自动清理过期数据 + 参数.一:nThanValue + In/Out:In + 类型:整数型 + 可空:N + 意思:清理用于判断需要大于此的值 + 参数.二:enVerMode + In/Out:In + 类型:枚举型 + 可空:Y + 意思:判断注册类型,默认不判断全部执行 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_TryClear(int nThanValue, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVerMode = ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW); +/******************************************************************** +函数名称:DBModule_MySQL_TrySet +函数功能:设置用户信息函数 + 参数.一:pSt_AuthVer + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要更新的用户信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_TrySet(AUTHREG_TEMPVER* pSt_AuthVer); +/******************************************************************** +函数名称:DBModule_MySQL_TryList +函数功能:请求试用期列表 + 参数.一:pppSt_AuthVer + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出获取到的列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:N + 意思:输入查询起始编号 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:N + 意思:输入查询结束编号 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart = 0, int nPosEnd = 1000); +/******************************************************************** +函数名称:DBModule_MySQL_BannedInsert +函数功能:黑名单列表插入 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_BannedInsert(AUTHREG_BANNED* pSt_Banned); +/******************************************************************** +函数名称:DBModule_MySQL_BannedDelete +函数功能:黑名单列表删除 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_BannedDelete(AUTHREG_BANNED* pSt_Banned); +/******************************************************************** +函数名称:DBModule_MySQL_BannedList +函数功能:黑名单列表查询 + 参数.一:pppSt_BannedUser + In/Out:Out + 类型:三级指针 + 可空:N + 意思:禁用的用户名列表 + 参数.二:pInt_UserCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出用户禁用列表个数 + 参数.三:pppSt_BannedAddr + In/Out:Out + 类型:三级指针 + 可空:N + 意思:禁用的IP地址列表 + 参数.四:pInt_AddrCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出地址禁用列表个数 + 参数.五:nPosStart + In/Out:In + 类型:整数型 + 可空:N + 意思:输入查找起始位置 + 参数.六:nPosEnd + In/Out:In + 类型:整数型 + 可空:N + 意思:输入查找结束位置 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd); +/******************************************************************** +函数名称:DBModule_MySQL_BannedExist +函数功能:名单是否存在黑名单列表 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_BannedExist(AUTHREG_BANNED* pSt_Banned); +/******************************************************************** +函数名称:DBModule_MySQL_BannedUPDate +函数功能:更新名单列表信息 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_BannedUPDate(AUTHREG_BANNED* pSt_Banned); +/******************************************************************** +函数名称:DBModule_MySQL_AnnouncementInsert +函数功能:公告插入 + 参数.一:pSt_Announcement + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement); +/******************************************************************** +函数名称:DBModule_MySQL_AnnouncementDelete +函数功能:公告删除 + 参数.一:pSt_Announcement + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要删除的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement); +/******************************************************************** +函数名称:DBModule_MySQL_AnnouncementList +函数功能:列举所有公告 + 参数.一:ppppSt_Announcement + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出列举数据 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:导出数据个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool DBModule_MySQL_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount); diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Error.h b/XEngine_Source/AuthorizeModule_Database/Database_Error.h index def1314d4006c51f3d4b139d7aa88c0a63e00d79..aa6e198ec72c0c67ead544d3470945d758d60a35 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Error.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Error.h @@ -35,4 +35,5 @@ #define ERROR_AUTHORIZE_MODULE_DATABASE_UNKNOWTYPE 0x0030017 //无法识别的卡的类型,无法正确处理离开消息 #define ERROR_AUTHORIZE_MODULE_DATABASE_NONE 0x0030018 //获取失败,没有任何记录 #define ERROR_AUTHORIZE_MODULE_DATABASE_NOTENABLE 0x0030019 //没有启用.不禁用 -#define ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT 0x0030020 //超过禁用时间 \ No newline at end of file +#define ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT 0x0030020 //超过禁用时间 +#define ERROR_AUTHORIZE_MODULE_DATABASE_BANNED 0x0030021 //被禁用 \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Database/Makefile b/XEngine_Source/AuthorizeModule_Database/Makefile index 2e02eb4a7aaacd54e3be42d41ba3f1c989c2018b..fd211e5c5980cd1076eb674a973525eaf0426bc8 100644 --- a/XEngine_Source/AuthorizeModule_Database/Makefile +++ b/XEngine_Source/AuthorizeModule_Database/Makefile @@ -7,10 +7,10 @@ LIBFLAG = RELEASE = 0 UNICODE = 0 LOADHDR = -I ./ -LOADSO = -LIB = -lXEngine_BaseLib -lHelpComponents_DataBase -lHelpComponents_Authorize +LOADSO = -L ../AuthorizeModule_CDKey +LIB = -lXEngine_BaseLib -lHelpComponents_DataBase -lAuthorizeModule_CDKey LIBEX = -OBJECTS = Database_SQLite.o pch.o +OBJECTS = DBModule_SQLite.o DBModule_MySQL.o pch.o ifeq ($(RELEASE),1) FLAGS = -c @@ -51,8 +51,10 @@ endif all:$(OBJECTS) $(CC) $(DEBUG) $(OBJECTS) -o libAuthorizeModule_Database.$(FILEEXT) $(LIBFLAG) $(LIB) $(LIBEX) $(LOADSO) $(LOADBIN) -Database_SQLite.o:./Database_SQLite/Database_SQLite.cpp - $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./Database_SQLite/Database_SQLite.cpp +DBModule_SQLite.o:./DBModule_SQLite/DBModule_SQLite.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./DBModule_SQLite/DBModule_SQLite.cpp +DBModule_MySQL.o:./DBModule_MySQL/DBModule_MySQL.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./DBModule_MySQL/DBModule_MySQL.cpp pch.o:pch.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) pch.cpp diff --git a/XEngine_Source/AuthorizeModule_Database/pch.cpp b/XEngine_Source/AuthorizeModule_Database/pch.cpp index 7b844cff974e7a3755d6d809091884750346ff27..fea7d2964b49a1d6376ca40f8d5c9aa5675a16e6 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Database/pch.cpp @@ -1,5 +1,6 @@ #include "pch.h" -#include "Database_SQLite/Database_SQLite.h" +#include "DBModule_SQLite/DBModule_SQLite.h" +#include "DBModule_MySQL/DBModule_MySQL.h" /******************************************************************** // Created: 2022/05/26 11:02:23 // File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Database\pch.cpp @@ -14,7 +15,8 @@ bool SQLPacket_IsErrorOccur = false; XLONG SQLPacket_dwErrorCode = 0; ////////////////////////////////////////////////////////////////////////// -CDatabase_SQLite m_SQLAuth; +CDBModule_SQLite m_DBSQLite; +CDBModule_MySQL m_DBMySQL; ////////////////////////////////////////////////////////////////////////// // 导出的函数 ////////////////////////////////////////////////////////////////////////// @@ -29,115 +31,231 @@ extern "C" XLONG DBModule_GetLastError(int* pInt_SysError) /************************************************************************/ /* 数据库服务导出函数 */ /************************************************************************/ -extern "C" bool Database_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange) +extern "C" bool DBModule_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange) { - return m_SQLAuth.Database_SQLite_Init(lpszSQLFile, bIsChange); + return m_DBSQLite.DBModule_SQLite_Init(lpszSQLFile, bIsChange); } -extern "C" bool Database_SQLite_Destroy() +extern "C" bool DBModule_SQLite_Destroy() { - return m_SQLAuth.Database_SQLite_Destroy(); + return m_DBSQLite.DBModule_SQLite_Destroy(); } -extern "C" bool Database_SQLite_UserDelete(LPCXSTR lpszUserName) +extern "C" bool DBModule_SQLite_UserDelete(LPCXSTR lpszUserName) { - return m_SQLAuth.Database_SQLite_UserDelete(lpszUserName); + return m_DBSQLite.DBModule_SQLite_UserDelete(lpszUserName); } -extern "C" bool Database_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo) +extern "C" bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo) { - return m_SQLAuth.Database_SQLite_UserRegister(pSt_UserInfo); + return m_DBSQLite.DBModule_SQLite_UserRegister(pSt_UserInfo); } -extern "C" bool Database_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE * pSt_UserInfo) +extern "C" bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE * pSt_UserInfo) { - return m_SQLAuth.Database_SQLite_UserQuery(lpszUserName, pSt_UserInfo); + return m_DBSQLite.DBModule_SQLite_UserQuery(lpszUserName, pSt_UserInfo); } -extern "C" bool Database_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) +extern "C" bool DBModule_SQLite_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) { - return m_SQLAuth.Database_SQLite_UserPay(lpszUserName, lpszSerialName); + return m_DBSQLite.DBModule_SQLite_UserPay(lpszUserName, lpszSerialName); } -extern "C" bool Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME * pSt_TimeProtocol) +extern "C" bool DBModule_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME * pSt_TimeProtocol) { - return m_SQLAuth.Database_SQLite_UserLeave(pSt_TimeProtocol); + return m_DBSQLite.DBModule_SQLite_UserLeave(pSt_TimeProtocol); } -extern "C" bool Database_SQLite_UserSet(AUTHREG_USERTABLE * pSt_UserTable) +extern "C" bool DBModule_SQLite_UserSet(AUTHREG_USERTABLE * pSt_UserTable) { - return m_SQLAuth.Database_SQLite_UserSet(pSt_UserTable); + return m_DBSQLite.DBModule_SQLite_UserSet(pSt_UserTable); } -extern "C" bool Database_SQLite_UserList(AUTHREG_USERTABLE * **pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd) +extern "C" bool DBModule_SQLite_UserList(AUTHREG_USERTABLE * **pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd) { - return m_SQLAuth.Database_SQLite_UserList(pppSt_UserInfo, pInt_ListCount, nPosStart, nPosEnd); + return m_DBSQLite.DBModule_SQLite_UserList(pppSt_UserInfo, pInt_ListCount, nPosStart, nPosEnd); } -extern "C" bool Database_SQLite_SerialInsert(LPCXSTR lpszSerialNumber) +extern "C" bool DBModule_SQLite_SerialInsert(LPCXSTR lpszSerialNumber) { - return m_SQLAuth.Database_SQLite_SerialInsert(lpszSerialNumber); + return m_DBSQLite.DBModule_SQLite_SerialInsert(lpszSerialNumber); } -extern "C" bool Database_SQLite_SerialDelete(LPCXSTR lpszSerialNumber) +extern "C" bool DBModule_SQLite_SerialDelete(LPCXSTR lpszSerialNumber) { - return m_SQLAuth.Database_SQLite_SerialDelete(lpszSerialNumber); + return m_DBSQLite.DBModule_SQLite_SerialDelete(lpszSerialNumber); } -extern "C" bool Database_SQLite_SerialQuery(LPCXSTR lpszSerialNumber, LPAUTHREG_SERIALTABLE pSt_SerialTable) +extern "C" bool DBModule_SQLite_SerialQuery(LPCXSTR lpszSerialNumber, LPAUTHREG_SERIALTABLE pSt_SerialTable) { - return m_SQLAuth.Database_SQLite_SerialQuery(lpszSerialNumber, pSt_SerialTable); + return m_DBSQLite.DBModule_SQLite_SerialQuery(lpszSerialNumber, pSt_SerialTable); } -extern "C" bool Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd) +extern "C" bool DBModule_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd) { - return m_SQLAuth.Database_SQLite_SerialQueryAll(pppSt_SerialTable, pInt_ListCount, nPosStart, nPosEnd); + return m_DBSQLite.DBModule_SQLite_SerialQueryAll(pppSt_SerialTable, pInt_ListCount, nPosStart, nPosEnd); } -extern "C" bool Database_SQLite_SerialPush(AUTHREG_SERIALTABLE * pSt_SerialTable) +extern "C" bool DBModule_SQLite_SerialPush(AUTHREG_SERIALTABLE * pSt_SerialTable) { - return m_SQLAuth.Database_SQLite_SerialPush(pSt_SerialTable); + return m_DBSQLite.DBModule_SQLite_SerialPush(pSt_SerialTable); } -extern "C" bool Database_SQLite_TryInsert(AUTHREG_TEMPVER * pSt_AuthVer) +extern "C" bool DBModule_SQLite_TryInsert(AUTHREG_TEMPVER * pSt_AuthVer) { - return m_SQLAuth.Database_SQLite_TryInsert(pSt_AuthVer); + return m_DBSQLite.DBModule_SQLite_TryInsert(pSt_AuthVer); } -extern "C" bool Database_SQLite_TryQuery(AUTHREG_TEMPVER * pSt_AuthVer) +extern "C" bool DBModule_SQLite_TryQuery(AUTHREG_TEMPVER * pSt_AuthVer) { - return m_SQLAuth.Database_SQLite_TryQuery(pSt_AuthVer); + return m_DBSQLite.DBModule_SQLite_TryQuery(pSt_AuthVer); } -extern "C" bool Database_SQLite_TryDelete(LPCXSTR lpszSerial) +extern "C" bool DBModule_SQLite_TryDelete(LPCXSTR lpszSerial) { - return m_SQLAuth.Database_SQLite_TryDelete(lpszSerial); + return m_DBSQLite.DBModule_SQLite_TryDelete(lpszSerial); } -extern "C" bool Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enVerMode) +extern "C" bool DBModule_SQLite_TryClear(int nThanValue, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVerMode) { - return m_SQLAuth.Database_SQLite_TryClear(nThanValue, enVerMode); + return m_DBSQLite.DBModule_SQLite_TryClear(nThanValue, enVerMode); } -extern "C" bool Database_SQLite_TrySet(AUTHREG_TEMPVER * pSt_AuthVer) +extern "C" bool DBModule_SQLite_TrySet(AUTHREG_TEMPVER * pSt_AuthVer) { - return m_SQLAuth.Database_SQLite_TrySet(pSt_AuthVer); + return m_DBSQLite.DBModule_SQLite_TrySet(pSt_AuthVer); } -extern "C" bool Database_SQLite_TryList(AUTHREG_TEMPVER * **pppSt_AuthVer, int* pInt_ListCount, int nPosStart, int nPosEnd) +extern "C" bool DBModule_SQLite_TryList(AUTHREG_TEMPVER * **pppSt_AuthVer, int* pInt_ListCount, int nPosStart, int nPosEnd) { - return m_SQLAuth.Database_SQLite_TryList(pppSt_AuthVer, pInt_ListCount, nPosStart, nPosEnd); + return m_DBSQLite.DBModule_SQLite_TryList(pppSt_AuthVer, pInt_ListCount, nPosStart, nPosEnd); } -extern "C" bool Database_SQLite_BannedInsert(AUTHREG_BANNED * pSt_Banned) +extern "C" bool DBModule_SQLite_BannedInsert(AUTHREG_BANNED * pSt_Banned) { - return m_SQLAuth.Database_SQLite_BannedInsert(pSt_Banned); + return m_DBSQLite.DBModule_SQLite_BannedInsert(pSt_Banned); } -extern "C" bool Database_SQLite_BannedDelete(AUTHREG_BANNED * pSt_Banned) +extern "C" bool DBModule_SQLite_BannedDelete(AUTHREG_BANNED * pSt_Banned) { - return m_SQLAuth.Database_SQLite_BannedDelete(pSt_Banned); + return m_DBSQLite.DBModule_SQLite_BannedDelete(pSt_Banned); } -extern "C" bool Database_SQLite_BannedList(AUTHREG_BANNED * **pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED * **pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd) +extern "C" bool DBModule_SQLite_BannedList(AUTHREG_BANNED * **pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED * **pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd) { - return m_SQLAuth.Database_SQLite_BannedList(pppSt_BannedUser, pInt_UserCount, pppSt_BannedAddr, pInt_AddrCount, nPosStart, nPosEnd); + return m_DBSQLite.DBModule_SQLite_BannedList(pppSt_BannedUser, pInt_UserCount, pppSt_BannedAddr, pInt_AddrCount, nPosStart, nPosEnd); } -extern "C" bool Database_SQLite_BannedExist(AUTHREG_BANNED * pSt_Banned) +extern "C" bool DBModule_SQLite_BannedExist(AUTHREG_BANNED * pSt_Banned) { - return m_SQLAuth.Database_SQLite_BannedExist(pSt_Banned); + return m_DBSQLite.DBModule_SQLite_BannedExist(pSt_Banned); } -extern "C" bool Database_SQLite_BannedUPDate(AUTHREG_BANNED * pSt_Banned) +extern "C" bool DBModule_SQLite_BannedUPDate(AUTHREG_BANNED * pSt_Banned) { - return m_SQLAuth.Database_SQLite_BannedUPDate(pSt_Banned); + return m_DBSQLite.DBModule_SQLite_BannedUPDate(pSt_Banned); } -extern "C" bool Database_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT * pSt_Announcement) +extern "C" bool DBModule_SQLite_AnnouncementInsert(AUTHREG_ANNOUNCEMENT * pSt_Announcement) { - return m_SQLAuth.Database_SQLite_AnnouncementInsert(pSt_Announcement); + return m_DBSQLite.DBModule_SQLite_AnnouncementInsert(pSt_Announcement); } -extern "C" bool Database_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT * pSt_Announcement) +extern "C" bool DBModule_SQLite_AnnouncementDelete(AUTHREG_ANNOUNCEMENT * pSt_Announcement) { - return m_SQLAuth.Database_SQLite_AnnouncementDelete(pSt_Announcement); + return m_DBSQLite.DBModule_SQLite_AnnouncementDelete(pSt_Announcement); } -extern "C" bool Database_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT * **ppppSt_Announcement, int* pInt_ListCount) +extern "C" bool DBModule_SQLite_AnnouncementList(AUTHREG_ANNOUNCEMENT * **ppppSt_Announcement, int* pInt_ListCount) { - return m_SQLAuth.Database_SQLite_AnnouncementList(ppppSt_Announcement, pInt_ListCount); + return m_DBSQLite.DBModule_SQLite_AnnouncementList(ppppSt_Announcement, pInt_ListCount); +} + +/************************************************************************/ +/* MYSQL数据库服务导出函数 */ +/************************************************************************/ +extern "C" bool DBModule_MySQL_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bIsChange) +{ + return m_DBMySQL.DBModule_MySQL_Init(pSt_DBConnector, bIsChange); +} +extern "C" bool DBModule_MySQL_Destroy() +{ + return m_DBMySQL.DBModule_MySQL_Destroy(); +} +extern "C" bool DBModule_MySQL_UserDelete(LPCXSTR lpszUserName) +{ + return m_DBMySQL.DBModule_MySQL_UserDelete(lpszUserName); +} +extern "C" bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo) +{ + return m_DBMySQL.DBModule_MySQL_UserRegister(pSt_UserInfo); +} +extern "C" bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo) +{ + return m_DBMySQL.DBModule_MySQL_UserQuery(lpszUserName, pSt_UserInfo); +} +extern "C" bool DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName) +{ + return m_DBMySQL.DBModule_MySQL_UserPay(lpszUserName, lpszSerialName); +} +extern "C" bool DBModule_MySQL_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol) +{ + return m_DBMySQL.DBModule_MySQL_UserLeave(pSt_TimeProtocol); +} +extern "C" bool DBModule_MySQL_UserSet(AUTHREG_USERTABLE* pSt_UserTable) +{ + return m_DBMySQL.DBModule_MySQL_UserSet(pSt_UserTable); +} +extern "C" bool DBModule_MySQL_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd) +{ + return m_DBMySQL.DBModule_MySQL_UserList(pppSt_UserInfo, pInt_ListCount, nPosStart, nPosEnd); +} +extern "C" bool DBModule_MySQL_SerialInsert(LPCXSTR lpszSerialNumber) +{ + return m_DBMySQL.DBModule_MySQL_SerialInsert(lpszSerialNumber); +} +extern "C" bool DBModule_MySQL_SerialDelete(LPCXSTR lpszSerialNumber) +{ + return m_DBMySQL.DBModule_MySQL_SerialDelete(lpszSerialNumber); +} +extern "C" bool DBModule_MySQL_SerialQuery(LPCXSTR lpszSerialNumber, LPAUTHREG_SERIALTABLE pSt_SerialTable) +{ + return m_DBMySQL.DBModule_MySQL_SerialQuery(lpszSerialNumber, pSt_SerialTable); +} +extern "C" bool DBModule_MySQL_SerialQueryAll(AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd) +{ + return m_DBMySQL.DBModule_MySQL_SerialQueryAll(pppSt_SerialTable, pInt_ListCount, nPosStart, nPosEnd); +} +extern "C" bool DBModule_MySQL_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable) +{ + return m_DBMySQL.DBModule_MySQL_SerialPush(pSt_SerialTable); +} +extern "C" bool DBModule_MySQL_TryInsert(AUTHREG_TEMPVER* pSt_AuthVer) +{ + return m_DBMySQL.DBModule_MySQL_TryInsert(pSt_AuthVer); +} +extern "C" bool DBModule_MySQL_TryQuery(AUTHREG_TEMPVER* pSt_AuthVer) +{ + return m_DBMySQL.DBModule_MySQL_TryQuery(pSt_AuthVer); +} +extern "C" bool DBModule_MySQL_TryDelete(LPCXSTR lpszSerial) +{ + return m_DBMySQL.DBModule_MySQL_TryDelete(lpszSerial); +} +extern "C" bool DBModule_MySQL_TryClear(int nThanValue, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVerMode) +{ + return m_DBMySQL.DBModule_MySQL_TryClear(nThanValue, enVerMode); +} +extern "C" bool DBModule_MySQL_TrySet(AUTHREG_TEMPVER* pSt_AuthVer) +{ + return m_DBMySQL.DBModule_MySQL_TrySet(pSt_AuthVer); +} +extern "C" bool DBModule_MySQL_TryList(AUTHREG_TEMPVER*** pppSt_AuthVer, int* pInt_ListCount, int nPosStart, int nPosEnd) +{ + return m_DBMySQL.DBModule_MySQL_TryList(pppSt_AuthVer, pInt_ListCount, nPosStart, nPosEnd); +} +extern "C" bool DBModule_MySQL_BannedInsert(AUTHREG_BANNED* pSt_Banned) +{ + return m_DBMySQL.DBModule_MySQL_BannedInsert(pSt_Banned); +} +extern "C" bool DBModule_MySQL_BannedDelete(AUTHREG_BANNED* pSt_Banned) +{ + return m_DBMySQL.DBModule_MySQL_BannedDelete(pSt_Banned); +} +extern "C" bool DBModule_MySQL_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount, int nPosStart, int nPosEnd) +{ + return m_DBMySQL.DBModule_MySQL_BannedList(pppSt_BannedUser, pInt_UserCount, pppSt_BannedAddr, pInt_AddrCount, nPosStart, nPosEnd); +} +extern "C" bool DBModule_MySQL_BannedExist(AUTHREG_BANNED* pSt_Banned) +{ + return m_DBMySQL.DBModule_MySQL_BannedExist(pSt_Banned); +} +extern "C" bool DBModule_MySQL_BannedUPDate(AUTHREG_BANNED* pSt_Banned) +{ + return m_DBMySQL.DBModule_MySQL_BannedUPDate(pSt_Banned); +} +extern "C" bool DBModule_MySQL_AnnouncementInsert(AUTHREG_ANNOUNCEMENT* pSt_Announcement) +{ + return m_DBMySQL.DBModule_MySQL_AnnouncementInsert(pSt_Announcement); +} +extern "C" bool DBModule_MySQL_AnnouncementDelete(AUTHREG_ANNOUNCEMENT* pSt_Announcement) +{ + return m_DBMySQL.DBModule_MySQL_AnnouncementDelete(pSt_Announcement); +} +extern "C" bool DBModule_MySQL_AnnouncementList(AUTHREG_ANNOUNCEMENT*** ppppSt_Announcement, int* pInt_ListCount) +{ + return m_DBMySQL.DBModule_MySQL_AnnouncementList(ppppSt_Announcement, pInt_ListCount); } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Database/pch.h b/XEngine_Source/AuthorizeModule_Database/pch.h index 844a2f2de92941a07527b697566afe1bc802fa26..a0d97e165f44bf18a15e2aefe02cdf791f0eee07 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.h +++ b/XEngine_Source/AuthorizeModule_Database/pch.h @@ -25,9 +25,9 @@ using namespace std; #include #include #include -#include -#include #include "../XAuth_Protocol.h" +#include "../AuthorizeModule_CDKey/CDKey_Define.h" +#include "../AuthorizeModule_CDKey/CDKey_Error.h" #include "Database_Define.h" #include "Database_Error.h" /******************************************************************** @@ -53,5 +53,17 @@ typedef std::string xstring; #ifdef _WINDOWS #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_DataBase.lib") -#pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Authorize.lib") +#ifdef _WIN64 +#ifdef _DEBUG +#pragma comment(lib,"../x64/Debug/AuthorizeModule_CDKey") +#else +#pragma comment(lib,"../x64/Release/AuthorizeModule_CDKey") +#endif +#else +#ifdef _DEBUG +#pragma comment(lib,"../Debug/AuthorizeModule_CDKey") +#else +#pragma comment(lib,"../Release/AuthorizeModule_CDKey") +#endif +#endif #endif \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.vcxproj b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.vcxproj index 27210de12e4cec0763fee9ba68e81eacaa6a270a..68f5762df875b03e9197b682355ee16b4c921973 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.vcxproj +++ b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.vcxproj @@ -72,7 +72,7 @@ true - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;..\AuthorizeModule_Protocol;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h index 56467cb6e9c34cf51ef1f903137d4eaa8082ac2a..c5cb2019e734f9550f52cfb7075e2ea706fb4b02 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h @@ -637,7 +637,7 @@ extern "C" bool Protocol_Parse_HttpParseSerial(LPCXSTR lpszMsgBuffer, int nMsgLe 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE * penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, XCHAR * ptszHasTime); +extern "C" bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE * penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, XCHAR * ptszHasTime); /******************************************************************** 函数名称:Protocol_Parse_HttpParseOnline 函数功能:解析在线列表 diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp index ad0d66c0d0991cf907783c36d066949ea1b3e9e4..fbd6098a0c5de599694cad11529e7d1e27f16efb 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp @@ -660,6 +660,7 @@ bool CProtocol_Packet::Protocol_Packet_HttpSwitch(XCHAR* ptszMsgBuffer, int* pIn st_JsonRoot["bSwitchDCode"] = pSt_FunSwitch->bSwitchDCode; st_JsonRoot["bSwitchMulti"] = pSt_FunSwitch->bSwitchMulti; st_JsonRoot["bSwitchTry"] = pSt_FunSwitch->bSwitchTry; + st_JsonRoot["bSwitchBanned"] = pSt_FunSwitch->bSwitchBanned; *pInt_MsgLen = st_JsonRoot.toStyledString().length(); memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen); @@ -853,7 +854,7 @@ bool CProtocol_Packet::Protocol_Packet_HttpTryList(XCHAR* ptszMsgBuffer, int* pI st_JsonObject["nID"] = (Json::Value::Int64)(*pppSt_TryList)[i]->nID; st_JsonObject["nVTime"] = (*pppSt_TryList)[i]->nVTime; st_JsonObject["enVMode"] = (*pppSt_TryList)[i]->enVMode; - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY == (*pppSt_TryList)[i]->enVMode) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == (*pppSt_TryList)[i]->enVMode) { XENGINE_LIBTIMER st_TimeStart = {}; XENGINE_LIBTIMER st_TimeEnd = {}; diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp index 8adab2298426c4f476c3f56ae8201175d8e91eb2..cf6ba5c630c5fa0cba0e33d1c165da7f00cf07b0 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp @@ -382,7 +382,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseTry(LPCXSTR lpszMsgBuffer, int nMs if (!st_JsonProtocol["enVMode"].isNull()) { - pSt_NETTry->enVMode = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_JsonProtocol["enVMode"].asInt(); + pSt_NETTry->enVMode = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_JsonProtocol["enVMode"].asInt(); } if (!st_JsonProtocol["nID"].isNull()) { @@ -455,7 +455,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseTable(LPCXSTR lpszMsgBuffer, int n if (!st_UserTable["enSerialType"].isNull()) { - pSt_UserTable->enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_UserTable["enSerialType"].asInt(); + pSt_UserTable->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_UserTable["enSerialType"].asInt(); } if (!st_UserTable["enDeviceType"].isNull()) { @@ -568,7 +568,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseSerial(LPCXSTR lpszMsgBuffer, int } if (!st_JsonArray[i]["enSerialType"].isNull()) { - (*pppSt_SerialTable)[i]->enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_JsonArray[i]["enSerialType"].asInt(); + (*pppSt_SerialTable)[i]->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_JsonArray[i]["enSerialType"].asInt(); } if (!st_JsonArray[i]["tszCreateTime"].isNull()) { @@ -627,7 +627,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseSerial(LPCXSTR lpszMsgBuffer, int 意思:是否成功 备注: *********************************************************************/ -bool CProtocol_Parse::Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE* penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, XCHAR* ptszHasTime) +bool CProtocol_Parse::Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE* penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, XCHAR* ptszHasTime) { Protocol_IsErrorOccur = false; @@ -650,7 +650,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int } Json::Value st_JsonObject = st_JsonRoot["st_SerialInfo"]; - *penSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_JsonObject["enSerialType"].asInt(); + *penSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_JsonObject["enSerialType"].asInt(); *pInt_NumberCount = st_JsonObject["nNumberCount"].asInt(); *pInt_SerialCount = st_JsonObject["nSerialCount"].asInt(); _tcsxcpy(ptszHasTime, st_JsonObject["tszHasTime"].asCString()); @@ -752,7 +752,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseTime(LPCXSTR lpszMsgBuffer, int nM if (!st_JsonProtocol["enSerialType"].isNull()) { - pSt_ProtocolTime->enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_JsonProtocol["enSerialType"].asInt(); + pSt_ProtocolTime->enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_JsonProtocol["enSerialType"].asInt(); } if (!st_JsonProtocol["enDeviceType"].isNull()) { @@ -840,6 +840,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseSwitch(LPCXSTR lpszMsgBuffer, int pSt_FunSwitch->bSwitchDCode = st_JsonObject["bSwitchDCode"].asBool(); pSt_FunSwitch->bSwitchMulti = st_JsonObject["bSwitchMulti"].asBool(); pSt_FunSwitch->bSwitchTry = st_JsonObject["bSwitchTry"].asBool(); + pSt_FunSwitch->bSwitchBanned = st_JsonObject["bSwitchBanned"].asBool(); return true; } @@ -1103,26 +1104,6 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseCDKey(LPCXSTR lpszMsgBuffer, int n } //注册信息 Json::Value st_JsonREGInfo = st_JsonRoot["st_AuthRegInfo"]; - if (!st_JsonREGInfo["nHasTime"].isNull()) - { - pSt_Authorize->st_AuthRegInfo.nHasTime = (ENUM_HELPCOMPONENTS_AUTHORIZE_REG_TYPE)st_JsonREGInfo["nHasTime"].asInt(); - } - if (!st_JsonREGInfo["enSerialType"].isNull()) - { - pSt_Authorize->st_AuthRegInfo.enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_JsonREGInfo["enSerialType"].asInt(); - } - if (!st_JsonREGInfo["enRegType"].isNull()) - { - pSt_Authorize->st_AuthRegInfo.enRegType = (ENUM_HELPCOMPONENTS_AUTHORIZE_REG_TYPE)st_JsonREGInfo["enRegType"].asInt(); - } - if (!st_JsonREGInfo["enHWType"].isNull()) - { - pSt_Authorize->st_AuthRegInfo.enHWType = (ENUM_HELPCOMPONENTS_AUTHORIZE_HW_TYPE)st_JsonREGInfo["enHWType"].asInt(); - } - if (!st_JsonREGInfo["enVModeType"].isNull()) - { - pSt_Authorize->st_AuthRegInfo.enVModeType = (ENUM_HELPCOMPONENTS_AUTHORIZE_VERMODE_TYPE)st_JsonREGInfo["enVModeType"].asInt(); - } if (!st_JsonREGInfo["tszHardware"].isNull()) { _tcsxcpy(pSt_Authorize->st_AuthRegInfo.tszHardware, st_JsonREGInfo["tszHardware"].asCString()); @@ -1147,6 +1128,55 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseCDKey(LPCXSTR lpszMsgBuffer, int n { _tcsxcpy(pSt_Authorize->st_AuthRegInfo.tszExpiryTime, st_JsonREGInfo["tszExpiryTime"].asCString()); } + if (!st_JsonREGInfo["nHasTime"].isNull()) + { + pSt_Authorize->st_AuthRegInfo.nHasTime = st_JsonREGInfo["nHasTime"].asInt(); + } + if (!st_JsonREGInfo["enSerialType"].isNull()) + { + pSt_Authorize->st_AuthRegInfo.enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_JsonREGInfo["enSerialType"].asInt(); + } + if (!st_JsonREGInfo["enRegType"].isNull()) + { + pSt_Authorize->st_AuthRegInfo.enRegType = (ENUM_AUTHORIZE_MODULE_CDKEY_TYPE)st_JsonREGInfo["enRegType"].asInt(); + } + if (!st_JsonREGInfo["enHWType"].isNull()) + { + pSt_Authorize->st_AuthRegInfo.enHWType = (ENUM_AUTHORIZE_MODULE_HW_TYPE)st_JsonREGInfo["enHWType"].asInt(); + } + if (!st_JsonREGInfo["enVModeType"].isNull()) + { + pSt_Authorize->st_AuthRegInfo.enVModeType = (ENUM_AUTHORIZE_MODULE_VERMODE_TYPE)st_JsonREGInfo["enVModeType"].asInt(); + } + //临时序列号 + Json::Value st_JsonSerialInfo = st_JsonRoot["st_AuthSerial"]; + if (!st_JsonSerialInfo.isNull()) + { + if (!st_JsonSerialInfo["tszTimeSerial"].isNull()) + { + _tcsxcpy(pSt_Authorize->st_AuthSerial.st_TimeLimit.tszTimeSerial, st_JsonSerialInfo["tszTimeSerial"].asCString()); + } + if (!st_JsonSerialInfo["nTimeCount"].isNull()) + { + pSt_Authorize->st_AuthSerial.st_TimeLimit.nTimeCount = st_JsonSerialInfo["nTimeCount"].asInt(); + } + if (!st_JsonSerialInfo["tszTimeSerial"].isNull()) + { + _tcsxcpy(pSt_Authorize->st_AuthSerial.st_DataLimit.tszDataSerial, st_JsonSerialInfo["tszTimeSerial"].asCString()); + } + if (!st_JsonSerialInfo["tszDataTime"].isNull()) + { + _tcsxcpy(pSt_Authorize->st_AuthSerial.st_DataLimit.tszDataTime, st_JsonSerialInfo["tszDataTime"].asCString()); + } + if (!st_JsonSerialInfo["bTimeAdd"].isNull()) + { + pSt_Authorize->st_AuthSerial.st_DataLimit.bTimeAdd = st_JsonSerialInfo["bTimeAdd"].asBool(); + } + if (!st_JsonSerialInfo["tszUNLimitSerial"].isNull()) + { + _tcsxcpy(pSt_Authorize->st_AuthSerial.st_UNLimit.tszUNLimitSerial, st_JsonSerialInfo["tszUNLimitSerial"].asCString()); + } + } //CDKEY用户信息 Json::Value st_JsonUserInfo = st_JsonRoot["st_AuthUserInfo"]; if (!st_JsonUserInfo["tszUserName"].isNull()) diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h index d82247bfbd951a75f721b4ff7505b508176b4eca..e8a69b00db65b9f41c3e9567288f1699de1da3cc 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h @@ -26,7 +26,7 @@ public: bool Protocol_Parse_HttpParseTry(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_TEMPVER* pSt_NETTry); bool Protocol_Parse_HttpParseTable(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_USERTABLE* pSt_UserTable); bool Protocol_Parse_HttpParseSerial(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount); - bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE* penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, XCHAR* ptszHasTime); + bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE* penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, XCHAR* ptszHasTime); bool Protocol_Parse_HttpParseOnline(LPCXSTR lpszMsgBuffer, int nMsgLen, bool* pbOnline); bool Protocol_Parse_HttpParseTime(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_PROTOCOL_TIME* pSt_ProtocolTime); bool Protocol_Parse_HttpParseSwitch(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp index bf0be90344774ef6209f09493849503d4eeb3590..56d6870fe7ea4829cbc6af1fb82a2df8bff77f47 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp @@ -118,7 +118,7 @@ extern "C" bool Protocol_Parse_HttpParseSerial(LPCXSTR lpszMsgBuffer, int nMsgLe { return m_ProtocolParse.Protocol_Parse_HttpParseSerial(lpszMsgBuffer, nMsgLen, pppSt_SerialTable, pInt_ListCount); } -extern "C" bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE * penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, XCHAR * ptszHasTime) +extern "C" bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE * penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, XCHAR * ptszHasTime) { return m_ProtocolParse.Protocol_Parse_HttpParseSerial2(lpszMsgBuffer, nMsgLen, penSerialType, pInt_NumberCount, pInt_SerialCount, ptszHasTime); } diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.h b/XEngine_Source/AuthorizeModule_Protocol/pch.h index ca7ef3a895513adbc5fb5bb4d9ab2340f26d5503..8493f70dd863f7aed028ac24136ec3688fef3d68 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.h +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.h @@ -24,9 +24,9 @@ using namespace std; #include #include #include -#include -#include #include "../XAuth_Protocol.h" +#include "../AuthorizeModule_CDKey/CDKey_Define.h" +#include "../AuthorizeModule_CDKey/CDKey_Error.h" #include "../AuthorizeModule_Configure/Config_Define.h" #include "../AuthorizeModule_Session/Session_Define.h" #include "../AuthorizeModule_Session/Session_Error.h" diff --git a/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp b/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp index 4f60f8b5dd6d3e9a62a6edd32a02b5125caaaf9e..547de7acb3a61614caf0558ffb9ee02ee98fc78a 100644 --- a/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp +++ b/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp @@ -406,7 +406,7 @@ XHTHREAD CSession_Authorize::Session_Authorize_ActiveThread(XPVOID lParam) //登陆成功的。我们要处理他过期 switch (stl_ListIterator->st_UserTable.enSerialType) { - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND: { bMultiTime = true; //秒钟处理 @@ -422,7 +422,7 @@ XHTHREAD CSession_Authorize::Session_Authorize_ActiveThread(XPVOID lParam) _tcsxcpy(st_ProtocolTimer.tszUserName, stl_ListIterator->st_UserTable.st_UserInfo.tszUserName); break; } - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME: { //次数处理 stl_ListIterator->nOnlineTime = nOnlineSpan; @@ -438,7 +438,7 @@ XHTHREAD CSession_Authorize::Session_Authorize_ActiveThread(XPVOID lParam) _tcsxcpy(st_ProtocolTimer.tszUserName, stl_ListIterator->st_UserTable.st_UserInfo.tszUserName); break; } - case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY: + case ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY: { stl_ListIterator->nOnlineTime = nOnlineSpan; _xstprintf(stl_ListIterator->tszLeftTime, _X("%lld"), stl_ListIterator->nLeftTime); diff --git a/XEngine_Source/AuthorizeModule_Session/Session_Define.h b/XEngine_Source/AuthorizeModule_Session/Session_Define.h index 23a2c3344b545c071d8f09dda9faa17e10012a88..60f2d741f3dbb9a3fc667a9aa89547aa2aa3cdc1 100644 --- a/XEngine_Source/AuthorizeModule_Session/Session_Define.h +++ b/XEngine_Source/AuthorizeModule_Session/Session_Define.h @@ -24,7 +24,7 @@ typedef struct // 导出的回调函数 ////////////////////////////////////////////////////////////////////////// //用户在线时间事件回调处理函数,用户名 在线时间 剩余时间(分,天) 注册的卡类型 自定义参数 -typedef void(CALLBACK* CALLBACK_XENGIEN_AUTHORIZE_SESSION_CLIENT_EVENTS)(LPCXSTR lpszUserAddr, LPCXSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCXSTR lpszLeftDate, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, XPVOID lParam); +typedef void(CALLBACK* CALLBACK_XENGIEN_AUTHORIZE_SESSION_CLIENT_EVENTS)(LPCXSTR lpszUserAddr, LPCXSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCXSTR lpszLeftDate, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, XPVOID lParam); typedef void(CALLBACK* CALLBACK_XENGIEN_AUTHORIZE_SESSION_TOKEN_EVENTS)(XNETHANDLE xhToken, XPVOID lParam); ////////////////////////////////////////////////////////////////////////// // 导出的函数 diff --git a/XEngine_Source/AuthorizeModule_Session/pch.h b/XEngine_Source/AuthorizeModule_Session/pch.h index b52a37c463934dfaf011c07b40a1cadb2319d538..cb798ff7f55ac99bb61567c065c5096e6839d22c 100644 --- a/XEngine_Source/AuthorizeModule_Session/pch.h +++ b/XEngine_Source/AuthorizeModule_Session/pch.h @@ -27,9 +27,9 @@ using namespace std; #include #include #include -#include -#include #include "../XAuth_Protocol.h" +#include "../AuthorizeModule_CDKey/CDKey_Define.h" +#include "../AuthorizeModule_CDKey/CDKey_Error.h" #include "Session_Define.h" #include "Session_Error.h" /******************************************************************** diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index d600d49e36f928c1260c802fb4281082dcb488d3..e1a076e84eea04ff3bf114b4a5738217b5de8bb3 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -6,6 +6,7 @@ FLAGS= DEPEND_JSONCPP_PATH = ./XEngine_Depend/XEngine_Module/jsoncpp DEPEND_REPORT_PATH = ./XEngine_Depend/XEngine_Module/XEngine_InfoReport +AUTH_CDKEY_PATH = ./AuthorizeModule_CDKey AUTH_SESSION_PATH = ./AuthorizeModule_Session AUTH_DATABASE_PATH = ./AuthorizeModule_Database AUTH_PROTOCOL_PATH = ./AuthorizeModule_Protocol @@ -16,7 +17,7 @@ AUTH_CLIENT_PATH = ./AuthorizeModule_Client AUTH_APP_PATH = ./XEngine_APPService/XEngine_AuthorizeService XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so \ - libAuthorizeModule_Session.so libAuthorizeModule_Database.so libAuthorizeModule_Protocol.so libAuthorizeModule_Configure.so libAuthorizeModule_Help.so libAuthorizeModule_Client.so \ + libAuthorizeModule_CDKey.so libAuthorizeModule_Session.so libAuthorizeModule_Database.so libAuthorizeModule_Protocol.so libAuthorizeModule_Configure.so libAuthorizeModule_Help.so libAuthorizeModule_Client.so \ XEngine_AuthorizeApp.exe .PHONY:MakeAll @@ -27,6 +28,8 @@ libjsoncpp.so: libXEngine_InfoReport.so: make -C $(DEPEND_REPORT_PATH) PLATFORM=$(PLATFORM) $(FLAGS) +libAuthorizeModule_CDKey.so: + make -C $(AUTH_CDKEY_PATH) PLATFORM=$(PLATFORM) $(FLAGS) libAuthorizeModule_Session.so: make -C $(AUTH_SESSION_PATH) PLATFORM=$(PLATFORM) $(FLAGS) libAuthorizeModule_Database.so: diff --git a/XEngine_Source/VSCopy_Debug.bat b/XEngine_Source/VSCopy_Debug.bat index 9fb00c2fec7e01e63e283a5939d3ce9ce3519a8a..52ce97bd2152ce3fb78588d2e5d493cd249ed0ac 100644 --- a/XEngine_Source/VSCopy_Debug.bat +++ b/XEngine_Source/VSCopy_Debug.bat @@ -8,7 +8,6 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_OPenSsl.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_DataBase.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_Packets.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_XLog.dll" "./" -copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_Authorize.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_WSProtocol.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_HttpProtocol.dll" "./" diff --git a/XEngine_Source/VSCopy_x64.bat b/XEngine_Source/VSCopy_x64.bat index 551224add301db7d45e17f8434addeb59b623bc1..adcee805678449dd730013df859338b53d8242b5 100644 --- a/XEngine_Source/VSCopy_x64.bat +++ b/XEngine_Source/VSCopy_x64.bat @@ -8,7 +8,6 @@ copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_OPenSsl.dll" "./" copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_DataBase.dll" "./" copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_Authorize.dll" "./" copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" diff --git a/XEngine_Source/VSCopy_x86.bat b/XEngine_Source/VSCopy_x86.bat index 2c9780e36239f69180a86e5514fb148fb9bdd254..62a8e25a53c31a219422e1ee9e2acfe0b91ef478 100644 --- a/XEngine_Source/VSCopy_x86.bat +++ b/XEngine_Source/VSCopy_x86.bat @@ -8,7 +8,6 @@ copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_OPenSsl.dll" "./" copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_DataBase.dll" "./" copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_Packets.dll" "./" copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_Authorize.dll" "./" copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" diff --git a/XEngine_Source/XAuth_Protocol.h b/XEngine_Source/XAuth_Protocol.h index b21025e3a2a05107c404c48d765c3688470305ce..e1a9769098d87f35d3f1bb07baaa556eaf05f5c1 100644 --- a/XEngine_Source/XAuth_Protocol.h +++ b/XEngine_Source/XAuth_Protocol.h @@ -32,8 +32,111 @@ #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPDCODE 0x2011 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_TIMEDOUT 0x2FFF //通知客户端时间到期 ////////////////////////////////////////////////////////////////////////// -// 导出的数据结构 +// 导出的枚举型 ////////////////////////////////////////////////////////////////////////// +#ifndef _MSC_BUILD +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-variable" +#endif +static LPCXSTR lpszXSerialType[5] = { "UNKNOW","SECOND","DAY","TIME","CUSTOM" }; +static LPCXSTR lpszXRegType[6] = { "UNKNOW","TEMP","TRY","OFFICIAL","UNLIMIT","EXPIRED" }; +static LPCXSTR lpszXHDType[6] = { "UNKNOW","CPU","DISK","BOARD","MAC","BIOS" }; +static LPCXSTR lpszXVerType[6] = { "UNKNOW","LOCAL","NETWORK" }; +#ifndef _MSC_BUILD +#pragma GCC diagnostic pop +#endif +typedef enum +{ + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW = 0, //无法识别的充值卡 + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND = 1, //秒钟,本地使用在read和write的时候更新 + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY = 2, //天数,本地使用天数卡,不使用不减天数. + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME = 3, //次数卡 + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM = 4 //自定义过期日期 +}ENUM_AUTHORIZE_MODULE_SERIAL_TYPE, * LPENUM_AUTHORIZE_MODULE_SERIAL_TYPE; +typedef enum +{ + ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_UNKNOW = 0, //未注册,Authorize_CDKey_GetLeftTimer将返回失败 + ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_TEMP = 1, //临时,Authorize_CDKey_GetLeftTimer一次后过期,需要Write + ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_TRY = 2, //试用 + ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_OFFICIAL = 3, //正式版 + ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_UNLIMIT = 4, //无限制版,永不过期.CDKEY不做任何验证 + ENUM_AUTHORIZE_MODULE_CDKEY_TYPE_EXPIRED = 5 //已过期的版本,Authorize_CDKey_GetLeftTimer将返回失败 +}ENUM_AUTHORIZE_MODULE_CDKEY_TYPE, * LPENUM_AUTHORIZE_MODULE_CDKEY_TYPE; +typedef enum +{ + ENUM_AUTHORIZE_MODULE_HW_TYPE_UNKNOW = 0, //未指定 + ENUM_AUTHORIZE_MODULE_HW_TYPE_CPU = 1, //CPU序列号 + ENUM_AUTHORIZE_MODULE_HW_TYPE_DISK = 2, //硬盘序列号 + ENUM_AUTHORIZE_MODULE_HW_TYPE_BOARD = 3, //主板序列号 + ENUM_AUTHORIZE_MODULE_HW_TYPE_MAC = 4, //网卡MAC地址 + ENUM_AUTHORIZE_MODULE_HW_TYPE_BIOS = 5 //BIOS序列号 +}ENUM_AUTHORIZE_MODULE_HW_TYPE, * LPENUM_AUTHORIZE_MODULE_HW_TYPE; +typedef enum +{ + ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_UNKNOW = 0, //未知 + ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_LOCAL = 0x01, //本地 + ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_NETWORK = 0x02, //网络 +}ENUM_AUTHORIZE_MODULE_VERMODE_TYPE, * LPENUM_AUTHORIZE_MODULE_VERMODE_TYPE; +////////////////////////////////////////////////////////////////////////// +// 导出的结构体 +////////////////////////////////////////////////////////////////////////// +typedef struct +{ + XCHAR tszAddr[MAX_PATH]; //服务器或者域名地址 + int nPort; //端口号码,如果>0表示CDKEY验证失败后改为网络验证 + //版本信息 + struct + { + XCHAR tszAppName[128]; //应用程序名称 + XCHAR tszAppVer[128]; //应用程序版本号 + __int64x nExecTime; //程序已经执行次数,调用Authorize_CDKey_GetLeftTimer会更新 + bool bInit; //是否初始化,由用户控制 + }st_AuthAppInfo; + //CDKEY信息 + struct + { + XCHAR tszHardware[1024]; //硬件码 + XCHAR tszCreateTime[64]; //CDKEY创建日期,年/月/日-小时:分钟:秒 + XCHAR tszRegisterTime[64]; //注册时间,年/月/日-小时:分钟:秒 + XCHAR tszLeftTime[64]; //总的剩余时间,过期日期,根据nLeftType决定此值的意义 + XCHAR tszStartTime[64]; //当前启动时间,由系统读取CDKEY的时候自动更新,天数和分钟有效 + XCHAR tszExpiryTime[64]; //过期的时间,需要调用Authorize_CDKey_GetLeftTimer并且Write才生效 + __int64x nHasTime; //当前还拥有时间,根据nLeftType决定此值的意义,调用Authorize_CDKey_GetLeftTimer会更新 + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType; //过期类型,参考:ENUM_AUTHORIZE_MODULE_SERIAL_TYPE + ENUM_AUTHORIZE_MODULE_CDKEY_TYPE enRegType; //注册类型,参考:ENUM_AUTHORIZE_MODULE_CDKEY_TYPE + ENUM_AUTHORIZE_MODULE_HW_TYPE enHWType; //硬件类型,参考:ENUM_AUTHORIZE_MODULE_HW_TYPE + ENUM_AUTHORIZE_MODULE_VERMODE_TYPE enVModeType; //验证方式,参考:ENUM_AUTHORIZE_MODULE_VERMODE_TYPE + }st_AuthRegInfo; + //临时序列号 + struct + { + //次数限制 + struct + { + XCHAR tszTimeSerial[128]; + int nTimeCount; //使用次数 + }st_TimeLimit; + //时间限制 + struct + { + XCHAR tszDataTime[128]; //过期时间 + XCHAR tszDataSerial[128]; //序列号 + bool bTimeAdd; //真,过期时间是设置的日期-创建日期.假过期日期就是设定的日期 + }st_DataLimit; + //无限制 + struct + { + XCHAR tszUNLimitSerial[128]; //无限制序列号 + }st_UNLimit; + }st_AuthSerial; + //注册的用户信息,可以不填 + struct + { + XCHAR tszUserName[64]; //注册的用户 + XCHAR tszUserContact[64]; //联系方式,电子邮件或者手机等 + XCHAR tszCustom[1024]; //自定义数据 + }st_AuthUserInfo; +}XENGINE_AUTHORIZE_LOCAL, * LPXENGINE_AUTHORIZE_LOCAL; //充值协议 typedef struct { @@ -49,7 +152,7 @@ typedef struct __int64x nTimeLeft; //剩余时间 __int64x nTimeONLine; //在线时间 int nNetType; //连接类型 - ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType; + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType; ENUM_PROTOCOLDEVICE_TYPE enDeviceType; }AUTHREG_PROTOCOL_TIME, * LPAUTHREG_PROTOCOL_TIME; //用户表 @@ -58,7 +161,7 @@ typedef struct tag_AuthReg_UserTable XENGINE_PROTOCOL_USERINFO st_UserInfo; XCHAR tszLeftTime[64]; //剩余日期 XCHAR tszHardCode[32]; //硬件码 - ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType; //充值卡类型 + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType; //充值卡类型 ENUM_PROTOCOLDEVICE_TYPE enDeviceType; //设备类型 }AUTHREG_USERTABLE, * LPAUTHREG_USERTABLE; //注册序列号表 @@ -67,7 +170,7 @@ typedef struct tag_AuthReg_SerialTable XCHAR tszUserName[XENGINE_AUTHREG_SERVICE_SQL_MAX_USERNAME]; //使用者是谁 XCHAR tszSerialNumber[128]; //序列号 XCHAR tszMaxTime[64]; //使用时间 - ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType; //充值卡类型 + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType; //充值卡类型 int bIsUsed; //是否已经使用 XCHAR tszCreateTime[64]; //创建时间 }AUTHREG_SERIALTABLE, * LPAUTHREG_SERIALTABLE; @@ -79,7 +182,7 @@ typedef struct __int64x nID; //ID int nVTime; //试用时间 int nLTime; //剩余时间 - ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enVMode; //验证方式 + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enVMode; //验证方式 }AUTHREG_TEMPVER; //禁止列表 typedef struct diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index 9ef5e65b323f81aca68ac0b64ed3ac519519c45b..56a1eb69e83e84a9676f5aab05861d3e9656a488 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.2.32519.379 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_File", "XEngine_File", "{D3A33095-8584-4EFB-9411-EBC38407E7B9}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_HDRFile", "XEngine_HDRFile", "{D3A33095-8584-4EFB-9411-EBC38407E7B9}" ProjectSection(SolutionItems) = preProject XAuth_BuildSwitch.h = XAuth_BuildSwitch.h XAuth_Protocol.h = XAuth_Protocol.h @@ -24,9 +24,13 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_Session", "AuthorizeModule_Session\AuthorizeModule_Session.vcxproj", "{CB9138DF-789D-459F-AD43-4095B22A487F}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_Database", "AuthorizeModule_Database\AuthorizeModule_Database.vcxproj", "{5FA1874A-32F4-4176-9C23-4E22BE183660}" + ProjectSection(ProjectDependencies) = postProject + {02A75BD0-416E-4AEF-BF34-BD85BD86384F} = {02A75BD0-416E-4AEF-BF34-BD85BD86384F} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_AuthorizeService", "XEngine_APPService\XEngine_AuthorizeService\XEngine_AuthorizeService.vcxproj", "{A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}" ProjectSection(ProjectDependencies) = postProject + {02A75BD0-416E-4AEF-BF34-BD85BD86384F} = {02A75BD0-416E-4AEF-BF34-BD85BD86384F} {1391B739-713B-4A3A-9233-FEAB92E0566C} = {1391B739-713B-4A3A-9233-FEAB92E0566C} {185975A2-EB43-45DF-8108-03656A2BFE33} = {185975A2-EB43-45DF-8108-03656A2BFE33} {5FA1874A-32F4-4176-9C23-4E22BE183660} = {5FA1874A-32F4-4176-9C23-4E22BE183660} @@ -59,6 +63,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngi {940A00A6-A944-46C1-B34F-1361AFE240E0} = {940A00A6-A944-46C1-B34F-1361AFE240E0} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_CDKey", "AuthorizeModule_CDKey\AuthorizeModule_CDKey.vcxproj", "{02A75BD0-416E-4AEF-BF34-BD85BD86384F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -147,6 +153,14 @@ Global {185975A2-EB43-45DF-8108-03656A2BFE33}.Release|x64.Build.0 = Release|x64 {185975A2-EB43-45DF-8108-03656A2BFE33}.Release|x86.ActiveCfg = Release|Win32 {185975A2-EB43-45DF-8108-03656A2BFE33}.Release|x86.Build.0 = Release|Win32 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x64.ActiveCfg = Debug|x64 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x64.Build.0 = Debug|x64 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x86.ActiveCfg = Debug|Win32 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x86.Build.0 = Debug|Win32 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|x64.ActiveCfg = Release|x64 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|x64.Build.0 = Release|x64 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|x86.ActiveCfg = Release|Win32 + {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5d11ef21af18b964059920cab5593b7467c7a191 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.cpp @@ -0,0 +1,403 @@ +// Dialog_CDKey.cpp: 实现文件 +// + +#include "pch.h" +#include "../XEngine_AuthorizeApp.h" +#include "afxdialogex.h" +#include "Dialog_CDKey.h" + + +// CDialog_CDKey 对话框 + +IMPLEMENT_DYNAMIC(CDialog_CDKey, CDialogEx) + +CDialog_CDKey::CDialog_CDKey(CWnd* pParent /*=nullptr*/) + : CDialogEx(IDD_DIALOG_CDKEY, pParent) +{ + +} + +CDialog_CDKey::~CDialog_CDKey() +{ +} + +void CDialog_CDKey::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_EDIT1, m_EditPort); + DDX_Control(pDX, IDC_DATETIMEPICKER1, m_DateTimeCreate); + DDX_Control(pDX, IDC_DATETIMEPICKER2, m_DateTimeRegister); + DDX_Control(pDX, IDC_DATETIMEPICKER3, m_DateTimeStart); + DDX_Control(pDX, IDC_EDIT2, m_EditSoftName); + DDX_Control(pDX, IDC_EDIT3, m_EditSoftVer); + DDX_Control(pDX, IDC_EDIT4, m_EditSoftTime); + DDX_Control(pDX, IDC_CHECK1, m_EditSoftInit); + DDX_Control(pDX, IDC_EDIT15, m_EditRegHardCode); + DDX_Control(pDX, IDC_EDIT18, m_EditRegLeftTime); + DDX_Control(pDX, IDC_EDIT19, m_EditRegHaveTime); + DDX_Control(pDX, IDC_COMBO3, m_ComboRegSerial); + DDX_Control(pDX, IDC_COMBO4, m_ComboRegType); + DDX_Control(pDX, IDC_COMBO5, m_ComboRegHard); + DDX_Control(pDX, IDC_COMBO6, m_ComboRegVer); + DDX_Control(pDX, IDC_EDIT17, m_EditSerialTimeNumber); + DDX_Control(pDX, IDC_EDIT16, m_EditSerialTimeCount); + DDX_Control(pDX, IDC_EDIT22, m_EditSerialDataNumber); + DDX_Control(pDX, IDC_DATETIMEPICKER4, m_DataTimeSerial); + DDX_Control(pDX, IDC_EDIT21, m_EditSerialUnlimitNumber); + DDX_Control(pDX, IDC_EDIT23, m_EditUserInfo); + DDX_Control(pDX, IDC_EDIT24, m_EditUserContact); + DDX_Control(pDX, IDC_EDIT25, m_EditUserCustom); + DDX_Control(pDX, IDC_DATETIMEPICKER5, m_DataTimeRegExpiry); + DDX_Control(pDX, IDC_EDIT26, m_EditKeyPass); + DDX_Control(pDX, IDC_CHECK3, m_CheckSerialDataAdd); + DDX_Control(pDX, IDC_EDIT11, m_EditIPAddr); +} + + +BEGIN_MESSAGE_MAP(CDialog_CDKey, CDialogEx) + ON_BN_CLICKED(IDC_BUTTON1, &CDialog_CDKey::OnBnClickedButton1) + ON_BN_CLICKED(IDC_BUTTON9, &CDialog_CDKey::OnBnClickedButton9) + ON_BN_CLICKED(IDC_BUTTON10, &CDialog_CDKey::OnBnClickedButton10) + ON_BN_CLICKED(IDC_BUTTON11, &CDialog_CDKey::OnBnClickedButton11) +END_MESSAGE_MAP() + + +// CDialog_CDKey 消息处理程序 + + +BOOL CDialog_CDKey::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // TODO: 在此添加额外的初始化 + m_DateTimeCreate.SetFormat(_T("yyyy-MM-dd HH:mm:ss")); + m_DateTimeRegister.SetFormat(_T("yyyy-MM-dd HH:mm:ss")); + m_DateTimeStart.SetFormat(_T("yyyy-MM-dd HH:mm:ss")); + m_DataTimeSerial.SetFormat(_T("yyyy-MM-dd HH:mm:ss")); + m_DataTimeRegExpiry.SetFormat(_T("yyyy-MM-dd HH:mm:ss")); + + for (int i = 0; i < 5; i++) + { + m_ComboRegSerial.InsertString(i, lpszXSerialType[i]); + } + for (int i = 0; i < 6; i++) + { + m_ComboRegType.InsertString(i, lpszXRegType[i]); + } + for (int i = 0; i < 6; i++) + { + m_ComboRegHard.InsertString(i, lpszXHDType[i]); + } + for (int i = 0; i < 3; i++) + { + m_ComboRegVer.InsertString(i, lpszXVerType[i]); + } + m_ComboRegSerial.SetCurSel(0); + m_ComboRegType.SetCurSel(0); + m_ComboRegHard.SetCurSel(0); + m_ComboRegVer.SetCurSel(0); + + return TRUE; // return TRUE unless you set the focus to a control + // 异常: OCX 属性页应返回 FALSE +} + +bool CDialog_CDKey::Dialog_CDKey_Init() +{ + m_ComboRegSerial.SetCurSel(3); + m_ComboRegType.SetCurSel(2); + m_ComboRegHard.SetCurSel(4); + m_ComboRegVer.SetCurSel(1); + + m_EditIPAddr.SetWindowText(_T("http://app.xyry.org")); + m_EditPort.SetWindowText(_T("5302")); + + m_EditSoftName.SetWindowText(_T("XEngine_AuthorzeApp")); + m_EditSoftVer.SetWindowText(_T("V1.0.0.1001")); + m_EditSoftTime.SetWindowText(_T("0")); + + int nSerialCount = 3; + XCHAR** pptszSerialList; + Authorize_Serial_Create(&pptszSerialList, _T("XAUTH"), nSerialCount, 9); + m_EditSerialTimeNumber.SetWindowText(pptszSerialList[0]); + m_EditSerialDataNumber.SetWindowText(pptszSerialList[1]); + m_EditSerialUnlimitNumber.SetWindowText(pptszSerialList[2]); + BaseLib_OperatorMemory_Free((XPPPMEM)&pptszSerialList, nSerialCount); + m_EditSerialTimeCount.SetWindowText(_T("9999")); + + XCHAR tszTimeStr[128] = {}; + XENGINE_LIBTIMER st_LibTime = {}; + BaseLib_OperatorTime_GetSysTime(&st_LibTime); + + st_LibTime.wYear += 1; //一年后过期 + BaseLib_OperatorTime_TimeToStr(tszTimeStr, NULL, true, &st_LibTime); + + COleDateTime m_OleDTime; + // 尝试解析字符串为日期和时间 + if (m_OleDTime.ParseDateTime(tszTimeStr)) + { + m_DataTimeSerial.SetTime(m_OleDTime); + } + + m_EditUserInfo.SetWindowText(_T("XEngine")); + m_EditUserContact.SetWindowText(_T("www.xyry.org")); + return true; +} +bool CDialog_CDKey::Dialog_CDKey_Read(XENGINE_AUTHORIZE_LOCAL* pSt_AuthorizeCDKey) +{ + //网络信息 + CString m_StrIPPort; + m_EditIPAddr.GetWindowText(pSt_AuthorizeCDKey->tszAddr, sizeof(pSt_AuthorizeCDKey->tszAddr)); + m_EditPort.GetWindowText(m_StrIPPort); + pSt_AuthorizeCDKey->nPort = _ttoi(m_StrIPPort.GetString()); + //程序信息 + CString m_StrSoftTime; + m_EditSoftName.GetWindowText(pSt_AuthorizeCDKey->st_AuthAppInfo.tszAppName, sizeof(pSt_AuthorizeCDKey->st_AuthAppInfo.tszAppName)); + m_EditSoftVer.GetWindowText(pSt_AuthorizeCDKey->st_AuthAppInfo.tszAppVer, sizeof(pSt_AuthorizeCDKey->st_AuthAppInfo.tszAppVer)); + m_EditSoftTime.GetWindowText(m_StrSoftTime); + if (BST_CHECKED == m_EditSoftInit.GetCheck()) + { + pSt_AuthorizeCDKey->st_AuthAppInfo.bInit = true; + } + //注册信息 + CString m_StrRegHaveTime; + m_EditRegHardCode.GetWindowText(pSt_AuthorizeCDKey->st_AuthRegInfo.tszHardware, sizeof(pSt_AuthorizeCDKey->st_AuthRegInfo.tszHardware)); + m_EditRegLeftTime.GetWindowText(pSt_AuthorizeCDKey->st_AuthRegInfo.tszLeftTime, sizeof(pSt_AuthorizeCDKey->st_AuthRegInfo.tszLeftTime)); + m_EditRegHaveTime.GetWindowText(m_StrRegHaveTime); + pSt_AuthorizeCDKey->st_AuthRegInfo.nHasTime = _ttoi64(m_StrRegHaveTime.GetBuffer()); + m_DateTimeCreate.GetWindowText(pSt_AuthorizeCDKey->st_AuthRegInfo.tszCreateTime, sizeof(pSt_AuthorizeCDKey->st_AuthRegInfo.tszCreateTime)); + //m_DateTimeRegister.GetWindowText(pSt_AuthorizeCDKey->st_AuthRegInfo.tszRegisterTime, sizeof(pSt_AuthorizeCDKey->st_AuthRegInfo.tszRegisterTime)); + m_DateTimeStart.GetWindowText(pSt_AuthorizeCDKey->st_AuthRegInfo.tszStartTime, sizeof(pSt_AuthorizeCDKey->st_AuthRegInfo.tszStartTime)); + pSt_AuthorizeCDKey->st_AuthRegInfo.enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)m_ComboRegSerial.GetCurSel(); + pSt_AuthorizeCDKey->st_AuthRegInfo.enRegType = (ENUM_AUTHORIZE_MODULE_CDKEY_TYPE)m_ComboRegType.GetCurSel(); + pSt_AuthorizeCDKey->st_AuthRegInfo.enHWType = (ENUM_AUTHORIZE_MODULE_HW_TYPE)m_ComboRegHard.GetCurSel(); + pSt_AuthorizeCDKey->st_AuthRegInfo.enVModeType = (ENUM_AUTHORIZE_MODULE_VERMODE_TYPE)m_ComboRegVer.GetCurSel(); + //序列信息 + CString m_StrSerialCount; + CString m_StrSerialUsed; + m_EditSerialTimeCount.GetWindowText(m_StrSerialCount); + m_EditSerialTimeNumber.GetWindowText(pSt_AuthorizeCDKey->st_AuthSerial.st_TimeLimit.tszTimeSerial, sizeof(pSt_AuthorizeCDKey->st_AuthSerial.st_TimeLimit.tszTimeSerial)); + pSt_AuthorizeCDKey->st_AuthSerial.st_TimeLimit.nTimeCount = _ttoi(m_StrSerialCount.GetBuffer()); + + m_EditSerialDataNumber.GetWindowText(pSt_AuthorizeCDKey->st_AuthSerial.st_DataLimit.tszDataSerial, sizeof(pSt_AuthorizeCDKey->st_AuthSerial.st_DataLimit.tszDataSerial)); + m_DataTimeSerial.GetWindowText(pSt_AuthorizeCDKey->st_AuthSerial.st_DataLimit.tszDataTime, sizeof(pSt_AuthorizeCDKey->st_AuthSerial.st_DataLimit.tszDataTime)); + + if (BST_CHECKED == m_CheckSerialDataAdd.GetCheck()) + { + pSt_AuthorizeCDKey->st_AuthSerial.st_DataLimit.bTimeAdd = true; + } + m_EditSerialUnlimitNumber.GetWindowText(pSt_AuthorizeCDKey->st_AuthSerial.st_UNLimit.tszUNLimitSerial, sizeof(pSt_AuthorizeCDKey->st_AuthSerial.st_UNLimit.tszUNLimitSerial)); + //用户信息 + m_EditUserInfo.GetWindowText(pSt_AuthorizeCDKey->st_AuthUserInfo.tszUserName, sizeof(pSt_AuthorizeCDKey->st_AuthUserInfo.tszUserName)); + m_EditUserContact.GetWindowText(pSt_AuthorizeCDKey->st_AuthUserInfo.tszUserContact, sizeof(pSt_AuthorizeCDKey->st_AuthUserInfo.tszUserContact)); + m_EditUserCustom.GetWindowText(pSt_AuthorizeCDKey->st_AuthUserInfo.tszCustom, sizeof(pSt_AuthorizeCDKey->st_AuthUserInfo.tszCustom)); + return true; +} +bool CDialog_CDKey::Dialog_CDKey_Write(XENGINE_AUTHORIZE_LOCAL* pSt_AuthorizeCDKey) +{ + CString m_StrFormat; + //网络信息 + m_EditIPAddr.SetWindowText(pSt_AuthorizeCDKey->tszAddr); + m_StrFormat.Format(_T("%d"), pSt_AuthorizeCDKey->nPort); + m_EditPort.SetWindowText(m_StrFormat); + //软件信息 + m_EditSoftName.SetWindowText(pSt_AuthorizeCDKey->st_AuthAppInfo.tszAppName); + m_EditSoftVer.SetWindowText(pSt_AuthorizeCDKey->st_AuthAppInfo.tszAppVer); + m_StrFormat.Format(_T("%lld"), pSt_AuthorizeCDKey->st_AuthAppInfo.nExecTime); + m_EditSoftTime.SetWindowText(m_StrFormat); + if (pSt_AuthorizeCDKey->st_AuthAppInfo.bInit) + { + m_EditSoftInit.SetCheck(BST_CHECKED); + } + //注册信息 + m_EditRegHardCode.SetWindowText(pSt_AuthorizeCDKey->st_AuthRegInfo.tszHardware); + m_EditRegLeftTime.SetWindowText(pSt_AuthorizeCDKey->st_AuthRegInfo.tszLeftTime); + m_StrFormat.Format(_T("%lld"), pSt_AuthorizeCDKey->st_AuthRegInfo.nHasTime); + m_EditRegHaveTime.SetWindowText(m_StrFormat); + COleDateTime m_OleDTime; + // 尝试解析字符串为日期和时间 + if (m_OleDTime.ParseDateTime(pSt_AuthorizeCDKey->st_AuthRegInfo.tszCreateTime)) + { + m_DateTimeCreate.SetTime(m_OleDTime); + } + if (m_OleDTime.ParseDateTime(pSt_AuthorizeCDKey->st_AuthRegInfo.tszRegisterTime)) + { + m_DateTimeRegister.SetTime(m_OleDTime); + } + if (m_OleDTime.ParseDateTime(pSt_AuthorizeCDKey->st_AuthRegInfo.tszStartTime)) + { + m_DateTimeStart.SetTime(m_OleDTime); + } + if (m_OleDTime.ParseDateTime(pSt_AuthorizeCDKey->st_AuthRegInfo.tszExpiryTime)) + { + m_DataTimeSerial.SetTime(m_OleDTime); + } + + m_ComboRegSerial.SetCurSel(pSt_AuthorizeCDKey->st_AuthRegInfo.enSerialType); + m_ComboRegType.SetCurSel(pSt_AuthorizeCDKey->st_AuthRegInfo.enRegType); + m_ComboRegHard.SetCurSel(pSt_AuthorizeCDKey->st_AuthRegInfo.enHWType); + m_ComboRegVer.SetCurSel(pSt_AuthorizeCDKey->st_AuthRegInfo.enVModeType); + //序列信息 + m_StrFormat.Format(_T("%d"), pSt_AuthorizeCDKey->st_AuthSerial.st_TimeLimit.nTimeCount); + m_EditSerialTimeCount.SetWindowText(m_StrFormat); + m_EditSerialTimeNumber.SetWindowText(pSt_AuthorizeCDKey->st_AuthSerial.st_TimeLimit.tszTimeSerial); + + if (pSt_AuthorizeCDKey->st_AuthSerial.st_DataLimit.bTimeAdd) + { + m_CheckSerialDataAdd.SetCheck(BST_CHECKED); + } + m_EditSerialDataNumber.SetWindowText(pSt_AuthorizeCDKey->st_AuthSerial.st_DataLimit.tszDataSerial); + // 尝试解析字符串为日期和时间 + if (m_OleDTime.ParseDateTime(pSt_AuthorizeCDKey->st_AuthSerial.st_DataLimit.tszDataTime)) + { + m_DataTimeSerial.SetTime(m_OleDTime); + } + + m_EditSerialUnlimitNumber.SetWindowText(pSt_AuthorizeCDKey->st_AuthSerial.st_UNLimit.tszUNLimitSerial); + //用户信息 + m_EditUserInfo.SetWindowText(pSt_AuthorizeCDKey->st_AuthUserInfo.tszUserName); + m_EditUserContact.SetWindowText(pSt_AuthorizeCDKey->st_AuthUserInfo.tszUserContact); + m_EditUserCustom.SetWindowText(pSt_AuthorizeCDKey->st_AuthUserInfo.tszCustom); + return true; +} +void CDialog_CDKey::OnBnClickedButton1() +{ + // TODO: 在此添加控件通知处理程序代码 + if (0 == m_ComboRegSerial.GetCurSel() || 0 == m_ComboRegType.GetCurSel() || 0 == m_ComboRegVer.GetCurSel()) + { + AfxMessageBox(_T("创建失败,注册验证类型没选择")); + return; + } + if (3 != m_ComboRegSerial.GetCurSel() && 4 != m_ComboRegSerial.GetCurSel()) + { + AfxMessageBox(_T("创建失败,注册类型仅支持次数卡和自定义时间卡")); + return; + } + CString m_StrPass; + m_EditKeyPass.GetWindowText(m_StrPass); + if (m_StrPass.IsEmpty()) + { + AfxMessageBox(_T("密码必须设置")); + return; + } + XENGINE_AUTHORIZE_LOCAL st_AuthorizeCDKey = {}; + Dialog_CDKey_Read(&st_AuthorizeCDKey); + + CFileDialog m_FileDlg(false, _T(".key"),_T("CDKey"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("CDKey文件(*.key)|*.key|")); + if (IDOK == m_FileDlg.DoModal()) + { + int nMSGLen = 0; + XCHAR tszDEBuffer[4096] = {}; + XBYTE tszENBuffer[4096] = {}; + Authorize_CDKey_WriteMemory(tszDEBuffer, &nMSGLen, &st_AuthorizeCDKey); + + OPenSsl_XCrypto_Encoder(tszDEBuffer, &nMSGLen, tszENBuffer, m_StrPass.GetBuffer()); + FILE* pSt_File = _tfopen(m_FileDlg.GetPathName(), _T("wb")); + if (NULL == pSt_File) + { + AfxMessageBox(_T("创建CDKEY文件失败")); + return; + } + fwrite(tszENBuffer, 1, nMSGLen, pSt_File); + fclose(pSt_File); + } +} + +void CDialog_CDKey::OnBnClickedButton9() +{ + // TODO: 在此添加控件通知处理程序代码 + CString m_StrPass; + m_EditKeyPass.GetWindowText(m_StrPass); + if (m_StrPass.IsEmpty()) + { + AfxMessageBox(_T("密码必须设置")); + return; + } + XENGINE_AUTHORIZE_LOCAL st_AuthorizeCDKey = {}; + + CFileDialog m_FileDlg(true, _T(".key"), _T("CDKey"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("CDKey文件(*.key)|*.key|")); + if (IDOK == m_FileDlg.DoModal()) + { + int nMSGLen = 0; + XCHAR tszDEBuffer[4096] = {}; + XCHAR tszENBuffer[4096] = {}; + + FILE* pSt_File = _tfopen(m_FileDlg.GetPathName(), _T("rb")); + nMSGLen = fread(tszENBuffer, 1, sizeof(tszENBuffer), pSt_File); + fclose(pSt_File); + + if (!OPenSsl_XCrypto_Decoder(tszENBuffer, &nMSGLen, tszDEBuffer, m_StrPass.GetBuffer())) + { + AfxMessageBox(_T("解密CDKEY失败")); + return; + } + + if (!Authorize_CDKey_ReadMemory(tszDEBuffer, nMSGLen, &st_AuthorizeCDKey)) + { + AfxMessageBox(_T("CDKEY读取失败")); + return; + } + Dialog_CDKey_Write(&st_AuthorizeCDKey); + bOPenCDKey = true; + } +} + + +void CDialog_CDKey::OnBnClickedButton10() +{ + // TODO: 在此添加控件通知处理程序代码 + Dialog_CDKey_Init(); +} + + +void CDialog_CDKey::OnBnClickedButton11() +{ + // TODO: 在此添加控件通知处理程序代码 + if (!bOPenCDKey) + { + AfxMessageBox(_T("没有打开要授权的文件")); + return; + } + XENGINE_AUTHORIZE_LOCAL st_AuthorizeCDKey = {}; + Dialog_CDKey_Read(&st_AuthorizeCDKey); + + CString m_StrLeftTime; + m_EditRegLeftTime.GetWindowText(m_StrLeftTime); + + if (3 == m_ComboRegSerial.GetCurSel()) + { + Authorize_CDKey_BuildKeyTime(&st_AuthorizeCDKey, _ttoi64(m_StrLeftTime.GetBuffer())); + } + else if (4 == m_ComboRegSerial.GetCurSel()) + { + XENGINE_LIBTIMER st_LibTime = {}; + BaseLib_OperatorTime_StrToTime(m_StrLeftTime.GetBuffer(), &st_LibTime); + Authorize_CDKey_BuildKeyTime(&st_AuthorizeCDKey, 0, &st_LibTime); + } + else + { + AfxMessageBox(_T("授权类型错误,无法继续")); + return; + } + + CString m_StrPass; + m_EditKeyPass.GetWindowText(m_StrPass); + if (m_StrPass.IsEmpty()) + { + AfxMessageBox(_T("密码必须设置")); + return; + } + CFileDialog m_FileDlg(false, _T(".key"), _T("CDKey"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("CDKey文件(*.key)|*.key|")); + if (IDOK == m_FileDlg.DoModal()) + { + int nMSGLen = 0; + XCHAR tszDEBuffer[4096] = {}; + XBYTE tszENBuffer[4096] = {}; + Authorize_CDKey_WriteMemory(tszDEBuffer, &nMSGLen, &st_AuthorizeCDKey); + + OPenSsl_XCrypto_Encoder(tszDEBuffer, &nMSGLen, tszENBuffer, m_StrPass.GetBuffer()); + FILE* pSt_File = _tfopen(m_FileDlg.GetPathName(), _T("wb")); + fwrite(tszENBuffer, 1, nMSGLen, pSt_File); + fclose(pSt_File); + } + AfxMessageBox(_T("授权CDKEY成功")); +} diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.h new file mode 100644 index 0000000000000000000000000000000000000000..89c5dbf208fde0eb56d733589e8e4887a784c1fc --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.h @@ -0,0 +1,62 @@ +#pragma once +#include "afxdialogex.h" + + +// CDialog_CDKey 对话框 + +class CDialog_CDKey : public CDialogEx +{ + DECLARE_DYNAMIC(CDialog_CDKey) + +public: + CDialog_CDKey(CWnd* pParent = nullptr); // 标准构造函数 + virtual ~CDialog_CDKey(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_DIALOG_CDKEY }; +#endif + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + DECLARE_MESSAGE_MAP() +public: + bool bOPenCDKey = false; + bool Dialog_CDKey_Init(); + bool Dialog_CDKey_Read(XENGINE_AUTHORIZE_LOCAL* pSt_AuthorizeCDKey); + bool Dialog_CDKey_Write(XENGINE_AUTHORIZE_LOCAL* pSt_AuthorizeCDKey); +public: + virtual BOOL OnInitDialog(); + afx_msg void OnBnClickedButton1(); + CEdit m_EditPort; + CDateTimeCtrl m_DateTimeCreate; + CDateTimeCtrl m_DateTimeRegister; + CDateTimeCtrl m_DateTimeStart; + CEdit m_EditSoftName; + CEdit m_EditSoftVer; + CEdit m_EditSoftTime; + CButton m_EditSoftInit; + CEdit m_EditRegHardCode; + CEdit m_EditRegLeftTime; + CEdit m_EditRegHaveTime; + CComboBox m_ComboRegSerial; + CComboBox m_ComboRegType; + CComboBox m_ComboRegHard; + CComboBox m_ComboRegVer; + CEdit m_EditSerialTimeNumber; + CEdit m_EditSerialTimeCount; + CEdit m_EditSerialDataNumber; + CDateTimeCtrl m_DataTimeSerial; + CEdit m_EditSerialUnlimitNumber; + CEdit m_EditUserInfo; + CEdit m_EditUserContact; + CEdit m_EditUserCustom; + afx_msg void OnBnClickedButton9(); + CDateTimeCtrl m_DataTimeRegExpiry; + CEdit m_EditKeyPass; + afx_msg void OnBnClickedButton10(); + CButton m_CheckSerialDataAdd; + afx_msg void OnBnClickedButton11(); + CEdit m_EditIPAddr; +}; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp index d424c110b00ca07cd90501070c2ec67004d6cfce..1bccb00d171095497d2b6064bfaa06e7a676b060 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp @@ -190,7 +190,7 @@ void CDialog_Modify::OnBnClickedButton2() st_UserTable.st_UserInfo.nIDNumber = _ttxoll(m_StrNumber.GetBuffer()); m_EditLeftTime.GetWindowText(st_UserTable.tszLeftTime, sizeof(st_UserTable.tszLeftTime)); - st_UserTable.enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)m_ComboSerial.GetCurSel(); + st_UserTable.enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)m_ComboSerial.GetCurSel(); st_UserTable.st_UserInfo.nUserLevel = m_ComboLeave.GetCurSel() - 1; Json::Value st_JsonRoot; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp index feb68874ba9d979a86427aa00c54a298e45278af..9468f2cf9910bcadab2245129c037ae2842c9a7b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp @@ -46,6 +46,8 @@ void CDialog_Switch::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_RADIO18, m_RadioMultiClose); DDX_Control(pDX, IDC_RADIO19, m_RadioTryOPen); DDX_Control(pDX, IDC_RADIO20, m_RadioTryClose); + DDX_Control(pDX, IDC_RADIO21, m_RadioBlackOPen); + DDX_Control(pDX, IDC_RADIO22, m_RadioBlackClose); } @@ -232,6 +234,16 @@ void CDialog_Switch::OnBnClickedButton1() m_RadioTryOPen.SetCheck(BST_UNCHECKED); m_RadioTryClose.SetCheck(BST_CHECKED); } + if (st_JsonRoot["bSwitchBanned"].asBool()) + { + m_RadioBlackOPen.SetCheck(BST_CHECKED); + m_RadioBlackClose.SetCheck(BST_UNCHECKED); + } + else + { + m_RadioBlackOPen.SetCheck(BST_UNCHECKED); + m_RadioBlackClose.SetCheck(BST_CHECKED); + } m_BtnSetConfigure.EnableWindow(true); } else @@ -349,6 +361,14 @@ void CDialog_Switch::OnBnClickedButton2() st_JsonObject["bSwitchTry"] = false; } + if (BST_CHECKED == m_RadioBlackOPen.GetCheck()) + { + st_JsonObject["bSwitchBanned"] = true; + } + else + { + st_JsonObject["bSwitchBanned"] = false; + } st_JsonRoot["st_SwitchInfo"] = st_JsonObject; st_JsonRoot["xhToken"] = _ttxoll(m_StrToken.GetBuffer()); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h index 4a6ce0adc5e1cc1442ca45393300187538e6d17d..8f0a6fce088d9587f441367be282e7d383bc7d44 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h @@ -47,4 +47,6 @@ public: CButton m_RadioMultiClose; CButton m_RadioTryOPen; CButton m_RadioTryClose; + CButton m_RadioBlackOPen; + CButton m_RadioBlackClose; }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp index 0424735c2d504ab5bf1c294782abb3a7bf31fa34..8c5fe2e876e1a45e427c93c1d6b19669a668ac4c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp @@ -324,7 +324,7 @@ void CDialog_Try::OnBnClickedButton3() m_EditDate.GetWindowText(m_StrDate); st_JsonObject["nID"] = _ttoi64(m_StrID.GetBuffer()); - st_JsonObject["enVMode"] = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)m_ComboType.GetCurSel(); + st_JsonObject["enVMode"] = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)m_ComboType.GetCurSel(); st_JsonObject["nVTime"] = _ttoi(m_StrTime.GetBuffer()); st_JsonObject["nLTime"] = _ttoi(m_StrLeft.GetBuffer()); st_JsonObject["tszVSerial"] = m_StrSerail.GetBuffer(); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps index 3f2745f24017de2b69ae42e70fc25b607fa5f87d..6b78a10f040f6c9afa595ae7abce3772379dab0e 100644 Binary files a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps and b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps differ diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc index be7835cf58717e30caf9bb864b0036cdd9651102..085cc658f08bb247f8c01202e242c5b7cae407b8 100644 Binary files a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc and b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc differ diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj index 5676021ab84327e658c9a8825830ded43265193c..fc9971aedc574cab36fe5d9d9ea3d7c5a5fedea9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj @@ -193,6 +193,7 @@ + @@ -210,6 +211,7 @@ + diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters index faf6e7616997b99ab29661e68144a175f2d71d60..beb3703ca84b30055a4bc530374f8da31910e143 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters @@ -72,6 +72,9 @@ 头文件\Authorize_Dialog + + 头文件\Authorize_Dialog + @@ -110,6 +113,9 @@ 源文件\Authorize_Dialog + + 源文件\Authorize_Dialog + diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp index 8716d2a6b9ac220b816f2bea932057dcde725019..cda8ac431c4a1f1201603af7d496bfca17d75cea 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp @@ -74,6 +74,7 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() m_TabWindows.InsertItem(4, _T("公告管理")); m_TabWindows.InsertItem(5, _T("序列号管理")); m_TabWindows.InsertItem(6, _T("黑名单配置")); + m_TabWindows.InsertItem(7, _T("CDKey配置")); m_DlgConfig.Create(IDD_DIALOG_CONFIG, &m_TabWindows); m_DlgSwitch.Create(IDD_DIALOG_SWITCH, &m_TabWindows); @@ -82,6 +83,7 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() m_DlgAnnouncement.Create(IDD_DIALOG_ANNOUNCEMENT, &m_TabWindows); m_DlgSerial.Create(IDD_DIALOG_SERIAL, &m_TabWindows); m_DlgBanned.Create(IDD_DIALOG_BANNED, &m_TabWindows); + m_DlgCDKey.Create(IDD_DIALOG_CDKEY, &m_TabWindows); //调整子对话框在父窗口中的位置 CRect st_Rect; m_TabWindows.GetClientRect(&st_Rect); @@ -97,6 +99,7 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() m_DlgAnnouncement.MoveWindow(&st_Rect); m_DlgSerial.MoveWindow(&st_Rect); m_DlgBanned.MoveWindow(&st_Rect); + m_DlgCDKey.MoveWindow(&st_Rect); //分别设置隐藏和显示 m_DlgConfig.ShowWindow(true); m_DlgSwitch.ShowWindow(false); @@ -105,6 +108,7 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() m_DlgAnnouncement.ShowWindow(false); m_DlgSerial.ShowWindow(false); m_DlgBanned.ShowWindow(false); + m_DlgCDKey.ShowWindow(false); m_TabWindows.SetCurSel(0); hMainWnd = m_hWnd; @@ -165,6 +169,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult m_DlgAnnouncement.ShowWindow(false); m_DlgSerial.ShowWindow(false); m_DlgBanned.ShowWindow(false); + m_DlgCDKey.ShowWindow(false); break; case 1: m_DlgConfig.ShowWindow(false); @@ -174,6 +179,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult m_DlgAnnouncement.ShowWindow(false); m_DlgSerial.ShowWindow(false); m_DlgBanned.ShowWindow(false); + m_DlgCDKey.ShowWindow(false); break; case 2: m_DlgConfig.ShowWindow(false); @@ -183,6 +189,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult m_DlgAnnouncement.ShowWindow(false); m_DlgSerial.ShowWindow(false); m_DlgBanned.ShowWindow(false); + m_DlgCDKey.ShowWindow(false); break; case 3: m_DlgConfig.ShowWindow(false); @@ -192,6 +199,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult m_DlgAnnouncement.ShowWindow(false); m_DlgSerial.ShowWindow(false); m_DlgBanned.ShowWindow(false); + m_DlgCDKey.ShowWindow(false); break; case 4: m_DlgConfig.ShowWindow(false); @@ -201,6 +209,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult m_DlgAnnouncement.ShowWindow(true); m_DlgSerial.ShowWindow(false); m_DlgBanned.ShowWindow(false); + m_DlgCDKey.ShowWindow(false); break; case 5: m_DlgConfig.ShowWindow(false); @@ -210,6 +219,7 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult m_DlgAnnouncement.ShowWindow(false); m_DlgSerial.ShowWindow(true); m_DlgBanned.ShowWindow(false); + m_DlgCDKey.ShowWindow(false); break; case 6: m_DlgConfig.ShowWindow(false); @@ -219,6 +229,17 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult m_DlgAnnouncement.ShowWindow(false); m_DlgSerial.ShowWindow(false); m_DlgBanned.ShowWindow(true); + m_DlgCDKey.ShowWindow(false); + break; + case 7: + m_DlgConfig.ShowWindow(false); + m_DlgSwitch.ShowWindow(false); + m_DlgUser.ShowWindow(false); + m_DlgTry.ShowWindow(false); + m_DlgAnnouncement.ShowWindow(false); + m_DlgSerial.ShowWindow(false); + m_DlgBanned.ShowWindow(false); + m_DlgCDKey.ShowWindow(true); break; default: break; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h index 3f7f5b5cba23fe1c2a7b5c10d176d053b1dfafb1..057a080d9a0b3af035226ca653dc288c4f34fe65 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h @@ -37,6 +37,7 @@ public: CDialog_Serial m_DlgSerial; CDialog_Banned m_DlgBanned; CDialog_Try m_DlgTry; + CDialog_CDKey m_DlgCDKey; CDialog_Announcement m_DlgAnnouncement; public: CTabCtrl m_TabWindows; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h index 0781a6d79b2be5955ef9ffb1b26b709b098d56f7..b9646560ed72c6cd7d1a09d329cfe6a606587ea8 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h @@ -23,13 +23,13 @@ using namespace std; #include #include #include -#include -#include #include "../../XAuth_Protocol.h" #include "../../AuthorizeModule_Configure/Config_Define.h" #include "../../AuthorizeModule_Configure/Config_Error.h" #include "../../AuthorizeModule_Help/AuthHelp_Define.h" #include "../../AuthorizeModule_Help/AuthHelp_Error.h" +#include "../../AuthorizeModule_CDKey/CDKey_Define.h" +#include "../../AuthorizeModule_CDKey/CDKey_Error.h" #include "Authorize_Dialog/Dialog_Config.h" #include "Authorize_Dialog/Dialog_User.h" #include "Authorize_Dialog/Dialog_Serial.h" @@ -38,6 +38,7 @@ using namespace std; #include "Authorize_Dialog/Dialog_Banned.h" #include "Authorize_Dialog/Dialog_Announcement.h" #include "Authorize_Dialog/Dialog_Try.h" +#include "Authorize_Dialog/Dialog_CDKey.h" #include "Authorize_Help/Authorize_Help.h" extern HWND hMainWnd; @@ -50,17 +51,21 @@ extern LPCXSTR lpszStuType[2]; #ifdef _WIN64 #pragma comment(lib,"../../x64/Debug/jsoncpp") #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Help") +#pragma comment(lib,"../../x64/Debug/AuthorizeModule_CDKey") #else #pragma comment(lib,"../../Debug/jsoncpp") #pragma comment(lib,"../../Debug/AuthorizeModule_Help") +#pragma comment(lib,"../../Debug/AuthorizeModule_CDKey") #endif #else #ifdef _WIN64 #pragma comment(lib,"../../x64/Release/jsoncpp") #pragma comment(lib,"../../x64/Release/AuthorizeModule_Help") +#pragma comment(lib,"../../x64/Release/AuthorizeModule_CDKey") #else #pragma comment(lib,"../../Release/jsoncpp") #pragma comment(lib,"../../Release/AuthorizeModule_Help") +#pragma comment(lib,"../../Release/AuthorizeModule_CDKey") #endif #endif diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h index 5fbea12e85d7e9a4fef5af96bc14e45f1ef2eaec..ed5dbc9ef64e6abbea0d2d4a2b810a9c6fe56f4f 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h @@ -12,6 +12,7 @@ #define IDD_DIALOG_BANNED 140 #define IDD_DIALOG_ANNOUNCEMENT 142 #define IDD_DIALOG_TRY 144 +#define IDD_DIALOG_CDKEY 146 #define IDC_TAB1 1000 #define IDC_EDIT1 1001 #define IDC_EDIT2 1002 @@ -22,56 +23,82 @@ #define IDC_EDIT5 1005 #define IDC_LIST2 1005 #define IDC_BUTTON2 1006 +#define IDC_EDIT15 1006 #define IDC_BUTTON3 1007 #define IDC_EDIT10 1007 +#define IDC_EDIT16 1007 #define IDC_BUTTON4 1008 #define IDC_EDIT9 1008 +#define IDC_EDIT17 1008 #define IDC_COMBO1 1009 #define IDC_BUTTON5 1009 +#define IDC_EDIT18 1009 #define IDC_COMBO2 1010 #define IDC_EDIT12 1010 +#define IDC_EDIT19 1010 #define IDC_BUTTON6 1011 #define IDC_EDIT11 1011 #define IDC_EDIT13 1011 #define IDC_EDIT6 1012 #define IDC_BUTTON7 1012 #define IDC_EDIT14 1012 +#define IDC_EDIT21 1012 #define IDC_EDIT7 1013 #define IDC_CHECK1 1013 #define IDC_BUTTON8 1013 #define IDC_EDIT8 1014 #define IDC_CHECK2 1014 +#define IDC_EDIT22 1014 #define IDC_RADIO1 1015 +#define IDC_EDIT23 1015 #define IDC_RADIO2 1016 +#define IDC_EDIT24 1016 #define IDC_RADIO3 1017 #define IDC_STATIC_TIPS 1017 +#define IDC_EDIT25 1017 #define IDC_RADIO4 1018 #define IDC_STATIC_TIPS2 1018 +#define IDC_BUTTON9 1018 #define IDC_RADIO5 1019 #define IDC_DATETIMEPICKER1 1019 #define IDC_RADIO6 1020 +#define IDC_DATETIMEPICKER2 1020 #define IDC_RADIO7 1021 +#define IDC_DATETIMEPICKER3 1021 #define IDC_RADIO8 1022 +#define IDC_IPADDRESS1 1022 #define IDC_RADIO9 1023 +#define IDC_COMBO3 1023 #define IDC_RADIO10 1024 +#define IDC_COMBO4 1024 #define IDC_RADIO11 1025 +#define IDC_COMBO5 1025 #define IDC_RADIO12 1026 +#define IDC_COMBO6 1026 #define IDC_RADIO13 1027 +#define IDC_DATETIMEPICKER4 1027 #define IDC_RADIO14 1028 +#define IDC_BUTTON10 1028 #define IDC_RADIO15 1029 +#define IDC_DATETIMEPICKER5 1029 #define IDC_RADIO16 1030 +#define IDC_EDIT26 1030 #define IDC_RADIO17 1031 +#define IDC_BUTTON11 1031 #define IDC_RADIO18 1032 +#define IDC_CHECK3 1032 #define IDC_RADIO19 1033 #define IDC_RADIO20 1034 +#define IDC_RADIO21 1035 +#define IDC_RADIO22 1036 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 146 +#define _APS_NEXT_RESOURCE_VALUE 148 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1022 +#define _APS_NEXT_CONTROL_VALUE 1033 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp index f7d2290feb5c6a44002822ace9e12d6e90f9583f..9ac215077cdb199c7d633a3fd8b138570d9f6d0d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp @@ -68,7 +68,16 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int return false; } } - if (!Database_SQLite_UserQuery(tszUserName, &st_UserTable)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserQuery(tszUserName, &st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserQuery(tszUserName, &st_UserTable); + } + if (!bSuccess) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp index 0f1e9ce935043f52b437c8510de8a4ffb72d792a..3721652c1b85f17ad613ecae9670a98bbbe490de 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp @@ -23,7 +23,14 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN AUTHREG_ANNOUNCEMENT st_Announcement; memset(&st_Announcement, '\0', sizeof(AUTHREG_ANNOUNCEMENT)); - Database_SQLite_AnnouncementList(NULL, &nListCount); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_AnnouncementList(NULL, &nListCount); + } + else + { + DBModule_MySQL_AnnouncementList(NULL, &nListCount); + } if (nListCount > 10) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 510, "server limited"); @@ -32,7 +39,14 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN return false; } Protocol_Parse_HttpParseAnnouncement(lpszMsgBuffer, nMsgLen, &st_Announcement); - Database_SQLite_AnnouncementInsert(&st_Announcement); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_AnnouncementInsert(&st_Announcement); + } + else + { + DBModule_MySQL_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, _X("HTTP客户端:%s,插入公告成功,公告信息:%s"), lpszClientAddr, st_Announcement.tszContext); @@ -43,7 +57,14 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN memset(&st_Announcement, '\0', sizeof(AUTHREG_ANNOUNCEMENT)); Protocol_Parse_HttpParseAnnouncement(lpszMsgBuffer, nMsgLen, &st_Announcement); - Database_SQLite_AnnouncementDelete(&st_Announcement); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_AnnouncementDelete(&st_Announcement); + } + else + { + DBModule_MySQL_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, _X("HTTP客户端:%s,删除公告成功.删除公告ID:%lld"), lpszClientAddr, st_Announcement.nID); @@ -53,7 +74,14 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN int nListCount = 0; AUTHREG_ANNOUNCEMENT** ppSt_Announcement; - Database_SQLite_AnnouncementList(&ppSt_Announcement, &nListCount); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_AnnouncementList(&ppSt_Announcement, &nListCount); + } + else + { + DBModule_MySQL_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); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp index f066df2e0ab9b22d2f49f5f14dd637ec6332ea38..be5efdc0fb9ef09cd3c217115d02459fdbb83823 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp @@ -11,13 +11,28 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); + if (!st_FunSwitch.bSwitchBanned) + { + 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, _X("HTTP客户端:%s,黑名单协议处理失败,功能已经被服务器关闭!"), lpszClientAddr); + return false; + } + if (0 == _tcsxnicmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) { AUTHREG_BANNED st_Banned; memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); Protocol_Parse_HttpParseBanned(lpszMsgBuffer, nMsgLen, &st_Banned); - Database_SQLite_BannedInsert(&st_Banned); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_BannedInsert(&st_Banned); + } + else + { + DBModule_MySQL_BannedInsert(&st_Banned); + } 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, _X("HTTP客户端:%s,插入禁用列表成功,禁用的用户:%s,禁用的IP地址:%s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPAddr); @@ -28,7 +43,14 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); Protocol_Parse_HttpParseBanned(lpszMsgBuffer, nMsgLen, &st_Banned); - Database_SQLite_BannedDelete(&st_Banned); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_BannedDelete(&st_Banned); + } + else + { + DBModule_MySQL_BannedDelete(&st_Banned); + } 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, _X("HTTP客户端:%s,删除禁用列表成功,删除禁用的用户:%s,删除禁用的IP地址:%s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPAddr); @@ -44,7 +66,14 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L Protocol_Parse_HttpParseBanned2(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); - Database_SQLite_BannedList(&ppSt_BannedUser, &nCountUser, &ppSt_BannedAddr, &nCountAddr, nPosStart, nPosEnd); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_BannedList(&ppSt_BannedUser, &nCountUser, &ppSt_BannedAddr, &nCountAddr, nPosStart, nPosEnd); + } + else + { + DBModule_MySQL_BannedList(&ppSt_BannedUser, &nCountUser, &ppSt_BannedAddr, &nCountAddr, nPosStart, nPosEnd); + } Protocol_Packet_HttpBanned(tszSDBuffer, &nSDLen, &ppSt_BannedUser, nCountUser, &ppSt_BannedAddr, nCountAddr); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_BannedAddr, nCountAddr); @@ -57,7 +86,14 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); Protocol_Parse_HttpParseBanned(lpszMsgBuffer, nMsgLen, &st_Banned); - Database_SQLite_BannedUPDate(&st_Banned); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_BannedUPDate(&st_Banned); + } + else + { + DBModule_MySQL_BannedUPDate(&st_Banned); + } 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, _X("HTTP客户端:%s,修改禁用列表成功,修改的用户:%s,修改的IP地址:%s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPAddr); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp index 4d12f69a9116ce174d3b97f48afa5115f7d68851..5edd7eb7f010f5472d7c992cd2d723d33b735926 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp @@ -26,7 +26,31 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP memset(&st_Authorize, '\0', sizeof(XENGINE_AUTHORIZE_LOCAL)); Protocol_Parse_HttpParseCDKey(lpszMsgBuffer, nMsgLen, &st_Authorize); - if (!Authorize_Local_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize)) + + if (_tcsxlen(st_Authorize.st_AuthSerial.st_TimeLimit.tszTimeSerial) <= 0) + { + int nSerialCount = 3; + XCHAR** pptszSerialList; + Authorize_Serial_Create(&pptszSerialList, _X("XAUTH"), nSerialCount, 9); + + st_Authorize.st_AuthSerial.st_TimeLimit.nTimeCount = 9999; + _tcsxcpy(st_Authorize.st_AuthSerial.st_TimeLimit.tszTimeSerial, pptszSerialList[0]); + + st_Authorize.st_AuthSerial.st_DataLimit.bTimeAdd = false; + _tcsxcpy(st_Authorize.st_AuthSerial.st_DataLimit.tszDataSerial, pptszSerialList[1]); + XCHAR tszTimeStr[128] = {}; + XENGINE_LIBTIMER st_LibTime = {}; + BaseLib_OperatorTime_GetSysTime(&st_LibTime); + st_LibTime.wYear += 1; //一年后过期 + BaseLib_OperatorTime_TimeToStr(tszTimeStr, NULL, true, &st_LibTime); + + _tcsxcpy(st_Authorize.st_AuthSerial.st_DataLimit.tszDataTime, tszTimeStr); + + _tcsxcpy(st_Authorize.st_AuthSerial.st_UNLimit.tszUNLimitSerial, pptszSerialList[2]); + BaseLib_OperatorMemory_Free((XPPPMEM)&pptszSerialList, nSerialCount); + } + + if (!Authorize_CDKey_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize)) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 406, "Not Acceptable,write key failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -41,21 +65,21 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP XENGINE_AUTHORIZE_LOCAL st_Authorize; memset(&st_Authorize, '\0', sizeof(XENGINE_AUTHORIZE_LOCAL)); - Authorize_Local_ReadMemory(lpszMsgBuffer, nMsgLen, &st_Authorize); + Authorize_CDKey_ReadMemory(lpszMsgBuffer, nMsgLen, &st_Authorize); //授权 - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM == st_Authorize.st_AuthRegInfo.enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == st_Authorize.st_AuthRegInfo.enSerialType) { XENGINE_LIBTIMER st_LibTime; memset(&st_LibTime, '\0', sizeof(XENGINE_LIBTIMER)); BaseLib_OperatorTime_StrToTime(st_Authorize.st_AuthRegInfo.tszLeftTime, &st_LibTime); - Authorize_Local_BuildKeyTime(&st_Authorize, 0, &st_LibTime); + Authorize_CDKey_BuildKeyTime(&st_Authorize, 0, &st_LibTime); } else { - Authorize_Local_BuildKeyTime(&st_Authorize, _ttxoll(st_Authorize.st_AuthRegInfo.tszLeftTime)); + Authorize_CDKey_BuildKeyTime(&st_Authorize, _ttxoll(st_Authorize.st_AuthRegInfo.tszLeftTime)); } - Authorize_Local_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize); + Authorize_CDKey_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, _X("HTTP客户端:%s,请求授权CDKEY成功,APP名:%s,APP版本:%s,授权期限:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer, st_Authorize.st_AuthRegInfo.tszLeftTime); } @@ -64,15 +88,23 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP 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)) + Authorize_CDKey_ReadMemory(lpszMsgBuffer, nMsgLen, &st_Authorize); + + if (ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_NETWORK != st_Authorize.st_AuthRegInfo.enVModeType) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "unsupport,cdkey is not authorized"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求验证CDKEY失败,cdkey未授权或者已超时,错误:%lX"), lpszClientAddr, Authorize_GetLastError()); + return false; + } + if (!Authorize_CDKey_GetLeftTimer(&st_Authorize)) { 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, _X("HTTP客户端:%s,请求验证CDKEY失败,cdkey未授权或者已超时,错误:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; } - Authorize_Local_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize); + Authorize_CDKey_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, _X("HTTP客户端:%s,请求验证CDKEY成功,APP名:%s,APP版本:%s,授权期限:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer, st_Authorize.st_AuthRegInfo.tszLeftTime); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index c4f257b5b1e0f792db3ca52cade952a07f3b1990..f1d1ecbe5e99fbcfe7665cdc3507a2fd0c357d96 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -17,7 +17,16 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); Protocol_Parse_HttpParseUser(lpszMsgBuffer, nMsgLen, &st_UserTable.st_UserInfo); - if (!Database_SQLite_UserQuery(st_UserTable.st_UserInfo.tszUserName, &st_UserTable)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserQuery(st_UserTable.st_UserInfo.tszUserName, &st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserQuery(st_UserTable.st_UserInfo.tszUserName, &st_UserTable); + } + if (!bSuccess) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "not found client"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -63,7 +72,14 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L if (!bOnline) { //只有bOnline不是在线列表的时候才执行 - Database_SQLite_UserList(&ppSt_UserInfo, &nOffCount, nPosStart, nPosEnd); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserList(&ppSt_UserInfo, &nOffCount, nPosStart, nPosEnd); + } + else + { + DBModule_MySQL_UserList(&ppSt_UserInfo, &nOffCount, nPosStart, nPosEnd); + } } Protocol_Packet_HttpClientList(ptszMsgBuffer, &nSDLen, &ppSt_ListClient, nOnCount, &ppSt_UserInfo, nOffCount); @@ -104,7 +120,16 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); Protocol_Parse_HttpParseTable(lpszMsgBuffer, nMsgLen, &st_UserTable); - if (!Database_SQLite_UserSet(&st_UserTable)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserSet(&st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserSet(&st_UserTable); + } + if (!bSuccess) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "not found client"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp index 94935d1cf5576fac3a2778f33abc4bc7921cb6b8..4dcafaf5c450cc8d198d472334d6aa82e82a6c3b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp @@ -19,7 +19,16 @@ bool XEngine_AuthorizeHTTP_Pass(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); Protocol_Parse_HttpParseAuth(lpszMsgBuffer, nMsgLen, &st_UserAuth); - if (!Database_SQLite_UserQuery(st_UserAuth.tszUserName, &st_UserTable)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserQuery(st_UserAuth.tszUserName, &st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserQuery(st_UserAuth.tszUserName, &st_UserTable); + } + if (!bSuccess) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user notfound"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -43,7 +52,14 @@ bool XEngine_AuthorizeHTTP_Pass(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC memset(&st_ProtocolTime, '\0', sizeof(AUTHREG_PROTOCOL_TIME)); Protocol_Parse_HttpParseTime(lpszMsgBuffer, nMsgLen, &st_ProtocolTime); - Database_SQLite_UserLeave(&st_ProtocolTime); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserLeave(&st_ProtocolTime); + } + else + { + DBModule_MySQL_UserLeave(&st_ProtocolTime); + } Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -55,7 +71,14 @@ bool XEngine_AuthorizeHTTP_Pass(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC memset(&st_ProtocolTime, '\0', sizeof(AUTHREG_PROTOCOL_TIME)); Protocol_Parse_HttpParseTime(lpszMsgBuffer, nMsgLen, &st_ProtocolTime); - Database_SQLite_UserLeave(&st_ProtocolTime); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserLeave(&st_ProtocolTime); + } + else + { + DBModule_MySQL_UserLeave(&st_ProtocolTime); + } 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, _X("PASS客户端:%s,用户名:%s,超时通知成功"), lpszClientAddr, st_ProtocolTime.tszUserName); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp index 97bd0df59ce9503b27099077faa6719d929928c3..49eea32ac6232cf5e0a7941e67d4adf9dfb276e8 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp @@ -32,7 +32,14 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L return false; } AUTHREG_SERIALTABLE** ppSt_SerialTable; - Database_SQLite_SerialQueryAll(&ppSt_SerialTable, &nListCount, nPosStart, nPosEnd); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_SerialQueryAll(&ppSt_SerialTable, &nListCount, nPosStart, nPosEnd); + } + else + { + DBModule_MySQL_SerialQueryAll(&ppSt_SerialTable, &nListCount, nPosStart, nPosEnd); + } Protocol_Packet_HttpSerialList(ptszMsgBuffer, &nSDLen, &ppSt_SerialTable, nListCount); BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_SerialTable, nListCount); XEngine_Client_TaskSend(lpszClientAddr, ptszMsgBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -46,26 +53,26 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L int nSerialCount = 0; XCHAR tszHasTime[128]; XENGINE_LIBTIMER st_AuthTimer; - ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType; + ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType; memset(&st_AuthTimer, '\0', sizeof(st_AuthTimer)); memset(tszHasTime, '\0', sizeof(tszHasTime)); Protocol_Parse_HttpParseSerial2(lpszMsgBuffer, nMsgLen, &enSerialType, &nNumberCount, &nSerialCount, tszHasTime); //解析类型 - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND == enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == enSerialType) { st_AuthTimer.wSecond = _ttxoi(tszHasTime); } - else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY == enSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == enSerialType) { st_AuthTimer.wDay = _ttxoi(tszHasTime); } - else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME == enSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == enSerialType) { st_AuthTimer.wFlags = _ttxoi(tszHasTime); } - else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM == enSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == enSerialType) { if (6 != _stxscanf(tszHasTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), &st_AuthTimer.wYear, &st_AuthTimer.wMonth, &st_AuthTimer.wDay, &st_AuthTimer.wHour, &st_AuthTimer.wMinute, &st_AuthTimer.wSecond)) { @@ -93,9 +100,19 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L return false; } //导入序列卡 - for (int i = 0; i < nSerialCount; i++) + if (0 == st_AuthConfig.st_XSql.nDBType) + { + for (int i = 0; i < nSerialCount; i++) //导入序列卡 + { + DBModule_SQLite_SerialInsert(pptszSerialNumber[i]); + } + } + else { - Database_SQLite_SerialInsert(pptszSerialNumber[i]); + for (int i = 0; i < nSerialCount; i++) + { + DBModule_MySQL_SerialInsert(pptszSerialNumber[i]); + } } BaseLib_OperatorMemory_Free((XPPPMEM)&pptszSerialNumber, nSerialCount); Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); @@ -108,9 +125,19 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L AUTHREG_SERIALTABLE** ppSt_SerialTable; Protocol_Parse_HttpParseSerial(lpszMsgBuffer, nMsgLen, &ppSt_SerialTable, &nListCount); - for (int i = 0; i < nListCount; i++) + if (0 == st_AuthConfig.st_XSql.nDBType) { - Database_SQLite_SerialDelete(ppSt_SerialTable[i]->tszSerialNumber); + for (int i = 0; i < nListCount; i++) + { + DBModule_SQLite_SerialDelete(ppSt_SerialTable[i]->tszSerialNumber); + } + } + else + { + for (int i = 0; i < nListCount; i++) + { + DBModule_MySQL_SerialDelete(ppSt_SerialTable[i]->tszSerialNumber); + } } BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_SerialTable, nListCount); Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); @@ -123,9 +150,19 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L AUTHREG_SERIALTABLE** ppSt_SerialTable; Protocol_Parse_HttpParseSerial(lpszMsgBuffer, nMsgLen, &ppSt_SerialTable, &nListCount); - for (int i = 0; i < nListCount; i++) + if (0 == st_AuthConfig.st_XSql.nDBType) { - Database_SQLite_SerialPush(ppSt_SerialTable[i]); + for (int i = 0; i < nListCount; i++) + { + DBModule_SQLite_SerialPush(ppSt_SerialTable[i]); + } + } + else + { + for (int i = 0; i < nListCount; i++) + { + DBModule_MySQL_SerialPush(ppSt_SerialTable[i]); + } } BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_SerialTable, nListCount); Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp index 86d70890a06416c4e637dd23cd6983f4542cf127..ac5b3ba7234cfa5f053a4ffe9694cdebd5a7bee1 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp @@ -29,7 +29,14 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX int nListCount = 0; AUTHREG_TEMPVER** ppSt_AuthVer; - Database_SQLite_TryList(&ppSt_AuthVer, &nListCount); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_TryList(&ppSt_AuthVer, &nListCount); + } + else + { + DBModule_MySQL_TryList(&ppSt_AuthVer, &nListCount); + } Protocol_Packet_HttpTryList(ptszMsgBuffer, &nSDLen, &ppSt_AuthVer, nListCount); BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_AuthVer, nListCount); XEngine_Client_TaskSend(lpszClientAddr, ptszMsgBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -43,7 +50,14 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX memset(&st_VERTemp, '\0', sizeof(AUTHREG_TEMPVER)); Protocol_Parse_HttpParseTry(lpszMsgBuffer, nMsgLen, &st_VERTemp); - Database_SQLite_TryDelete(st_VERTemp.tszVSerial); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_TryDelete(st_VERTemp.tszVSerial); + } + else + { + DBModule_MySQL_TryDelete(st_VERTemp.tszVSerial); + } 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, _X("HTTP客户端:%s,序列号:%s,临时验证删除成功"), lpszClientAddr, st_VERTemp.tszVSerial); @@ -54,7 +68,14 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX memset(&st_VERTemp, '\0', sizeof(AUTHREG_TEMPVER)); Protocol_Parse_HttpParseTry(lpszMsgBuffer, nMsgLen, &st_VERTemp); - Database_SQLite_TrySet(&st_VERTemp); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_TrySet(&st_VERTemp); + } + else + { + DBModule_MySQL_TrySet(&st_VERTemp); + } 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, _X("HTTP客户端:%s,序列号:%s,临时验证修改成功"), lpszClientAddr, st_VERTemp.tszVSerial); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index 6654cee030c716c48e0908529f1ca10794fb6ea9..bf1a47367f5a234b67a89ae296344d2b5a70f250 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -36,7 +36,14 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC } BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListClient, nListCount); - Database_SQLite_UserDelete(st_UserInfo.tszUserName); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserDelete(st_UserInfo.tszUserName); + } + else + { + DBModule_MySQL_UserDelete(st_UserInfo.tszUserName); + } 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, _X("HTTP客户端:%s,请求删除用户:%s 成功,在线用户数:%d"), lpszClientAddr, st_UserInfo.tszUserName, nListCount); @@ -60,18 +67,27 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); _tcsxcpy(st_Banned.tszUserName, st_UserTable.st_UserInfo.tszUserName); - if (Database_SQLite_BannedExist(&st_Banned)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_BannedExist(&st_Banned); + } + else + { + bSuccess = DBModule_MySQL_BannedExist(&st_Banned); + } + if (!bSuccess && st_FunSwitch.bSwitchBanned) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 423, "user name is banned"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,注册失败,用户名已经被禁用!"), lpszClientAddr, st_Banned.tszUserName); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,注册失败,用户名或IP地址已经被禁用!"), lpszClientAddr, st_Banned.tszUserName); return false; } //填充写入数据 - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW == st_UserTable.enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW == st_UserTable.enSerialType) { _xstprintf(st_UserTable.tszLeftTime, _X("%d"), st_AuthConfig.st_XVerification.nTryTime); - st_UserTable.enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_AuthConfig.st_XVerification.nTryMode; + st_UserTable.enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_AuthConfig.st_XVerification.nTryMode; } //禁止权限0和1注册 if (st_UserTable.st_UserInfo.nUserLevel <= 1) @@ -85,7 +101,16 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,注册失败,没有设置用户和密码"), lpszClientAddr); return false; } - if (!Database_SQLite_UserRegister(&st_UserTable)) + bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserRegister(&st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserRegister(&st_UserTable); + } + if (!bSuccess) { XLONG dwRet = DBModule_GetLastError(); Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, dwRet, "user register is failed"); @@ -113,14 +138,30 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC return false; } Protocol_Parse_HttpParsePay(lpszMsgBuffer, nMsgLen, &st_UserPay); - if (!Database_SQLite_UserPay(st_UserPay.tszUserName, st_UserPay.tszSerialNumber)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserPay(st_UserPay.tszUserName, st_UserPay.tszSerialNumber); + } + else + { + bSuccess = DBModule_MySQL_UserPay(st_UserPay.tszUserName, st_UserPay.tszSerialNumber); + } + if (!bSuccess) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "Serial number not available"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,充值失败,无法继续,错误:%X"), lpszClientAddr, st_UserPay.tszUserName, DBModule_GetLastError()); return false; } - Database_SQLite_UserQuery(st_UserPay.tszUserName, &st_UserInfo); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserQuery(st_UserPay.tszUserName, &st_UserInfo); + } + else + { + DBModule_MySQL_UserQuery(st_UserPay.tszUserName, &st_UserInfo); + } Session_Authorize_SetUser(&st_UserInfo); Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -144,7 +185,16 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC return false; } Protocol_Parse_HttpParseUser(lpszMsgBuffer, nMsgLen, &st_UserInfo); - if (!Database_SQLite_UserQuery(st_UserInfo.tszUserName, &st_UserTable)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserQuery(st_UserInfo.tszUserName, &st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserQuery(st_UserInfo.tszUserName, &st_UserTable); + } + if (!bSuccess) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -200,11 +250,21 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC return false; } Protocol_Parse_HttpParseTry(lpszMsgBuffer, nMsgLen, &st_VERTemp); - if (Database_SQLite_TryQuery(&st_VERTemp)) + bool bSuccess = false; + //判断是使用哪个数据库 + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_TryQuery(&st_VERTemp); + } + else + { + bSuccess = DBModule_MySQL_TryQuery(&st_VERTemp); + } + if (bSuccess) { __int64x nTimeSpan = 0; //根据方式来计算剩余时间 - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME == st_VERTemp.enVMode) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == st_VERTemp.enVMode) { //次数卡需要更新才可以 st_VERTemp.nLTime--; @@ -231,7 +291,14 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC //是否超过 if (nTimeSpan >= 0) { - Database_SQLite_TrySet(&st_VERTemp); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_TrySet(&st_VERTemp); + } + else + { + DBModule_MySQL_TrySet(&st_VERTemp); + } 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, _X("HTTP客户端:%s,序列号:%s,类型:%s,临时验证成功,剩余时间:%lld"), lpszClientAddr, st_VERTemp.tszVSerial, lpszXSerialType[st_VERTemp.enVMode], nTimeSpan); @@ -247,16 +314,25 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC { //填充写入数据 st_VERTemp.nVTime = st_AuthConfig.st_XVerification.nVerTime; - st_VERTemp.enVMode = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_AuthConfig.st_XVerification.nVerMode; + st_VERTemp.enVMode = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_AuthConfig.st_XVerification.nVerMode; //看下是否启用了此功能,不支持分钟,因为不登录 - if ((ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW == st_VERTemp.enVMode) || (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND == st_VERTemp.enVMode) || (st_VERTemp.nVTime <= 0)) + if ((ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW == st_VERTemp.enVMode) || (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == st_VERTemp.enVMode) || (st_VERTemp.nVTime <= 0)) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 501, "the function server unavailable"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,序列号:%s,临时验证插入失败,因为服务器关闭了此功能"), lpszClientAddr, st_VERTemp.tszVSerial); return false; } - if (!Database_SQLite_TryInsert(&st_VERTemp)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_TryInsert(&st_VERTemp); + } + else + { + bSuccess = DBModule_MySQL_TryInsert(&st_VERTemp); + } + if (!bSuccess) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 500, "Internal Server Error"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 78d426db7c1a563e065e34de27522c9c58676d54..5245822d9e7cf06b31c6e5ca379fa2ad20d52232 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -34,12 +34,12 @@ using namespace std; #include #include #include -#include -#include #include #include #include #include +#include +#include #include "../../XAuth_Protocol.h" #include "../../AuthorizeModule_Configure/Config_Define.h" #include "../../AuthorizeModule_Configure/Config_Error.h" @@ -51,6 +51,8 @@ using namespace std; #include "../../AuthorizeModule_Protocol/Protocol_Error.h" #include "../../AuthorizeModule_Help/AuthHelp_Define.h" #include "../../AuthorizeModule_Help/AuthHelp_Error.h" +#include "../../AuthorizeModule_CDKey/CDKey_Define.h" +#include "../../AuthorizeModule_CDKey/CDKey_Error.h" #include "../../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Define.h" #include "../../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Error.h" @@ -107,6 +109,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Session.lib") #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Database.lib") #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Help.lib") +#pragma comment(lib,"../../x64/Debug/AuthorizeModule_CDKey.lib") #pragma comment(lib,"../../x64/Debug/XEngine_InfoReport.lib") #else #pragma comment(lib,"../../Debug/AuthorizeModule_Configure.lib") @@ -114,6 +117,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"../../Debug/AuthorizeModule_Session.lib") #pragma comment(lib,"../../Debug/AuthorizeModule_Database.lib") #pragma comment(lib,"../../Debug/AuthorizeModule_Help.lib") +#pragma comment(lib,"../../Debug/AuthorizeModule_CDKey.lib") #pragma comment(lib,"../../Debug/XEngine_InfoReport.lib") #endif #else @@ -123,6 +127,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"../../x64/Release/AuthorizeModule_Session.lib") #pragma comment(lib,"../../x64/Release/AuthorizeModule_Database.lib") #pragma comment(lib,"../../x64/Release/AuthorizeModule_Help.lib") +#pragma comment(lib,"../../x64/Release/AuthorizeModule_CDKey.lib") #pragma comment(lib,"../../x64/Release/XEngine_InfoReport.lib") #else #pragma comment(lib,"../../Release/AuthorizeModule_Configure.lib") @@ -130,6 +135,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"../../Release/AuthorizeModule_Session.lib") #pragma comment(lib,"../../Release/AuthorizeModule_Database.lib") #pragma comment(lib,"../../Release/AuthorizeModule_Help.lib") +#pragma comment(lib,"../../Release/AuthorizeModule_CDKey.lib") #pragma comment(lib,"../../Release/XEngine_InfoReport.lib") #endif #endif @@ -141,7 +147,6 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"XEngine_Client/XClient_APIHelp.lib") #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_XLog.lib") #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Packets.lib") -#pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Authorize.lib") #pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol.lib") #pragma comment(lib,"XEngine_RfcComponents/RfcComponents_HttpProtocol.lib") #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index 1240c6b8a8a41cd59e2edf37e5008f97ea522bad..0d51e18c57ca34f5c97bdcbb836c43a5bf13809b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -59,15 +59,24 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int AUTHREG_BANNED st_Banned; memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); - _tcsxcpy(st_Banned.tszIPAddr, lpszClientAddr); BaseLib_OperatorIPAddr_SegAddr(st_Banned.tszIPAddr); + //是否在黑名单 - if (Database_SQLite_BannedExist(&st_Banned)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_BannedExist(&st_Banned); //IP地址是否在黑名单 + } + else + { + bSuccess = DBModule_MySQL_BannedExist(&st_Banned);//IP地址是否在黑名单 + } + if (!bSuccess && st_FunSwitch.bSwitchBanned) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 423, "ip address is banned"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,IP地址被禁用!"), lpszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,用户名或IP地址被禁用!"), lpszClientAddr); return false; } if (0 == _tcsxnicmp(lpszMethodPost, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodPost))) @@ -253,7 +262,6 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int LPCXSTR lpszFuncName = _X("api"); LPCXSTR lpszAPIVerNotice = _X("notice"); LPCXSTR lpszAPIVerDCode = _X("dcode"); - memset(tszUrlName, '\0', sizeof(tszUrlName)); HttpProtocol_ServerHelp_GetParament(pSt_HTTPParament->tszHttpUri, &pptszList, &nListCount, tszUrlName); if ((nListCount < 1) || (0 != _tcsxnicmp(lpszFuncName, tszUrlName, _tcsxlen(lpszFuncName)))) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index 80b86d14950406a0caffc3edd375327b7852a6df..56e57810fba4caebdf43ae46b2fffd5eb3683a67 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -164,15 +164,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, } else if (XENGINE_AUTH_APP_NETTYPE_TCP == nNetType) { - if (NULL == lpszPass) - { - NetCore_TCPXCore_SendEx(xhTCPSocket, lpszClientAddr, lpszMsgBuffer, nMsgLen); - } - else - { - OPenSsl_XCrypto_Encoder(lpszMsgBuffer, &nMsgLen, (XBYTE*)ptszMsgBuffer, lpszPass); - NetCore_TCPXCore_SendEx(xhTCPSocket, lpszClientAddr, ptszMsgBuffer, nMsgLen); - } + NetCore_TCPXCore_SendEx(xhTCPSocket, lpszClientAddr, lpszMsgBuffer, nMsgLen); } else { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index af26d111113f10ec4a5ba0a863196ee81ee2c870..a73b2fa693702bbb49785ec75e61e0994ec0ade6 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -52,23 +52,8 @@ XHTHREAD CALLBACK XEngine_AuthService_TCPThread(XPVOID lParam) bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, int nNetType) { int nSDLen = 0; - XCHAR tszSDBuffer[2048]; - memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - - AUTHREG_BANNED st_Banned; - memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); - - _tcsxcpy(st_Banned.tszIPAddr, lpszClientAddr); - BaseLib_OperatorIPAddr_SegAddr(st_Banned.tszIPAddr); - //是否在黑名单 - if (Database_SQLite_BannedExist(&st_Banned)) - { - pSt_ProtocolHdr->wReserve = 423; - Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,IP地址被禁用!"), lpszClientAddr); - return false; - } + XCHAR tszSDBuffer[2048] = {}; + AUTHREG_BANNED st_Banned = {}; if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN == pSt_ProtocolHdr->unOperatorCode) { @@ -79,6 +64,28 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n memset(&st_AuthProtocol, '\0', sizeof(XENGINE_PROTOCOL_USERAUTH)); memcpy(&st_AuthProtocol, lpszMsgBuffer, sizeof(XENGINE_PROTOCOL_USERAUTH)); + _tcsxcpy(st_Banned.tszIPAddr, lpszClientAddr); + _tcsxcpy(st_Banned.tszUserName, st_AuthProtocol.tszUserName); + BaseLib_OperatorIPAddr_SegAddr(st_Banned.tszIPAddr); + //是否在黑名单 + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_BannedExist(&st_Banned); //是否在黑名单 + } + else + { + bSuccess = DBModule_MySQL_BannedExist(&st_Banned);//是否在黑名单 + } + if (!bSuccess && st_FunSwitch.bSwitchBanned) + { + pSt_ProtocolHdr->wReserve = 423; + Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,用户名或IP地址被禁用!"), lpszClientAddr); + return false; + } + pSt_ProtocolHdr->unPacketSize = 0; pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN; //是否允许登录 @@ -132,7 +139,16 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } else { - if (!Database_SQLite_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable)) + bool bSuccess = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserQuery(st_AuthProtocol.tszUserName, &st_UserTable); + } + if (!bSuccess) { pSt_ProtocolHdr->wReserve = 251; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); @@ -192,28 +208,28 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListClient, nListCount); //对多端登录的类型进行验证 - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_SECOND == st_UserTable.enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == st_UserTable.enSerialType) { if (!st_AuthConfig.st_XLogin.st_MulitLogin.bSecond) { bLogin = true; } } - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME == st_UserTable.enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == st_UserTable.enSerialType) { if (!st_AuthConfig.st_XLogin.st_MulitLogin.bTime) { bLogin = true; } } - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY == st_UserTable.enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == st_UserTable.enSerialType) { if (!st_AuthConfig.st_XLogin.st_MulitLogin.bDay) { bLogin = true; } } - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM == st_UserTable.enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == st_UserTable.enSerialType) { if (!st_AuthConfig.st_XLogin.st_MulitLogin.bCustom) { @@ -254,7 +270,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n return false; } //分析充值类型 - if ((ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW == st_UserTable.enSerialType) || ('0' == st_UserTable.tszLeftTime[0])) + if ((ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW == st_UserTable.enSerialType) || ('0' == st_UserTable.tszLeftTime[0])) { pSt_ProtocolHdr->wReserve = 255; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); @@ -263,14 +279,22 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n return false; } //如果是次数卡,需要优先处理 - if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME == st_UserTable.enSerialType) + if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == st_UserTable.enSerialType) { __int64x nTime = _ttxoll(st_UserTable.tszLeftTime) - 1; _xstprintf(st_UserTable.tszLeftTime, _X("%lld"), nTime); - Database_SQLite_UserSet(&st_UserTable); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserSet(&st_UserTable); + } + else + { + DBModule_MySQL_UserSet(&st_UserTable); + } + } - else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY == st_UserTable.enSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == st_UserTable.enSerialType) { if (!AuthHelp_MultiLogin_TimeMatch(st_UserTable.st_UserInfo.tszLoginTime)) { @@ -278,7 +302,14 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n __int64x nTime = _ttxoll(st_UserTable.tszLeftTime) - 1; _xstprintf(st_UserTable.tszLeftTime, _X("%lld"), nTime); BaseLib_OperatorTime_TimeToStr(st_UserTable.st_UserInfo.tszLoginTime); - Database_SQLite_UserSet(&st_UserTable); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserSet(&st_UserTable); + } + else + { + DBModule_MySQL_UserSet(&st_UserTable); + } } } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp index 40e8fc89a61275d1087331290d5b81f98b0f069b..92bfa605c2f01df0be0ae02db615a419b3a76cc5 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp @@ -1,6 +1,6 @@ #include "Authorize_Hdr.h" -void CALLBACK XEngine_TaskEvent_Client(LPCXSTR lpszUserAddr, LPCXSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCXSTR lpszLeftDate, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, XPVOID lParam) +void CALLBACK XEngine_TaskEvent_Client(LPCXSTR lpszUserAddr, LPCXSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCXSTR lpszLeftDate, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, XPVOID lParam) { if (nLeftTimer <= 0) { @@ -52,7 +52,14 @@ void CALLBACK XEngine_TaskEvent_Client(LPCXSTR lpszUserAddr, LPCXSTR lpszUserNam _tcsxcpy(st_AuthTime.tszUserName, lpszUserName); _tcsxcpy(st_AuthTime.tszUserAddr, lpszUserAddr); - Database_SQLite_UserLeave(&st_AuthTime); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_UserLeave(&st_AuthTime); + } + else + { + DBModule_MySQL_UserLeave(&st_AuthTime); + } } void CALLBACK XEngine_TaskEvent_Token(XNETHANDLE xhToken, XPVOID lParam) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.h index 7738278840facb70e70eb68b7d1b22915019911f..3217c2488aea8429b54467ba79450c3f6f3d00f5 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.h @@ -1,4 +1,4 @@ #pragma once -void CALLBACK XEngine_TaskEvent_Client(LPCXSTR lpszUserAddr, LPCXSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCXSTR lpszLeftDate, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, XPVOID lParam); +void CALLBACK XEngine_TaskEvent_Client(LPCXSTR lpszUserAddr, LPCXSTR lpszUserName, __int64x nOnlineTimer, __int64x nLeftTimer, LPCXSTR lpszLeftDate, ENUM_AUTHORIZE_MODULE_SERIAL_TYPE enSerialType, ENUM_PROTOCOLDEVICE_TYPE enDeviceType, int nNetType, XPVOID lParam); void CALLBACK XEngine_TaskEvent_Token(XNETHANDLE xhToken, XPVOID lParam); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile index c7532e95105c522272fed8da1fa3b9c18205198c..e94e7382ce4233f2497ce4cce07b73ca86c81b0d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile @@ -8,10 +8,10 @@ RELEASE = 0 UNICODE = 0 LOADHDR = -I ./ LOADSO = -L ../../XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Depend/XEngine_Module/XEngine_InfoReport \ - -L ../../AuthorizeModule_Session -L ../../AuthorizeModule_Database -L ../../AuthorizeModule_Protocol -L ../../AuthorizeModule_Configure -L ../../AuthorizeModule_Help + -L ../../AuthorizeModule_Session -L ../../AuthorizeModule_Database -L ../../AuthorizeModule_Protocol -L ../../AuthorizeModule_Configure -L ../../AuthorizeModule_Help -L ../../AuthorizeModule_CDKey LIB = -lXEngine_InfoReport -ljsoncpp \ - -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_OPenSsl -lXClient_APIHelp -lHelpComponents_Packets -lHelpComponents_DataBase -lHelpComponents_XLog -lHelpComponents_Authorize -lRfcComponents_WSProtocol -lRfcComponents_HttpProtocol -lXEngine_ProcFile -lXEngine_SystemApi \ - -lAuthorizeModule_Session -lAuthorizeModule_Database -lAuthorizeModule_Protocol -lAuthorizeModule_Configure -lAuthorizeModule_Help + -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_OPenSsl -lXClient_APIHelp -lHelpComponents_Packets -lHelpComponents_DataBase -lHelpComponents_XLog -lRfcComponents_WSProtocol -lRfcComponents_HttpProtocol -lXEngine_ProcFile -lXEngine_SystemApi \ + -lAuthorizeModule_Session -lAuthorizeModule_Database -lAuthorizeModule_Protocol -lAuthorizeModule_Configure -lAuthorizeModule_Help -lAuthorizeModule_CDKey LIBEX = OBJECTS = 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_Announcement.o AuthorizeHTTP_Try.o\ diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index ef866c7eae9d43773aa0b4cf750fbfe17538c669..6b981335be491f2ff8896d65c31cfcefa7fd09a8 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -50,7 +50,14 @@ void ServiceApp_Stop(int signo) Session_Authorize_Destroy(); Session_Token_Destroy(); AuthHelp_DynamicCode_Destory(); - Database_SQLite_Destroy(); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_Destroy();//销毁DB数据库服务 + } + else + { + DBModule_MySQL_Destroy();// 销毁MYsql数据库服务 + } exit(0); } } @@ -92,6 +99,7 @@ int main(int argc, char** argv) WSAStartup(MAKEWORD(2, 2), &st_WSAData); #endif bIsRun = true; + FILE* pSt_File = NULL; HELPCOMPONENTS_XLOG_CONFIGURE st_XLogConfig; THREADPOOL_PARAMENT** ppSt_ListTCPThread; THREADPOOL_PARAMENT** ppSt_ListWSThread; @@ -139,13 +147,25 @@ int main(int argc, char** argv) } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化内存池成功")); - if (!Database_SQLite_Init(st_AuthConfig.st_XSql.tszSQLite)) + /*********** 初始化 MySql/DB数据库 ***********/ + if (0 == st_AuthConfig.st_XSql.nDBType) + { //SQLite数据库 + if (!DBModule_SQLite_Init(st_AuthConfig.st_XSql.st_SQLite.tszSQLite)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化DB数据库服务失败,错误:%lX"), DBModule_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化DB数据库服务成功,数据库:%s"), st_AuthConfig.st_XSql.st_SQLite.tszSQLite); + } + else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化数据库服务失败,错误:%lX"), DBModule_GetLastError()); - goto XENGINE_EXITAPP; + if (!DBModule_MySQL_Init((DATABASE_MYSQL_CONNECTINFO *)&st_AuthConfig.st_XSql.st_MYSQL)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化MySql数据库失败,错误:%lX"), DBModule_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化MySql数据库服务成功,数据库:%s"), st_AuthConfig.st_XSql.st_MYSQL.tszDBName); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化数据库服务成功,数据库:%s"), st_AuthConfig.st_XSql.tszSQLite); - if (!Session_Authorize_Init(XEngine_TaskEvent_Client)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化会话客户端服务失败,错误:%lX"), Session_GetLastError()); @@ -295,10 +315,51 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%d,多端登录:%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_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchBanned); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%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_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,网络验证服务运行中,XEngien版本:%s%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_OperatorVer_XNumberStr(), BaseLib_OperatorVer_XTypeStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str()); + pSt_File = _xtfopen(st_AuthConfig.st_XVerification.st_XCDKey.tszKeyFile, _X("rb")); + if (NULL == pSt_File) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,授权文件验证失败,授权文件没有找到")); + } + else + { + //一个简单的示例,没有验证硬件码 + XCHAR tszENCodecBuffer[4096] = {}; + XCHAR tszDECodecBuffer[4096] = {}; + XENGINE_AUTHORIZE_LOCAL st_AuthLocal = {}; + + int nRet = fread(tszENCodecBuffer, 1, sizeof(tszENCodecBuffer), pSt_File); + fclose(pSt_File); + if (OPenSsl_XCrypto_Decoder(tszENCodecBuffer, &nRet, tszDECodecBuffer, st_AuthConfig.st_XVerification.st_XCDKey.tszKeyPass)) + { + Authorize_CDKey_ReadMemory(tszDECodecBuffer, nRet, &st_AuthLocal); + bool bRet = Authorize_CDKey_GetLeftTimer(&st_AuthLocal); + //无论成功失败需要重写CDKEY + memset(tszENCodecBuffer, '\0', sizeof(tszENCodecBuffer)); + memset(tszDECodecBuffer, '\0', sizeof(tszDECodecBuffer)); + Authorize_CDKey_WriteMemory(tszDECodecBuffer, &nRet, &st_AuthLocal); + OPenSsl_XCrypto_Encoder(tszDECodecBuffer, &nRet, (XBYTE*)tszENCodecBuffer, st_AuthConfig.st_XVerification.st_XCDKey.tszKeyPass); + pSt_File = _xtfopen(st_AuthConfig.st_XVerification.st_XCDKey.tszKeyFile, _X("wb")); + fwrite(tszENCodecBuffer, 1, nRet, pSt_File); + fclose(pSt_File); + if (bRet) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,授权文件验证成功,总可运行次数:%s,剩余可运行次数:%lld"), st_AuthLocal.st_AuthRegInfo.tszLeftTime, st_AuthLocal.st_AuthRegInfo.nHasTime); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,授权文件验证失败,总可运行次数:%s,剩余可运行次数:%lld,错误码:%lX"), st_AuthLocal.st_AuthRegInfo.tszLeftTime, st_AuthLocal.st_AuthRegInfo.nHasTime, Authorize_GetLastError()); + } + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,授权文件失败,解密失败,数据不正确")); + } + } + + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,网络验证服务运行中,XEngien版本:%s%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_OperatorVer_XNumberStr(), BaseLib_OperatorVer_XTypeStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str()); while (true) { std::this_thread::sleep_for(std::chrono::seconds(1)); @@ -332,7 +393,14 @@ XENGINE_EXITAPP: Session_Authorize_Destroy(); Session_Token_Destroy(); AuthHelp_DynamicCode_Destory(); - Database_SQLite_Destroy(); + if (0 == st_AuthConfig.st_XSql.nDBType) + { + DBModule_SQLite_Destroy(); + } + else + { + DBModule_MySQL_Destroy(); + } } #ifdef _WINDOWS WSACleanup(); diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 399a78f19d13aac141666ae5ef619856aaf4897c..7c8fc77e5a26d72fa1f313134198e5973069b7bb 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 399a78f19d13aac141666ae5ef619856aaf4897c +Subproject commit 7c8fc77e5a26d72fa1f313134198e5973069b7bb