diff --git a/CHANGELOG b/CHANGELOG index 4519d724e363e4cb14e04fa122e0e996f5268cbd..f45edd89b2b37c04865086544f807d5660e668b3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,21 @@ +XEngine_Authorize V3.4.0.1001 + +添加:windows窗口特效类 +添加:为管理程序增加提示窗口 +添加:黑名单功能,支持IP和用户名,支持删除,插入,查询 +修改:token登录现在必须设置设备类型 +修改:数据库表名称 +修改:现在数据库初始化不在创建数据库了 +修正:修改用户取消功能不生效的问题 + +added:window effects class +added:tips window for management program +added:black list function +modify:must set device type for token login +modify:database table name +modify:does not create table when sql init +fixed:modify user info cancel does not work +====================================================================================== XEngine_Authorize V3.3.0.1001 增加:自定义序列号导入和导出 diff --git a/README.en.md b/README.en.md index a295b2ffff4084140c2edeb7f46f603b7cde36ba..02b39b572890097a80f5687fd516b9e5459c43a6 100644 --- a/README.en.md +++ b/README.en.md @@ -40,11 +40,12 @@ feature list: 12. support http management api function,you can write web page to implement network authorize management interface by self 13. support third user verification interface 14. support distributed verification authorize function +15. black list management ## install #### XEngine Evn -you must install XEngine,need V7.38 or above,install XEngine can be refer to xengine Readme docment +you must install XEngine,need V7.46 or above,install XEngine can be refer to xengine Readme docment GITEE:https://gitee.com/xyry/libxengine GITHUB:https://github.com/libxengine/xengine @@ -73,8 +74,19 @@ make complie make FLAGS=InstallAll Install File make FLAGS=CleanAll Clear Complie +## how to use +#### server(management) +Windows:complie complete,copy VSCopy_x86 or VSCopy_x64 to your complie dir,should copy depend module when execution complete,and copy XEngine_Release dir all file to complie dir +Linux or macos:it can be execution.... + +#### client +client can be refer XEngine_Apps,and can be refer the docment of protocol,The process should be:register->login->pay->timeout->end. + +#### administrator +The program released now comes with an administrator user, user name: admin password: 123123aa, you need to change the password yourself + ## test server -address:app.xyry.org or 159.75.200.173 +address:app.xyry.org port :tcp port 5300,websocket port 5301,http management port 5302,Transmission verification password: no encryption ## Screenshot of the program diff --git a/README.md b/README.md index 07a4e788bf4a54630c90f408422905ad247ecfeb..a8850845988830e58edd31f0c20005d75f47b238 100644 --- a/README.md +++ b/README.md @@ -40,11 +40,12 @@ V2可以直接升级到V3版本,因为数据库并没有修改,直接替换程 12. 支持HTTP管理接口,可以自己写前端实现网络验证管理界面 13. 支持第三方用户验证接口 14. 分布式验证授权功能支持 +15. 黑名单管理 ## 安装教程 #### XEngine环境 -必须安装XEngine,版本需要V7.38或者以上版本,安装XEngine可以参考其Readme文档 +必须安装XEngine,版本需要V7.46或者以上版本,安装XEngine可以参考其Readme文档 GITEE:https://gitee.com/xyry/libxengine GITHUB:https://github.com/libxengine/xengine @@ -73,8 +74,19 @@ make 编译 make FLAGS=InstallAll 安装库程序 make FLAGS=CleanAll 清理编译 +## 如何使用 +#### 服务端(管理端) +Windows:编译成功后,拷贝VSCopy_x86或者VSCopy_x64 到你的编译目录,执行自动拷贝依赖的模块,然后把XEngine_Release下的文件全部拷贝到编译目录即可 +Linux or macos:直接运行即可 + +#### 客户端 +客户端可以参考XEngine_Apps的例子,也可以参考文档的通信协议自己集成到你的客户端,流程应该是:注册->登录->充值->等待超时->结束. + +#### 管理员 +现在发布的程序自带管理员用户,用户名:admin 密码:123123aa,你需要自己修改密码. + ## 测试服务器 -地址:app.xyry.org 或者 159.75.200.173 +地址:app.xyry.org 端口:tcp端口 5300,websocket端口 5301,http管理端 5302,传输验证密码:无加密 ## 程序截图 @@ -108,16 +120,25 @@ V3版本为全新版本,为了适应过多环境要求开发 ## 开发计划 mfc转qt界面库(我们需要会Qt的人员加入一起开发) +动态验证码 +短信登录,扫码登录 消息公告 支持多端登录 多端登录合并用时 生成会话TOKEN分布式鉴权 +token 自动续期 +密码加密 +关键日志(强日志) +http basic和disgt支持 支持OAuth验证 mysql支持 列表数据分割,用于大型服务器 支持用户和硬件绑定同时验证 支持自定义序列号导入导出 统计用户所有在线时间 -黑名单设置(IP,用户) -支持代理端 -支持绑定自定义内容 \ No newline at end of file +账号封禁与处罚,时间永久 +持久层,redis,memcached等支持 +支持代理端(序列号分发,权限控制) +支持绑定自定义内容 +自动售卡(支付宝,微信) +MQTT协议支持,让你的嵌入式设备也用上授时验证 \ No newline at end of file diff --git a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp index f51e403e2f9bf16dc084ac67ed1fc22a8dd086c3..8b769c483b22bde1f708ff4034aa8bd707339d93 100644 --- a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp +++ b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp @@ -118,7 +118,7 @@ int AuthClient_Register() int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); printf("AuthClient_Register:\n%s\n", ptszMsgBuffer); BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); @@ -138,7 +138,7 @@ int AuthClient_Pay() int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); printf("AuthClient_Pay:\n%s\n", ptszMsgBuffer); BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); @@ -160,7 +160,7 @@ int AuthClient_Login() st_ProtocolHdr.unPacketSize = sizeof(XENGINE_PROTOCOL_USERAUTH); st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL; - st_AuthUser.enDeviceType = ENUM_PROTOCOL_FOR_DEVICE_TYPE_PC; + st_AuthUser.enDeviceType = ENUM_PROTOCOL_FOR_DEVICE_TYPE_PC_WINDOWS; strcpy(st_AuthUser.tszUserName, lpszUser); strcpy(st_AuthUser.tszUserPass, lpszPass); @@ -213,7 +213,7 @@ int AuthClient_GetPass() int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); printf("AuthClient_GetPass:\n%s\n", ptszMsgBuffer); BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); @@ -232,7 +232,7 @@ int AuthClient_GetTime() int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); printf("AuthClient_GetTime:\n%s\n", ptszMsgBuffer); BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); @@ -255,7 +255,7 @@ int AuthClient_Delete() int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); printf("AuthClient_Delete:\n%s\n", ptszMsgBuffer); BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); @@ -274,7 +274,7 @@ int AuthClient_Try() int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBuffer, &nMsgLen); printf("AuthClient_Try:\n%s\n", ptszMsgBuffer); BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); diff --git a/XEngine_Apps/VSCopy_x86.bat b/XEngine_Apps/VSCopy_x86.bat new file mode 100644 index 0000000000000000000000000000000000000000..ab7876b2b8d7f5025c15e737b9998ea0428e4516 --- /dev/null +++ b/XEngine_Apps/VSCopy_x86.bat @@ -0,0 +1,14 @@ +copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_OPenSsl.dll" "./" + +copy /y "%XEngine_Lib32%\XEngine_Client\XClient_Socket.dll" "./" + +copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" + +copy /y "%XEngine_Lib32%\XEngine_HelpComponents\zlib1.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_LibEx\libcrypto-3.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_LibEx\libssl-3.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_LibEx\libcurl.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_LibEx\nghttp2.dll" "./" \ No newline at end of file diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index aafb22259739d02860a1d50ea922741fcbacccb1..5ccb1b127c1fd397759a0bbf816ec95084861c32 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 9a75ba52cf423fc9e2a62f7f4b1b87ea09e32d25..0055345ead644a7e381d11dc32a934c473e972c9 100644 Binary files a/XEngine_Docment/Docment_zh.docx and b/XEngine_Docment/Docment_zh.docx differ diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 6a5b9469ee819f52ba64f4b33796b4a0a159a873..23dfa8080998ae70c1932acf06368e287e14becd 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -45,6 +45,7 @@ "LogLeave":32 }, "XVer":[ + "V3.4.0.1001 Build20221230", "V3.3.0.1001 Build20221101", "V3.2.0.1001 Build20220923", "V3.1.0.1001 Build20220826", diff --git a/XEngine_Release/XEngine_DataBase/SQL_User.db b/XEngine_Release/XEngine_DataBase/SQL_User.db new file mode 100644 index 0000000000000000000000000000000000000000..fb3d51a5b3cfc7e77a2b5f2a6f860858507c63b9 Binary files /dev/null and b/XEngine_Release/XEngine_DataBase/SQL_User.db differ diff --git a/XEngine_SQL/main.sql b/XEngine_SQL/main.sql new file mode 100644 index 0000000000000000000000000000000000000000..111a53b34191cfcd21cfacb6c1fed88c5e75ba8b --- /dev/null +++ b/XEngine_SQL/main.sql @@ -0,0 +1,123 @@ +/* + Navicat Premium Data Transfer + + Source Server : authorize + Source Server Type : SQLite + Source Server Version : 3035005 (3.35.5) + Source Schema : main + + Target Server Type : SQLite + Target Server Version : 3035005 (3.35.5) + File Encoding : 65001 + + Date: 29/12/2022 13:14:11 +*/ + +PRAGMA foreign_keys = false; + +-- ---------------------------- +-- Table structure for Authorize_BannedAddr +-- ---------------------------- +DROP TABLE IF EXISTS "Authorize_BannedAddr"; +CREATE TABLE "Authorize_BannedAddr" ( + "ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "tszIPStart" TEXT, + "tszIPEnd" TEXT, + "tszCreateTime" DATE NOT NULL +); + +-- ---------------------------- +-- Records of Authorize_BannedAddr +-- ---------------------------- + +-- ---------------------------- +-- Table structure for Authorize_BannedUser +-- ---------------------------- +DROP TABLE IF EXISTS "Authorize_BannedUser"; +CREATE TABLE "Authorize_BannedUser" ( + "ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "tszUserName" TEXT, + "tszCreateTime" DATE NOT NULL +); + +-- ---------------------------- +-- Records of Authorize_BannedUser +-- ---------------------------- + +-- ---------------------------- +-- Table structure for Authorize_NetVer +-- ---------------------------- +DROP TABLE IF EXISTS "Authorize_NetVer"; +CREATE TABLE "Authorize_NetVer" ( + "ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "VerSerial" TEXT NOT NULL, + "VerMode" integer NOT NULL, + "TryTime" integer NOT NULL, + "CreateTime" TEXT NOT NULL +); + +-- ---------------------------- +-- Records of Authorize_NetVer +-- ---------------------------- + +-- ---------------------------- +-- Table structure for Authorize_Serial +-- ---------------------------- +DROP TABLE IF EXISTS "Authorize_Serial"; +CREATE TABLE "Authorize_Serial" ( + "ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "UserName" TEXT, + "SerialNumber" TEXT, + "MaxTime" TEXT, + "CardSerialType" integer, + "bIsUsed" boolean, + "CreateTime" TEXT NOT NULL +); + +-- ---------------------------- +-- Records of Authorize_Serial +-- ---------------------------- + +-- ---------------------------- +-- Table structure for Authorize_User +-- ---------------------------- +DROP TABLE IF EXISTS "Authorize_User"; +CREATE TABLE "Authorize_User" ( + "ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "UserName" TEXT, + "Password" TEXT, + "LeftTime" TEXT, + "EmailAddr" TEXT, + "HardCode" TEXT, + "CardSerialType" integer, + "PhoneNumber" integer, + "IDCard" integer, + "nUserLevel" integer, + "CreateTime" TEXT NOT NULL +); + +-- ---------------------------- +-- Records of Authorize_User +-- ---------------------------- +INSERT INTO "Authorize_User" VALUES (1, 'admin', '123123aa', '5', '486179@qq.com', 'DAFD2A2DAD', 1, 13699430000, 511025198881118888, 0, '2022-09-21 15:06:45'); + +-- ---------------------------- +-- Table structure for sqlite_sequence +-- ---------------------------- +DROP TABLE IF EXISTS "sqlite_sequence"; +CREATE TABLE "sqlite_sequence" ( + "name", + "seq" +); + +-- ---------------------------- +-- Records of sqlite_sequence +-- ---------------------------- +INSERT INTO "sqlite_sequence" VALUES ('Authorize_User', 1); + +-- ---------------------------- +-- Auto increment value for Authorize_User +-- ---------------------------- +UPDATE "sqlite_sequence" SET seq = 1 WHERE name = 'Authorize_User'; + +PRAGMA foreign_keys = true; diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def index 60ea7bf0622c1a63550bdfbb913ce8d8d4766e7b..f24c916a78e52e6ac9ad0ee343d3a10a9e3ef1db 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def @@ -21,4 +21,8 @@ EXPORTS Database_SQLite_TryQuery Database_SQLite_TryDelete Database_SQLite_TryClear - Database_SQLite_TrySet \ No newline at end of file + Database_SQLite_TrySet + Database_SQLite_BannedInsert + Database_SQLite_BannedDelete + Database_SQLite_BannedList + Database_SQLite_BannedExist \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Define.h b/XEngine_Source/AuthorizeModule_Database/Database_Define.h index def70a0aa3dcca69b2567f3e40cc6af8d3ee0965..79973e6445c85194029cf9e18b66b95052e88349 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Define.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Define.h @@ -332,4 +332,75 @@ extern "C" BOOL Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONENTS_AUT 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Database_SQLite_TrySet(AUTHREG_NETVER* pSt_AuthVer); \ No newline at end of file +extern "C" BOOL Database_SQLite_TrySet(AUTHREG_NETVER* pSt_AuthVer); +/******************************************************************** +函数名称:Database_SQLite_BannedInsert +函数功能:黑名单列表插入 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Database_SQLite_BannedInsert(AUTHREG_BANNED* pSt_Banned); +/******************************************************************** +函数名称:Database_SQLite_BannedDelete +函数功能:黑名单列表删除 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Database_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned); +/******************************************************************** +函数名称:Database_SQLite_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 + 意思:输出地址禁用列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount); +/******************************************************************** +函数名称:Database_SQLite_BannedExist +函数功能:名单是否存在黑名单列表 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned); \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp index 29c428eac2616771c82223a5fe20d6ce55ed738d..e26e0484f7adef1cd5fd2f47e3e7df3c04f37c1b 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp @@ -43,22 +43,6 @@ CDatabase_SQLite::~CDatabase_SQLite() BOOL CDatabase_SQLite::Database_SQLite_Init(LPCTSTR lpszSQLFile, BOOL bIsChange /* = TRUE */) { SQLPacket_IsErrorOccur = FALSE; - BOOL bIsCreate = FALSE; - //创建数据库 - if (!DataBase_SQLite_Create(lpszSQLFile)) - { - //如果不是这个错误,说明创建数据库失败了 - if (ERROR_HELPCOMPONENTS_DATABASE_SQLITE_CREATE_ISEXIST != DataBase_GetLastError()) - { - SQLPacket_IsErrorOccur = TRUE; - SQLPacket_dwErrorCode = DataBase_GetLastError(); - return FALSE; - } - } - else - { - bIsCreate = TRUE; - } m_bChange = bIsChange; //打开数据库 if (!DataBase_SQLite_Open(&xhData,lpszSQLFile)) @@ -67,29 +51,6 @@ BOOL CDatabase_SQLite::Database_SQLite_Init(LPCTSTR lpszSQLFile, BOOL bIsChange SQLPacket_dwErrorCode = DataBase_GetLastError(); return FALSE; } - //如果是否创建数据库为真,那么我们需要创建数据库 - if (bIsCreate) - { - //如果创建成功了,说明需要创建表 - if (!DataBase_SQLite_Exec(xhData,_T("CREATE TABLE AuthReg_User(ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,UserName TEXT,Password TEXT,LeftTime TEXT,EmailAddr TEXT,HardCode TEXT,CardSerialType integer,PhoneNumber integer,IDCard integer,nUserLevel integer,CreateTime TEXT NOT NULL)"))) - { - SQLPacket_IsErrorOccur = TRUE; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_CREATETABLE; - return FALSE; - } - if (!DataBase_SQLite_Exec(xhData,_T("CREATE TABLE AuthReg_Serial(ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,UserName TEXT,SerialNumber TEXT,MaxTime TEXT,CardSerialType integer,bIsUsed boolean,CreateTime TEXT NOT NULL)"))) - { - SQLPacket_IsErrorOccur = TRUE; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_CREATETABLE; - return FALSE; - } - if (!DataBase_SQLite_Exec(xhData, _T("CREATE TABLE AuthReg_NetVer(ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,VerSerial TEXT NOT NULL,VerMode integer NOT NULL,TryTime integer NOT NULL,CreateTime TEXT NOT NULL)"))) - { - SQLPacket_IsErrorOccur = TRUE; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_CREATETABLE; - return FALSE; - } - } return TRUE; } /******************************************************************** @@ -130,7 +91,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserDelete(LPCTSTR lpszUserName) SQLPacket_IsErrorOccur = FALSE; TCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement,'\0',1024); - _stprintf_s(tszSQLStatement,_T("delete from AuthReg_User where UserName = '%s'"),lpszUserName); + _stprintf_s(tszSQLStatement,_T("delete from Authorize_User where UserName = '%s'"),lpszUserName); //执行 if (!DataBase_SQLite_Exec(xhData,tszSQLStatement)) { @@ -165,7 +126,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserRegister(AUTHREG_USERTABLE* pSt_UserI SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; return FALSE; } - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_User(UserName, Password, LeftTime, EmailAddr, HardCode, CardSerialType, PhoneNumber, IDCard, nUserLevel, CreateTime) values('%s','%s','%s','%s','%s','%d',%lld,%lld,%d,datetime('now', 'localtime'))"), 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); + _stprintf_s(tszSQLStatement, _T("INSERT INTO Authorize_User(UserName, Password, LeftTime, EmailAddr, HardCode, CardSerialType, PhoneNumber, IDCard, nUserLevel, CreateTime) values('%s','%s','%s','%s','%s','%d',%lld,%lld,%d,datetime('now', 'localtime'))"), 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_SQLite_Exec(xhData, tszSQLStatement)) { SQLPacket_IsErrorOccur = TRUE; @@ -201,7 +162,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserQuery(LPCTSTR lpszUserName, AUTHREG_U int nColumn = 0; memset(tszSQLStatement,'\0',1024); - _stprintf_s(tszSQLStatement,_T("select * from AuthReg_User where UserName = '%s'"),lpszUserName); + _stprintf_s(tszSQLStatement,_T("select * from Authorize_User where UserName = '%s'"),lpszUserName); if (!DataBase_SQLite_GetTable(xhData,tszSQLStatement,&ppszResult,&nRow,&nColumn)) { SQLPacket_IsErrorOccur = TRUE; @@ -340,7 +301,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPay(LPCTSTR lpszUserName,LPCTSTR lpsz SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTSUPPORT; return FALSE; } - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_Serial SET UserName = '%s',bIsUsed = '1' WHERE SerialNumber = '%s'"), lpszUserName, lpszSerialName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_Serial SET UserName = '%s',bIsUsed = '1' WHERE SerialNumber = '%s'"), lpszUserName, lpszSerialName); if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { SQLPacket_IsErrorOccur = TRUE; @@ -374,7 +335,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_Time //天数卡只有剩余时间没有的时候才需要做处理 if (pSt_TimeProtocol->nTimeLeft <= 0) { - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '0' WHERE UserName = '%s'"), pSt_TimeProtocol->tszUserName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '0' WHERE UserName = '%s'"), pSt_TimeProtocol->tszUserName); } } if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_MINUTE == pSt_TimeProtocol->enSerialType) @@ -384,12 +345,12 @@ BOOL CDatabase_SQLite::Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_Time { pSt_TimeProtocol->nTimeLeft = 0; } - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%lld' WHERE UserName = '%s'"), pSt_TimeProtocol->nTimeLeft, pSt_TimeProtocol->tszUserName); + _stprintf_s(tszSQLStatement, _T("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) { //次数卡不需要在线时间,直接减去一次就可以了 - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%lld' WHERE UserName = '%s'"), _ttoi64(pSt_TimeProtocol->tszLeftTime) - 1, pSt_TimeProtocol->tszUserName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%lld' WHERE UserName = '%s'"), _ttoi64(pSt_TimeProtocol->tszLeftTime) - 1, pSt_TimeProtocol->tszUserName); } else { @@ -426,7 +387,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable) TCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET Password = '%s',LeftTime = '%s',EmailAddr = '%s',HardCode = '%s',CardSerialType = '%d',PhoneNumber = '%lld',IDCard = '%lld',nUserLevel = '%d',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.tszCreateTime, pSt_UserTable->st_UserInfo.tszUserName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET Password = '%s',LeftTime = '%s',EmailAddr = '%s',HardCode = '%s',CardSerialType = '%d',PhoneNumber = '%lld',IDCard = '%lld',nUserLevel = '%d',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.tszCreateTime, pSt_UserTable->st_UserInfo.tszUserName); //更新用户剩余时间 if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { @@ -474,7 +435,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserI TCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - _stprintf_s(tszSQLStatement, _T("SELECT * FROM AuthReg_User LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); + _stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_User LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) { SQLPacket_IsErrorOccur = TRUE; @@ -564,26 +525,26 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialInsert(LPCTSTR lpszSerialNumber) } if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_MINUTE == enAuthSerialType) { - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_Serial values(NULL,'NOT','%s','%d','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, st_AuthTimer.wMinute, enAuthSerialType); + _stprintf_s(tszSQLStatement, _T("INSERT INTO Authorize_Serial values(NULL,'NOT','%s','%d','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, st_AuthTimer.wMinute, enAuthSerialType); } else if (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY == enAuthSerialType) { - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_Serial values(NULL,'NOT','%s','%d','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, st_AuthTimer.wDay, enAuthSerialType); + _stprintf_s(tszSQLStatement, _T("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) { - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_Serial values(NULL,'NOT','%s','%d','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, st_AuthTimer.wFlags, enAuthSerialType); + _stprintf_s(tszSQLStatement, _T("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) { TCHAR tszLeftTime[MAX_PATH]; memset(tszLeftTime, '\0', MAX_PATH); _stprintf_s(tszLeftTime, _T("%04d-%02d-%02d %02d:%02d:%02d"), st_AuthTimer.wYear, st_AuthTimer.wMonth, st_AuthTimer.wDay, st_AuthTimer.wHour, st_AuthTimer.wMinute, st_AuthTimer.wSecond); - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_Serial values(NULL,'NOT','%s','%s','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, tszLeftTime, enAuthSerialType); + _stprintf_s(tszSQLStatement, _T("INSERT INTO Authorize_Serial values(NULL,'NOT','%s','%s','%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, tszLeftTime, enAuthSerialType); } else { - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_Serial values(NULL,'NOT','%s',0,'%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, enAuthSerialType); + _stprintf_s(tszSQLStatement, _T("INSERT INTO Authorize_Serial values(NULL,'NOT','%s',0,'%d',0,datetime('now', 'localtime'))"), lpszSerialNumber, enAuthSerialType); } if (!DataBase_SQLite_Exec(xhData,tszSQLStatement)) @@ -613,7 +574,7 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialDelete(LPCTSTR lpszSerialNumber) TCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement,'\0',1024); - _stprintf_s(tszSQLStatement,_T("delete from AuthReg_Serial where SerialNumber = '%s'"),lpszSerialNumber); + _stprintf_s(tszSQLStatement,_T("delete from Authorize_Serial where SerialNumber = '%s'"),lpszSerialNumber); //执行 if (!DataBase_SQLite_Exec(xhData,tszSQLStatement)) { @@ -650,7 +611,7 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialQuery(LPCTSTR lpszSerialNumber,LPAU int nColumn = 0; memset(tszSQLStatement,'\0',1024); - _stprintf_s(tszSQLStatement,_T("select * from AuthReg_Serial where SerialNumber = '%s'"),lpszSerialNumber); + _stprintf_s(tszSQLStatement,_T("select * from Authorize_Serial where SerialNumber = '%s'"),lpszSerialNumber); if (!DataBase_SQLite_GetTable(xhData,tszSQLStatement,&ppszResult,&nRow,&nColumn)) { SQLPacket_IsErrorOccur = TRUE; @@ -730,7 +691,7 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE*** ppp memset(tszSQLStatement,'\0',1024); - _stprintf_s(tszSQLStatement, _T("SELECT * FROM AuthReg_Serial LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); + _stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_Serial LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); if (!DataBase_SQLite_GetTable(xhData,tszSQLStatement,&ppszResult,&nRow,&nColumn)) { SQLPacket_IsErrorOccur = TRUE; @@ -799,7 +760,7 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_Seria SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; return FALSE; } - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_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); + _stprintf_s(tszSQLStatement, _T("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_SQLite_Exec(xhData, tszSQLStatement)) { @@ -847,7 +808,7 @@ BOOL CDatabase_SQLite::Database_SQLite_TryInsert(AUTHREG_NETVER* pSt_AuthVer) return FALSE; } //插入数据库 - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_NetVer(VerSerial,VerMode,TryTime,CreateTime) VALUES('%s',%d,%d,datetime('now', 'localtime'))"), pSt_AuthVer->tszVerSerial, pSt_AuthVer->enVerMode, pSt_AuthVer->nTryTime); + _stprintf_s(tszSQLStatement, _T("INSERT INTO Authorize_NetVer(VerSerial,VerMode,TryTime,CreateTime) VALUES('%s',%d,%d,datetime('now', 'localtime'))"), pSt_AuthVer->tszVerSerial, pSt_AuthVer->enVerMode, pSt_AuthVer->nTryTime); if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { SQLPacket_IsErrorOccur = TRUE; @@ -885,7 +846,7 @@ BOOL CDatabase_SQLite::Database_SQLite_TryQuery(AUTHREG_NETVER* pSt_AuthVer) TCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - _stprintf_s(tszSQLStatement, _T("SELECT * FROM AuthReg_NetVer WHERE VerSerial = '%s'"), pSt_AuthVer->tszVerSerial); + _stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_NetVer WHERE VerSerial = '%s'"), pSt_AuthVer->tszVerSerial); if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) { @@ -941,7 +902,7 @@ BOOL CDatabase_SQLite::Database_SQLite_TryDelete(LPCTSTR lpszSerial) TCHAR tszSQLStatement[1024]; memset(tszSQLStatement, '\0', 1024); - _stprintf_s(tszSQLStatement, _T("DELETE * FROM AuthReg_NetVer WHERE VerSerial = '%s'"), lpszSerial); + _stprintf_s(tszSQLStatement, _T("DELETE * FROM Authorize_NetVer WHERE VerSerial = '%s'"), lpszSerial); if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { @@ -979,7 +940,7 @@ BOOL CDatabase_SQLite::Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONE TCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - _stprintf_s(tszSQLStatement, _T("SELECT * FROM AuthReg_NetVer")); + _stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_NetVer")); if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) { @@ -1021,7 +982,7 @@ BOOL CDatabase_SQLite::Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONE if (nThanValue > stl_ListIterator->nTryTime) { memset(tszSQLStatement, '\0', 1024); - _stprintf_s(tszSQLStatement, _T("DELETE * FROM AuthReg_NetVer WHERE VerSerial = '%s'"), stl_ListIterator->tszVerSerial); + _stprintf_s(tszSQLStatement, _T("DELETE * FROM Authorize_NetVer WHERE VerSerial = '%s'"), stl_ListIterator->tszVerSerial); if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { @@ -1036,7 +997,7 @@ BOOL CDatabase_SQLite::Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONE if (enVerMode == stl_ListIterator->enVerMode) { memset(tszSQLStatement, '\0', 1024); - _stprintf_s(tszSQLStatement, _T("DELETE * FROM AuthReg_NetVer WHERE VerSerial = '%s'"), stl_ListIterator->tszVerSerial); + _stprintf_s(tszSQLStatement, _T("DELETE * FROM Authorize_NetVer WHERE VerSerial = '%s'"), stl_ListIterator->tszVerSerial); if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { @@ -1070,7 +1031,7 @@ BOOL CDatabase_SQLite::Database_SQLite_TrySet(AUTHREG_NETVER* pSt_AuthVer) TCHAR tszSQLStatement[1024]; memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_NetVer SET VerMode = '%d',TryTime = '%d',CreateTime = '%s' WHERE VerSerial = '%s'"), pSt_AuthVer->enVerMode, pSt_AuthVer->nTryTime, pSt_AuthVer->tszVerData, pSt_AuthVer->tszVerSerial); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_NetVer SET VerMode = '%d',TryTime = '%d',CreateTime = '%s' WHERE VerSerial = '%s'"), pSt_AuthVer->enVerMode, pSt_AuthVer->nTryTime, pSt_AuthVer->tszVerData, pSt_AuthVer->tszVerSerial); //更新用户表 if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { @@ -1080,6 +1041,300 @@ BOOL CDatabase_SQLite::Database_SQLite_TrySet(AUTHREG_NETVER* pSt_AuthVer) } return TRUE; } +/******************************************************************** +函数名称:Database_SQLite_BannedInsert +函数功能:黑名单列表插入 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CDatabase_SQLite::Database_SQLite_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 (Database_SQLite_BannedExist(pSt_Banned)) + { + return TRUE; + } + TCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + //处理的类型 + if (_tcslen(pSt_Banned->tszUserName) > 0) + { + _stprintf_s(tszSQLStatement, _T("INSERT INTO Authorize_BannedUser(tszUserName,tszCreateTime) VALUES('%s',datetime('now', 'localtime'))"), pSt_Banned->tszUserName); + } + else + { + _stprintf_s(tszSQLStatement, _T("INSERT INTO Authorize_BannedAddr(tszIPStart,tszIPEnd,tszCreateTime) VALUES('%s','%s',datetime('now', 'localtime'))"), pSt_Banned->tszIPStart, pSt_Banned->tszIPEnd); + } + //插入数据库 + if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return FALSE; + } + return TRUE; +} +/******************************************************************** +函数名称:Database_SQLite_BannedDelete +函数功能:黑名单列表删除 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CDatabase_SQLite::Database_SQLite_BannedDelete(AUTHREG_BANNED* pSt_Banned) +{ + SQLPacket_IsErrorOccur = FALSE; + + if (NULL == pSt_Banned) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + return FALSE; + } + TCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', 1024); + //处理的类型 + if (_tcslen(pSt_Banned->tszUserName) > 0) + { + _stprintf_s(tszSQLStatement, _T("DELETE FROM Authorize_BannedUser WHERE tszUserName = '%s'"), pSt_Banned->tszUserName); + } + else + { + if (_tcslen(pSt_Banned->tszIPEnd) > 0) + { + _stprintf_s(tszSQLStatement, _T("DELETE FROM Authorize_BannedAddr WHERE tszIPStart = '%s' AND tszIPEnd = '%s'"), pSt_Banned->tszIPStart, pSt_Banned->tszIPEnd); + } + else + { + _stprintf_s(tszSQLStatement, _T("DELETE FROM Authorize_BannedAddr WHERE tszIPStart = '%s'"), pSt_Banned->tszIPStart); + } + } + //操作数据库 + if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return FALSE; + } + return TRUE; +} +/******************************************************************** +函数名称:Database_SQLite_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 + 意思:输出地址禁用列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CDatabase_SQLite::Database_SQLite_BannedList(AUTHREG_BANNED*** pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int* pInt_AddrCount) +{ + SQLPacket_IsErrorOccur = FALSE; + + int nRow = 0; + int nColumn = 0; + CHAR** ppszResult = NULL; + TCHAR tszSQLStatement[1024]; //SQL语句 + + memset(tszSQLStatement, '\0', 1024); + _stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_BannedAddr")); + + if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return FALSE; + } + int nFliedValue = nColumn; + list stl_ListAddr; + //轮训所有内容 + for (int i = 0; i < nRow; i++) + { + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + //ID + st_Banned.nID = _ttoi64(ppszResult[nFliedValue]); + nFliedValue++; + //起始地址 + _tcscpy(st_Banned.tszIPStart, ppszResult[nFliedValue]); + nFliedValue++; + //结束地址 + _tcscpy(st_Banned.tszIPEnd, ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcscpy(st_Banned.tszTime, ppszResult[nFliedValue]); + nFliedValue++; + + stl_ListAddr.push_back(st_Banned); + } + DataBase_SQLite_FreeTable(ppszResult); + //用户列表 + nRow = 0; + nColumn = 0; + memset(tszSQLStatement, '\0', 1024); + _stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_BannedUser")); + + if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return FALSE; + } + nFliedValue = nColumn; + list stl_ListUser; + //轮训所有内容 + for (int i = 0; i < nRow; i++) + { + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + //ID + st_Banned.nID = _ttoi64(ppszResult[nFliedValue]); + nFliedValue++; + //用户名 + _tcscpy(st_Banned.tszUserName, ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcscpy(st_Banned.tszTime, ppszResult[nFliedValue]); + nFliedValue++; + + stl_ListUser.push_back(st_Banned); + } + DataBase_SQLite_FreeTable(ppszResult); + //导出 + *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; + _tcscpy((*pppSt_BannedAddr)[i]->tszIPStart, stl_ListIterator->tszIPStart); + _tcscpy((*pppSt_BannedAddr)[i]->tszIPEnd, stl_ListIterator->tszIPEnd); + _tcscpy((*pppSt_BannedAddr)[i]->tszTime, stl_ListIterator->tszTime); + } + stl_ListIterator = stl_ListUser.begin(); + for (int i = 0; stl_ListIterator != stl_ListUser.end(); stl_ListIterator++, i++) + { + (*pppSt_BannedUser)[i]->nID = stl_ListIterator->nID; + _tcscpy((*pppSt_BannedUser)[i]->tszUserName, stl_ListIterator->tszUserName); + _tcscpy((*pppSt_BannedUser)[i]->tszTime, stl_ListIterator->tszTime); + } + + stl_ListAddr.clear(); + stl_ListUser.clear(); + return TRUE; +} +/******************************************************************** +函数名称:Database_SQLite_BannedExist +函数功能:名单是否存在黑名单列表 + 参数.一:pSt_Banned + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:要操作的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CDatabase_SQLite::Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) +{ + SQLPacket_IsErrorOccur = FALSE; + + //判断用域名是否存在 + if (_tcslen(pSt_Banned->tszUserName) > 0) + { + int nRow = 0; + int nColumn = 0; + CHAR** ppszResult = NULL; + TCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', 1024); + + _stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_BannedUser WHERE tszUserName = '%s'"), pSt_Banned->tszUserName); + if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return FALSE; + } + DataBase_SQLite_FreeTable(ppszResult); + + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; + return FALSE; + } + } + //判断IP地址是否存在 + if (_tcslen(pSt_Banned->tszIPStart) > 0) + { + int nRow = 0; + int nColumn = 0; + CHAR** ppszResult = NULL; + TCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', 1024); + + _stprintf_s(tszSQLStatement, _T("SELECT * FROM Authorize_BannedAddr WHERE tszIPStart = '%s'"), pSt_Banned->tszIPStart); + if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = DataBase_GetLastError(); + return FALSE; + } + DataBase_SQLite_FreeTable(ppszResult); + + if (nRow <= 0) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; + return FALSE; + } + } + return TRUE; +} ////////////////////////////////////////////////////////////////////////// // 保护函数 ////////////////////////////////////////////////////////////////////////// @@ -1141,7 +1396,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR } //更新用户表的充值卡类型 memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET CardSerialType = '%d' WHERE UserName = '%s'"), en_AuthSerialType, lpszUserName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET CardSerialType = '%d' WHERE UserName = '%s'"), en_AuthSerialType, lpszUserName); //执行用户表更新,因为序列卡类型被改变,所以需要更新。 if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { @@ -1156,7 +1411,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR { //如果是分钟卡 //如果当前的充值卡类型不匹配,那么他以前的充值内容全部都会被删除! - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%d' WHERE UserName = '%s'"), _ttoi(lpszCardTime), lpszUserName); //更新用户表的过期时间 + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), _ttoi(lpszCardTime), lpszUserName); //更新用户表的过期时间 } break; case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY: @@ -1175,14 +1430,14 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR //格式化时间,到超时的时间 _stprintf_s(tszTimer, _T("%04d-%02d-%02d %02d:%02d:%02d"), st_EndTimer.wYear, st_EndTimer.wMonth, st_EndTimer.wDay, st_EndTimer.wHour, st_EndTimer.wMinute, st_EndTimer.wSecond); //更新用户表的过期时间 - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%s' WHERE UserName = '%s'"), tszTimer, lpszUserName); //更新用户表的过期时间 + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%s' WHERE UserName = '%s'"), tszTimer, lpszUserName); //更新用户表的过期时间 } break; case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME: { //如果是次数卡 //更新用户表的过期时间 - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%d' WHERE UserName = '%s'"), _ttoi(lpszCardTime), lpszUserName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), _ttoi(lpszCardTime), lpszUserName); } break; case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM: @@ -1200,7 +1455,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR } _stprintf_s(tszTime, _T("%04d-%02d-%02d %02d:%02d:%02d"), st_AuthTime.wYear, st_AuthTime.wMonth, st_AuthTime.wDay, st_AuthTime.wHour, st_AuthTime.wMinute, st_AuthTime.wSecond); //更新用户表的过期时间 - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%s' WHERE UserName = '%s'"), tszTimer, lpszUserName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%s' WHERE UserName = '%s'"), tszTimer, lpszUserName); } break; default: @@ -1215,7 +1470,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR { int nCardTime = _ttoi(lpszCardTime); nCardTime += _ttoi(lpszUserTime); //我们把用户以前的时间也加上 - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); //更新用户表的过期时间 + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); //更新用户表的过期时间 } break; case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_DAY: @@ -1238,7 +1493,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR //格式化时间,到超时的时间 _stprintf_s(tszTimer, _T("%04d-%02d-%02d %02d:%02d:%02d"), st_EndTimer.wYear, st_EndTimer.wMonth, st_EndTimer.wDay, st_EndTimer.wHour, st_EndTimer.wMinute, st_EndTimer.wSecond); //更新用户表的过期时间 - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%s' WHERE UserName = '%s'"), tszTimer, lpszUserName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%s' WHERE UserName = '%s'"), tszTimer, lpszUserName); } break; case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_TIME: @@ -1246,7 +1501,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR //如果是次数卡 int nCardTime = _ttoi(lpszCardTime); nCardTime += _ttoi(lpszUserTime); //我们把用户以前的时间也加上 - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); //更新用户表的过期时间 + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%d' WHERE UserName = '%s'"), nCardTime, lpszUserName); //更新用户表的过期时间 } break; case ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_CUSTOM: @@ -1265,7 +1520,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR } _stprintf_s(tszTime, _T("%04d-%02d-%02d %02d:%02d:%02d"), st_AuthTime.wYear, st_AuthTime.wMonth, st_AuthTime.wDay, st_AuthTime.wHour, st_AuthTime.wMinute, st_AuthTime.wSecond); //更新用户表的过期时间 - _stprintf_s(tszSQLStatement, _T("UPDATE AuthReg_User SET LeftTime = '%s' WHERE UserName = '%s'"), tszTimer, lpszUserName); + _stprintf_s(tszSQLStatement, _T("UPDATE Authorize_User SET LeftTime = '%s' WHERE UserName = '%s'"), tszTimer, lpszUserName); } break; default: diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h index a5b3cfadaa099c4e6a9fafe09833968787afb701..4a00c1825d4c0b649348cb17d8b5b4a559030023 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h @@ -42,6 +42,11 @@ public: BOOL Database_SQLite_TryDelete(LPCTSTR lpszSerial); BOOL Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enVerMode = ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE_UNKNOW); BOOL Database_SQLite_TrySet(AUTHREG_NETVER* pSt_AuthVer); +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); + BOOL Database_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned); protected: BOOL Database_SQLite_UserPayTime(LPCTSTR lpszUserName, LPCTSTR lpszUserTime, LPCTSTR lpszCardTime, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_AuthSerialType, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE en_AuthUserType); private: diff --git a/XEngine_Source/AuthorizeModule_Database/pch.cpp b/XEngine_Source/AuthorizeModule_Database/pch.cpp index e20218657043680d7864d3edeb9fcac5f4a6e962..2df7b11df2ea1c89ad07db97f84f8d40af3fe53f 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Database/pch.cpp @@ -104,4 +104,20 @@ extern "C" BOOL Database_SQLite_TryClear(int nThanValue, ENUM_HELPCOMPONENTS_AUT extern "C" BOOL Database_SQLite_TrySet(AUTHREG_NETVER * pSt_AuthVer) { return m_SQLAuth.Database_SQLite_TrySet(pSt_AuthVer); +} +extern "C" BOOL Database_SQLite_BannedInsert(AUTHREG_BANNED * pSt_Banned) +{ + return m_SQLAuth.Database_SQLite_BannedInsert(pSt_Banned); +} +extern "C" BOOL Database_SQLite_BannedDelete(AUTHREG_BANNED * pSt_Banned) +{ + return m_SQLAuth.Database_SQLite_BannedDelete(pSt_Banned); +} +extern "C" BOOL Database_SQLite_BannedList(AUTHREG_BANNED * **pppSt_BannedUser, int* pInt_UserCount, AUTHREG_BANNED * **pppSt_BannedAddr, int* pInt_AddrCount) +{ + return m_SQLAuth.Database_SQLite_BannedList(pppSt_BannedUser, pInt_UserCount, pppSt_BannedAddr, pInt_AddrCount); +} +extern "C" BOOL Database_SQLite_BannedExist(AUTHREG_BANNED * pSt_Banned) +{ + return m_SQLAuth.Database_SQLite_BannedExist(pSt_Banned); } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h index 069d7002899d86b938ba7cf5260ccbcee040bade..f19a6aac310ab3fc080eafe1408e85a83e6a6b28 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h @@ -75,4 +75,50 @@ extern "C" BOOL AuthHelp_ClipBoard_Get(CHAR * ptszMsgBuffer, int* pInt_MsgLen, D 备注: *********************************************************************/ extern "C" BOOL AuthHelp_ClipBoard_Clear(); +/************************************************************************/ +/* 窗口类导出定义 */ +/************************************************************************/ +/******************************************************************** +函数名称:AuthHelp_Windows_Dithering +函数功能:窗口抖动函数 + 参数.一:hWnd + In/Out:In + 类型:窗口句柄 + 可空:N + 意思:要设置的窗口 + 参数.二:nDitheringDegree + In/Out:In + 类型:整数型 + 可空:Y + 意思:抖动次数,默认4此 + 参数.三:nDitheringCareer + In/Out:In + 类型:整数型 + 可空:Y + 意思:抖动间隔,默认30毫秒 +返回值 + 类型:逻辑型 + 意思:是否成功抖动 +备注:仿造QQ抖动,支持抖动后播放声音或者不播放,不播放传递NULL +*********************************************************************/ +extern "C" BOOL AuthHelp_Windows_Dithering(HWND hWnd, int nDitheringDegree = 4, int nDitheringCareer = 30); +/******************************************************************** +函数名称:AuthHelp_Windows_CreateTooltip +函数功能:为控件句柄添加提示 + 参数.一:hWnd + In/Out:In + 类型:句柄 + 可空:N + 意思:控件的句柄 + 参数.二:lpszContextOfTip + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:是否添加成功 +返回值 + 类型:逻辑型 + 意思:是否成功添加 +备注: +*********************************************************************/ +extern "C" BOOL AuthHelp_Windows_CreateTooltip(HWND hWnd, LPCTSTR lpszContextOfTip); #endif \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Error.h b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Error.h index 19701554f54ddda1123be65cbcf55593319502d3..2e216acdc2f315ad94dea7cea013669ba41071e6 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Error.h +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Error.h @@ -20,4 +20,11 @@ #define ERROR_AUTHORIZE_MODULE_HELP_CLIPBOARD_OPEN 0x0050002 //打开剪贴板失败 #define ERROR_AUTHORIZE_MODULE_HELP_CLIPBOARD_OWNER 0x0050003 //设置所有者失败 #define ERROR_AUTHORIZE_MODULE_HELP_CLIPBOARD_MALLOC 0x0050004 //申请内存失败 -#define ERROR_AUTHORIZE_MODULE_HELP_CLIPBOARD_GETDATA 0x0050005 //获取内容失败 \ No newline at end of file +#define ERROR_AUTHORIZE_MODULE_HELP_CLIPBOARD_GETDATA 0x0050005 //获取内容失败 +/************************************************************************/ +/* 窗口 */ +/************************************************************************/ +#define ERROR_AUTHORIZE_MODULE_HELP_WINDOW_GETRECT 0x0050010 //获取失败 +#define ERROR_AUTHORIZE_MODULE_HELP_WINDOW_INIT 0x0050011 //初始化窗口失败 +#define ERROR_AUTHORIZE_MODULE_HELP_WINDOW_CREATEWINDOW 0x0050012 //创建窗口失败 +#define ERROR_AUTHORIZE_MODULE_HELP_WINDOW_SETWINDOW 0x0050013 //设置窗口失败 \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Windows/AuthHelp_Windows.cpp b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Windows/AuthHelp_Windows.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4651715ca2247f0a9c0a3c8ad869043d0a3c4cbd --- /dev/null +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Windows/AuthHelp_Windows.cpp @@ -0,0 +1,127 @@ +#include "pch.h" +#include "AuthHelp_Windows.h" +/******************************************************************** +// Created: 2022/12/19 16:38:15 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Help\AuthHelp_Windows\AuthHelp_Windows.cpp +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Help\AuthHelp_Windows +// File Base: AuthHelp_Windows +// File Ext: cpp +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 窗口效果函数 +// History: +*********************************************************************/ +CAuthHelp_Windows::CAuthHelp_Windows() +{ +} +CAuthHelp_Windows::~CAuthHelp_Windows() +{ +} +////////////////////////////////////////////////////////////////////////// +// 公有函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:AuthHelp_Windows_Dithering +函数功能:窗口抖动函数 + 参数.一:hWnd + In/Out:In + 类型:窗口句柄 + 可空:N + 意思:要设置的窗口 + 参数.二:nDitheringDegree + In/Out:In + 类型:整数型 + 可空:Y + 意思:抖动次数,默认4此 + 参数.三:nDitheringCareer + In/Out:In + 类型:整数型 + 可空:Y + 意思:抖动间隔,默认30毫秒 +返回值 + 类型:逻辑型 + 意思:是否成功抖动 +备注:仿造QQ抖动,支持抖动后播放声音或者不播放,不播放传递NULL +*********************************************************************/ +BOOL CAuthHelp_Windows::AuthHelp_Windows_Dithering(HWND hWnd, int nDitheringDegree /* = 4 */, int nDitheringCareer /* = 30 */) +{ + RECT st_Rect = { '\0' };//定义一个矩形 + //获得窗口边框 + if (!GetWindowRect(hWnd, &st_Rect)) + { + Help_IsErrorOccur = TRUE; + Help_dwErrorCode = ERROR_AUTHORIZE_MODULE_HELP_WINDOW_GETRECT; + return FALSE; + } + for (int i = 0; i < nDitheringDegree; i++) + { + Sleep(nDitheringCareer);//延迟。 + MoveWindow(hWnd, st_Rect.left - 1, st_Rect.top - 1, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, TRUE); + Sleep(nDitheringCareer); + MoveWindow(hWnd, st_Rect.left - 1, st_Rect.top, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, TRUE); + Sleep(nDitheringCareer); + MoveWindow(hWnd, st_Rect.left - 1, st_Rect.top + 1, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, TRUE); + Sleep(nDitheringCareer); + MoveWindow(hWnd, st_Rect.left, st_Rect.top + 1, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, TRUE); + Sleep(nDitheringCareer); + MoveWindow(hWnd, st_Rect.left + 1, st_Rect.top + 1, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, TRUE); + Sleep(nDitheringCareer); + MoveWindow(hWnd, st_Rect.left + 1, st_Rect.top, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, TRUE); + Sleep(nDitheringCareer); + MoveWindow(hWnd, st_Rect.left + 1, st_Rect.top - 1, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, TRUE); + Sleep(nDitheringCareer); + MoveWindow(hWnd, st_Rect.left, st_Rect.top - 1, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, TRUE); + } + MoveWindow(hWnd, st_Rect.left, st_Rect.top, st_Rect.right - st_Rect.left, st_Rect.bottom - st_Rect.top, 1);//归为 + return TRUE; +} +/******************************************************************** +函数名称:AuthHelp_Windows_CreateTooltip +函数功能:为控件句柄添加提示 + 参数.一:hWnd + In/Out:In + 类型:句柄 + 可空:N + 意思:控件的句柄 + 参数.二:lpszContextOfTip + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:是否添加成功 +返回值 + 类型:逻辑型 + 意思:是否成功添加 +备注: +*********************************************************************/ +BOOL CAuthHelp_Windows::AuthHelp_Windows_CreateTooltip(HWND hWnd, LPCTSTR lpszContextOfTip) +{ + Help_IsErrorOccur = FALSE; + + TOOLINFO tInfo; + RECT st_Rect = { '\0' }; + + HWND hWndEx = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, 0, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hWnd, 0, GetModuleHandle(NULL), 0); + if (NULL == hWndEx) + { + Help_IsErrorOccur = TRUE; + Help_dwErrorCode = ERROR_AUTHORIZE_MODULE_HELP_WINDOW_CREATEWINDOW; + return FALSE; + } + if (!SetWindowPos(hWndEx, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE)) + { + Help_IsErrorOccur = TRUE; + Help_dwErrorCode = ERROR_AUTHORIZE_MODULE_HELP_WINDOW_SETWINDOW; + return FALSE; + } + GetClientRect(hWnd, &st_Rect); + + tInfo.cbSize = sizeof(TOOLINFO); + tInfo.uFlags = TTF_SUBCLASS; + tInfo.hwnd = hWnd; + tInfo.hinst = GetModuleHandle(NULL); + tInfo.uId = 0; + tInfo.lpszText = (LPTSTR)lpszContextOfTip; + tInfo.rect = st_Rect; + SendMessage(hWndEx, TTM_ADDTOOL, 0, (LPARAM)&tInfo); + return TRUE; +} \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Windows/AuthHelp_Windows.h b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Windows/AuthHelp_Windows.h new file mode 100644 index 0000000000000000000000000000000000000000..3043b1ef9ab69cdd4c2968306049463c73b6ba16 --- /dev/null +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Windows/AuthHelp_Windows.h @@ -0,0 +1,23 @@ +#pragma once +/******************************************************************** +// Created: 2022/12/19 16:37:34 +// File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Help\AuthHelp_Windows\AuthHelp_Windows.h +// File Path: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Help\AuthHelp_Windows +// File Base: AuthHelp_Windows +// File Ext: h +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 窗口效果函数 +// History: +*********************************************************************/ + +class CAuthHelp_Windows +{ +public: + CAuthHelp_Windows(); + ~CAuthHelp_Windows(); +public: + BOOL AuthHelp_Windows_Dithering(HWND hWnd, int nDitheringDegree = 4, int nDitheringCareer = 30); + BOOL AuthHelp_Windows_CreateTooltip(HWND hWnd, LPCTSTR lpszContextOfTip); +private: +}; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.def b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.def index b0ee6423224ad0197a04010b057a2de88b812a4d..09f483e718172ca306a095fd3868b8aa2ff5be3a 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.def +++ b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.def @@ -5,4 +5,7 @@ EXPORTS AuthHelp_ClipBoard_Set AuthHelp_ClipBoard_Get - AuthHelp_ClipBoard_Clear \ No newline at end of file + AuthHelp_ClipBoard_Clear + + AuthHelp_Windows_Dithering + AuthHelp_Windows_CreateTooltip \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj index 19c883e65f0cc5440e4d4db1583800418238c20b..3593e624efe0ea95f579686e693ef54e51d9de16 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj +++ b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj @@ -146,11 +146,13 @@ + + Create diff --git a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj.filters b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj.filters index 2d3595caa1c39b94d0ce52513a2a2b1dd69d632d..e8e8913a862098adc1b37df5236049afdf129531 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj.filters +++ b/XEngine_Source/AuthorizeModule_Help/AuthorizeModule_Help.vcxproj.filters @@ -19,6 +19,12 @@ {f8204c92-f86d-47b3-869b-bc57822a8276} + + {d240ac1c-aaa2-40cf-9b28-dffdc2f25922} + + + {4a1f4a92-dfc7-4a5a-bd47-85349ebdc583} + @@ -36,6 +42,9 @@ 头文件 + + 头文件\AuthHelp_Windows + @@ -47,6 +56,9 @@ 源文件\AuthHelp_ClipBoard + + 源文件\AuthHelp_Windows + diff --git a/XEngine_Source/AuthorizeModule_Help/pch.cpp b/XEngine_Source/AuthorizeModule_Help/pch.cpp index a1c0f0652f9e5bcf0b6a497bce3f4de6b7e4b656..d025dd511ee9a97a4a749513e6888b5dd513988a 100644 --- a/XEngine_Source/AuthorizeModule_Help/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Help/pch.cpp @@ -1,5 +1,6 @@ #include "pch.h" #include "AuthHelp_ClipBoard/AuthHelp_ClipBoard.h" +#include "AuthHelp_Windows/AuthHelp_Windows.h" /******************************************************************** // Created: 2022/08/12 14:14:11 // File Name: D:\XEngine_Authorize\XEngine_Source\AuthorizeModule_Help\pch.cpp @@ -15,6 +16,7 @@ BOOL Help_IsErrorOccur = FALSE; DWORD Help_dwErrorCode = 0; ////////////////////////////////////////////////////////////////////////// CAuthHelp_ClipBoard m_HelpClipBoard; +CAuthHelp_Windows m_HelpWindow; ////////////////////////////////////////////////////////////////////////// extern "C" DWORD AuthHelp_GetLastError(int* pInt_SysError) { @@ -40,4 +42,15 @@ extern "C" BOOL AuthHelp_ClipBoard_Clear() { return m_HelpClipBoard.AuthHelp_ClipBoard_Clear(); } +/************************************************************************/ +/* 窗口类导出定义 */ +/************************************************************************/ +extern "C" BOOL AuthHelp_Windows_Dithering(HWND hWnd, int nDitheringDegree, int nDitheringCareer) +{ + return m_HelpWindow.AuthHelp_Windows_Dithering(hWnd, nDitheringDegree, nDitheringCareer); +} +extern "C" BOOL AuthHelp_Windows_CreateTooltip(HWND hWnd, LPCTSTR lpszContextOfTip) +{ + return m_HelpWindow.AuthHelp_Windows_CreateTooltip(hWnd, lpszContextOfTip); +} #endif \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Help/pch.h b/XEngine_Source/AuthorizeModule_Help/pch.h index 8529f7f739ce7887227f32c9cf8203c0d5c3abce..e0983a0aaaa7c790b7ef977bc48daed2586db0cc 100644 --- a/XEngine_Source/AuthorizeModule_Help/pch.h +++ b/XEngine_Source/AuthorizeModule_Help/pch.h @@ -10,6 +10,7 @@ // 添加要在此处预编译的标头 #include "framework.h" #include +#include #endif //PCH_H #include "AuthHelp_Define.h" #include "AuthHelp_Error.h" @@ -25,4 +26,9 @@ // History: *********************************************************************/ extern BOOL Help_IsErrorOccur; -extern DWORD Help_dwErrorCode; \ No newline at end of file +extern DWORD Help_dwErrorCode; + + +#ifdef _MSC_BUILD +#pragma comment(lib,"Comctl32.lib") +#endif \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def index 417d8f221cf66e660618e56ffb2e6b9899a723b3..a46d1539896a23de485ebc096b113535e640c947 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def +++ b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def @@ -12,6 +12,7 @@ EXPORTS Protocol_Packet_HttpSerialList Protocol_Packet_HttpToken Protocol_Packet_HttpSwitch + Protocol_Packet_HttpBanned Protocol_Parse_WSHdr Protocol_Parse_HttpParseToken @@ -25,4 +26,5 @@ EXPORTS Protocol_Parse_HttpParseOnline Protocol_Parse_HttpParseTime Protocol_Parse_HttpParseSwitch - Protocol_Parse_HttpParsePos \ No newline at end of file + Protocol_Parse_HttpParsePos + Protocol_Parse_HttpParseBanned \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h index 7afa917ea7f59b0d88910755abcd7d318f2c185c..e48ded7d3911a70756fd83dfe4bd76ab89933761 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h @@ -268,6 +268,45 @@ extern "C" BOOL Protocol_Packet_HttpToken(TCHAR* ptszMsgBuffer, int* pInt_MsgLen 备注: *********************************************************************/ extern "C" BOOL Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); +/******************************************************************** +函数名称:Protocol_Packet_HttpBanned +函数功能:HTTP客户端禁用名单包装函数 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:导出包装好的缓冲区 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出包装大小 + 参数.三:pppSt_BannedUser + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要处理的用户列表 + 参数.四:nUserCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入用户列表个数 + 参数.五:pppSt_BannedAddr + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要处理的地址列表 + 参数.六:nAddrCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入地址列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Protocol_Packet_HttpBanned(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_BANNED*** pppSt_BannedUser, int nUserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int nAddrCount); /************************************************************************/ /* 解析类协议 */ /************************************************************************/ @@ -607,4 +646,28 @@ extern "C" BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLe 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd); \ No newline at end of file +extern "C" BOOL Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd); +/******************************************************************** +函数名称:Protocol_Parse_HttpParseBanned +函数功能:解析黑名单协议 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:pSt_AuthBanned + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:导出解析的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Protocol_Parse_HttpParseBanned(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_BANNED* pSt_AuthBanned); \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp index 75386e051705e94329dfd862a94396c55e05d3c4..1cd85207c7bbd45d93463fe7228f19a2cd284690 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp @@ -586,6 +586,86 @@ BOOL CProtocol_Packet::Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pIn st_JsonRoot["bSwitchPay"] = pSt_FunSwitch->bSwitchPay; st_JsonRoot["bSwitchRegister"] = pSt_FunSwitch->bSwitchRegister; + *pInt_MsgLen = st_JsonRoot.toStyledString().length(); + memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen); + return TRUE; +} +/******************************************************************** +函数名称:Protocol_Packet_HttpBanned +函数功能:HTTP客户端禁用名单包装函数 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:导出包装好的缓冲区 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出包装大小 + 参数.三:pppSt_BannedUser + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要处理的用户列表 + 参数.四:nUserCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入用户列表个数 + 参数.五:pppSt_BannedAddr + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要处理的地址列表 + 参数.六:nAddrCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入地址列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CProtocol_Packet::Protocol_Packet_HttpBanned(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_BANNED*** pppSt_BannedUser, int nUserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int nAddrCount) +{ + Protocol_IsErrorOccur = FALSE; + + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT; + return FALSE; + } + Json::Value st_JsonRoot; + Json::Value st_JsonUser; + Json::Value st_JsonAddr; + + for (int i = 0; i < nUserCount; i++) + { + Json::Value st_JsonObject; + st_JsonObject["nID"] = (Json::Value::Int64)(*pppSt_BannedUser)[i]->nID; + st_JsonObject["tszTime"] = (*pppSt_BannedUser)[i]->tszTime; + st_JsonObject["tszUserName"] = (*pppSt_BannedUser)[i]->tszUserName; + st_JsonUser.append(st_JsonObject); + } + for (int i = 0; i < nAddrCount; i++) + { + Json::Value st_JsonObject; + st_JsonObject["nID"] = (Json::Value::Int64)(*pppSt_BannedAddr)[i]->nID; + st_JsonObject["tszIPEnd"] = (*pppSt_BannedAddr)[i]->tszIPEnd; + st_JsonObject["tszIPStart"] = (*pppSt_BannedAddr)[i]->tszIPStart; + st_JsonObject["tszTime"] = (*pppSt_BannedAddr)[i]->tszTime; + st_JsonAddr.append(st_JsonObject); + } + st_JsonRoot["msg"] = "success"; + st_JsonRoot["code"] = 0; + st_JsonRoot["CountAddr"] = st_JsonAddr.size(); + st_JsonRoot["CountUser"] = st_JsonUser.size(); + st_JsonRoot["ArrayUser"] = st_JsonUser; + st_JsonRoot["ArrayAddr"] = st_JsonAddr; + *pInt_MsgLen = st_JsonRoot.toStyledString().length(); memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen); return TRUE; diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h index e48e58f8f198882f3d20bec400d7130baec4ffcb..123ce07be26b6bdb28d95b81de917f2bb30be7b0 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h @@ -27,6 +27,7 @@ public: BOOL Protocol_Packet_HttpSerialList(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_SERIALTABLE*** pppSt_SerialList, int nListCount); BOOL Protocol_Packet_HttpToken(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout); BOOL Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); + BOOL Protocol_Packet_HttpBanned(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_BANNED*** pppSt_BannedUser, int nUserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int nAddrCount); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp index 950f596442927ccc691260e1ac0fd30f7ba98fc7..39a5a2396037df75eefdb412ce9bb3bfaad24f43 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp @@ -866,4 +866,72 @@ BOOL CProtocol_Parse::Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMs *pInt_PosStart = st_JsonRoot["PosStart"].asInt(); *pInt_PosEnd = st_JsonRoot["PosEnd"].asInt(); return TRUE; +} +/******************************************************************** +函数名称:Protocol_Parse_HttpParseBanned +函数功能:解析黑名单协议 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:pSt_AuthBanned + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:导出解析的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CProtocol_Parse::Protocol_Parse_HttpParseBanned(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_BANNED* pSt_AuthBanned) +{ + Protocol_IsErrorOccur = FALSE; + + if ((NULL == lpszMsgBuffer) || (NULL == pSt_AuthBanned)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT; + return FALSE; + } + 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(lpszMsgBuffer, lpszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARSE; + return FALSE; + } + Json::Value st_JsonObject = st_JsonRoot["st_Banned"]; + + if (!st_JsonObject["nID"].isNull()) + { + pSt_AuthBanned->nID = st_JsonObject["nID"].asInt64(); + } + if (!st_JsonObject["tszIPEnd"].isNull()) + { + _tcscpy(pSt_AuthBanned->tszIPEnd, st_JsonObject["tszIPEnd"].asCString()); + } + if (!st_JsonObject["tszIPStart"].isNull()) + { + _tcscpy(pSt_AuthBanned->tszIPStart, st_JsonObject["tszIPStart"].asCString()); + } + if (!st_JsonObject["tszTime"].isNull()) + { + _tcscpy(pSt_AuthBanned->tszTime, st_JsonObject["tszTime"].asCString()); + } + if (!st_JsonObject["tszUserName"].isNull()) + { + _tcscpy(pSt_AuthBanned->tszUserName, st_JsonObject["tszUserName"].asCString()); + } + return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h index ca81eb22f8e387e2f81db455f7f732ce127f9704..52055bc9270d7598a30a68fd0381984ba89e65a2 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h @@ -31,6 +31,7 @@ public: BOOL Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_PROTOCOL_TIME* pSt_ProtocolTime); BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); BOOL Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd); + BOOL Protocol_Parse_HttpParseBanned(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_BANNED* pSt_AuthBanned); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp index f2bf42c211df3b27010ed9fa6f244ec95fbfa360..d8cbff308192045083ac79b8e791614090e23ea6 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp @@ -67,6 +67,10 @@ extern "C" BOOL Protocol_Packet_HttpSwitch(TCHAR * ptszMsgBuffer, int* pInt_MsgL { return m_ProtocolPacket.Protocol_Packet_HttpSwitch(ptszMsgBuffer, pInt_MsgLen, pSt_FunSwitch); } +extern "C" BOOL Protocol_Packet_HttpBanned(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_BANNED * **pppSt_BannedUser, int nUserCount, AUTHREG_BANNED * **pppSt_BannedAddr, int nAddrCount) +{ + return m_ProtocolPacket.Protocol_Packet_HttpBanned(ptszMsgBuffer, pInt_MsgLen, pppSt_BannedUser, nUserCount, pppSt_BannedAddr, nAddrCount); +} /************************************************************************/ /* 解析类协议 */ /************************************************************************/ @@ -121,4 +125,8 @@ extern "C" BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLe extern "C" BOOL Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd) { return m_ProtocolParse.Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, pInt_PosStart, pInt_PosEnd); +} +extern "C" BOOL Protocol_Parse_HttpParseBanned(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_BANNED * pSt_AuthBanned) +{ + return m_ProtocolParse.Protocol_Parse_HttpParseBanned(lpszMsgBuffer, nMsgLen, pSt_AuthBanned); } \ No newline at end of file diff --git a/XEngine_Source/XAuth_Protocol.h b/XEngine_Source/XAuth_Protocol.h index 34038898b511c4a46adba364ac00984bad395259..1787e859dcb85d115275e36cf338f3fdfc0c506a 100644 --- a/XEngine_Source/XAuth_Protocol.h +++ b/XEngine_Source/XAuth_Protocol.h @@ -76,4 +76,13 @@ typedef struct tag_AuthReg_NetVer CHAR tszVerData[64]; //验证时间 ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE enVerMode; //验证方式 int nTryTime; //试用时间 -}AUTHREG_NETVER, * LPAUTHREG_NETVER; \ No newline at end of file +}AUTHREG_NETVER, * LPAUTHREG_NETVER; +//禁止列表 +typedef struct +{ + __int64x nID; //ID + CHAR tszUserName[MAX_PATH]; //用户名 + CHAR tszIPStart[128]; //起始IP + CHAR tszIPEnd[128]; //结束IP + CHAR tszTime[64]; //时间 +}AUTHREG_BANNED, * LPAUTHREG_BANNED; \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp new file mode 100644 index 0000000000000000000000000000000000000000..92142996fde977f5f2502416cf52bae743ca0275 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp @@ -0,0 +1,377 @@ +// Dialog_Banned.cpp: 实现文件 +// + +#include "pch.h" +#include "../XEngine_AuthorizeApp.h" +#include "afxdialogex.h" +#include "Dialog_Banned.h" + + +// CDialog_Banned 对话框 + +IMPLEMENT_DYNAMIC(CDialog_Banned, CDialogEx) + +CDialog_Banned::CDialog_Banned(CWnd* pParent /*=nullptr*/) + : CDialogEx(IDD_DIALOG_BANNED, pParent) +{ + +} + +CDialog_Banned::~CDialog_Banned() +{ +} + +void CDialog_Banned::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_RADIO1, m_RadioIPAddr); + DDX_Control(pDX, IDC_RADIO2, m_RadioUser); + DDX_Control(pDX, IDC_STATIC_TIPS, m_StaticTips); + DDX_Control(pDX, IDC_STATIC_TIPS2, m_StaticIPEnd); + DDX_Control(pDX, IDC_EDIT2, m_EditIPEnd); + DDX_Control(pDX, IDC_LIST1, m_ListAddr); + DDX_Control(pDX, IDC_LIST2, m_ListUser); + DDX_Control(pDX, IDC_EDIT1, m_EditUser); +} + + +BEGIN_MESSAGE_MAP(CDialog_Banned, CDialogEx) + ON_BN_CLICKED(IDC_RADIO1, &CDialog_Banned::OnBnClickedRadio1) + ON_BN_CLICKED(IDC_RADIO2, &CDialog_Banned::OnBnClickedRadio2) + ON_BN_CLICKED(IDC_BUTTON2, &CDialog_Banned::OnBnClickedButton2) + ON_BN_CLICKED(IDC_BUTTON4, &CDialog_Banned::OnBnClickedButton4) + ON_BN_CLICKED(IDC_BUTTON3, &CDialog_Banned::OnBnClickedButton3) +END_MESSAGE_MAP() + + +// CDialog_Banned 消息处理程序 + + +void CDialog_Banned::OnBnClickedRadio1() +{ + // TODO: 在此添加控件通知处理程序代码 + m_StaticTips.SetWindowText(_T("要禁用的IP地址:")); + m_StaticIPEnd.SetWindowText(_T("禁用的结束IP地址:")); + m_StaticIPEnd.ShowWindow(SW_SHOW); + m_EditIPEnd.ShowWindow(SW_SHOW); +} + + +void CDialog_Banned::OnBnClickedRadio2() +{ + // TODO: 在此添加控件通知处理程序代码 + m_StaticTips.SetWindowText(_T("要禁用的用户名:")); + + m_StaticIPEnd.ShowWindow(SW_HIDE); + m_EditIPEnd.ShowWindow(SW_HIDE); +} + + +BOOL CDialog_Banned::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // TODO: 在此添加额外的初始化 + m_StaticTips.SetWindowText(_T("要禁用的用户名:")); + m_RadioUser.SetCheck(BST_CHECKED); + + m_StaticIPEnd.ShowWindow(SW_HIDE); + m_EditIPEnd.ShowWindow(SW_HIDE); + + m_ListAddr.InsertColumn(0, _T("序号"), LVCFMT_LEFT, 80); + m_ListAddr.InsertColumn(1, _T("起始IP地址"), LVCFMT_LEFT, 120); + m_ListAddr.InsertColumn(2, _T("结束IP地址"), LVCFMT_LEFT, 120); + m_ListAddr.InsertColumn(3, _T("创建日期"), LVCFMT_LEFT, 120); + m_ListAddr.SetExtendedStyle(LVS_EX_FULLROWSELECT); + + m_ListUser.InsertColumn(0, _T("序号"), LVCFMT_LEFT, 80); + m_ListUser.InsertColumn(1, _T("用户名"), LVCFMT_LEFT, 120); + m_ListUser.InsertColumn(2, _T("创建日期"), LVCFMT_LEFT, 120); + m_ListUser.SetExtendedStyle(LVS_EX_FULLROWSELECT); + return TRUE; // return TRUE unless you set the focus to a control + // 异常: OCX 属性页应返回 FALSE +} + + +void CDialog_Banned::OnBnClickedButton2() +{ + // TODO: 在此添加控件通知处理程序代码 + CString m_StrIPAddr; + CString m_StrIPPort; + CString m_StrToken; + CString m_StrUser; + CString m_StrIPEnd; + + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); + pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr); + pWnd->m_EditIPPort.GetWindowText(m_StrIPPort); + pWnd->m_EditToken.GetWindowText(m_StrToken); + m_EditUser.GetWindowText(m_StrUser); + m_EditIPEnd.GetWindowText(m_StrIPEnd); + + TCHAR tszUrlAddr[MAX_PATH]; + memset(tszUrlAddr, '\0', MAX_PATH); + + _stprintf(tszUrlAddr, _T("http://%s:%s/auth/banned/insert"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer()); + int nMsgLen = 0; + CHAR* ptszMsgBuffer = NULL; + Json::Value st_JsonRoot; + Json::Value st_JsonObject; + st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer()); + if (BST_CHECKED == m_RadioUser.GetCheck()) + { + st_JsonObject["tszUserName"] = m_StrUser.GetBuffer(); + } + else + { + st_JsonObject["tszIPStart"] = m_StrUser.GetBuffer(); + st_JsonObject["tszIPEnd"] = m_StrIPEnd.GetBuffer(); + } + st_JsonRoot["st_Banned"] = st_JsonObject; + //是否加密 + TCHAR tszPassBuffer[64]; + memset(tszPassBuffer, '\0', sizeof(tszPassBuffer)); + ::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer)); + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + } + else + { + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + } + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + st_JsonRoot.clear(); + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer); + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; + } + } + else + { + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; + } + } + + if (0 == st_JsonRoot["code"].asInt()) + { + Authorize_Help_LogPrint(_T("插入黑名单信息成功")); + } + else + { + Authorize_Help_LogPrint(_T("插入黑名单信息成功")); + } + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + OnBnClickedButton4(); +} + + +void CDialog_Banned::OnBnClickedButton4() +{ + // TODO: 在此添加控件通知处理程序代码 + m_ListUser.DeleteAllItems(); + m_ListAddr.DeleteAllItems(); + + CString m_StrIPAddr; + CString m_StrIPPort; + CString m_StrToken; + + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); + pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr); + pWnd->m_EditIPPort.GetWindowText(m_StrIPPort); + pWnd->m_EditToken.GetWindowText(m_StrToken); + + TCHAR tszUrlAddr[MAX_PATH]; + memset(tszUrlAddr, '\0', MAX_PATH); + + _stprintf(tszUrlAddr, _T("http://%s:%s/auth/banned/list"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer()); + int nMsgLen = 0; + CHAR* ptszMsgBuffer = NULL; + Json::Value st_JsonRoot; + st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer()); + //是否加密 + TCHAR tszPassBuffer[64]; + memset(tszPassBuffer, '\0', sizeof(tszPassBuffer)); + ::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer)); + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + } + else + { + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + } + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + st_JsonRoot.clear(); + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer); + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; + } + } + else + { + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; + } + } + + for (unsigned int i = 0; i < st_JsonRoot["ArrayAddr"].size(); i++) + { + TCHAR tszIndex[10]; + memset(tszIndex, '\0', 10); + _itot_s(i, tszIndex, 10); + + Json::Value st_JsonArray = st_JsonRoot["ArrayAddr"][i]; + + m_ListAddr.InsertItem(i, _T("")); + m_ListAddr.SetItemText(i, 0, tszIndex); + m_ListAddr.SetItemText(i, 1, st_JsonArray["tszIPStart"].asCString()); + m_ListAddr.SetItemText(i, 2, st_JsonArray["tszIPEnd"].asCString()); + m_ListAddr.SetItemText(i, 3, st_JsonArray["tszTime"].asCString()); + } + for (unsigned int i = 0; i < st_JsonRoot["ArrayUser"].size(); i++) + { + TCHAR tszIndex[10]; + memset(tszIndex, '\0', 10); + _itot_s(i, tszIndex, 10); + + Json::Value st_JsonArray = st_JsonRoot["ArrayUser"][i]; + + m_ListUser.InsertItem(i, _T("")); + m_ListUser.SetItemText(i, 0, tszIndex); + m_ListUser.SetItemText(i, 1, st_JsonArray["tszUserName"].asCString()); + m_ListUser.SetItemText(i, 2, st_JsonArray["tszTime"].asCString()); + } + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); +} + + +void CDialog_Banned::OnBnClickedButton3() +{ + CString m_StrUser; + CString m_StrIPStart; + CString m_StrIPEnd; + Json::Value st_JsonRoot; + Json::Value st_JsonObject; + // TODO: 在此添加控件通知处理程序代码 + POSITION pSt_Sition = m_ListUser.GetFirstSelectedItemPosition(); + int nSelect = m_ListUser.GetNextSelectedItem(pSt_Sition); + if (nSelect >= 0) + { + m_StrUser = m_ListUser.GetItemText(nSelect, 1); + st_JsonObject["tszUserName"] = m_StrUser.GetBuffer(); + } + pSt_Sition = m_ListAddr.GetFirstSelectedItemPosition(); + nSelect = m_ListAddr.GetNextSelectedItem(pSt_Sition); + if (nSelect >= 0) + { + m_StrIPStart = m_ListAddr.GetItemText(nSelect, 1); + m_StrIPEnd = m_ListAddr.GetItemText(nSelect, 2); + + st_JsonObject["tszIPStart"] = m_StrIPStart.GetBuffer(); + st_JsonObject["tszIPEnd"] = m_StrIPEnd.GetBuffer(); + } + CString m_StrIPAddr; + CString m_StrIPPort; + CString m_StrToken; + TCHAR tszUrlAddr[MAX_PATH]; + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); + + memset(tszUrlAddr, '\0', MAX_PATH); + pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr); + pWnd->m_EditIPPort.GetWindowText(m_StrIPPort); + pWnd->m_EditToken.GetWindowText(m_StrToken); + + st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer()); + st_JsonRoot["st_Banned"] = st_JsonObject; + int nMsgLen = 0; + CHAR* ptszMsgBuffer = NULL; + _stprintf(tszUrlAddr, _T("http://%s:%s/auth/banned/delete"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer()); + //是否加密 + TCHAR tszPassBuffer[64]; + memset(tszPassBuffer, '\0', sizeof(tszPassBuffer)); + ::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer)); + + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + } + else + { + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + } + st_JsonRoot.clear(); + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer); + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析删除黑名单接口数据错误,无法继续")); + return; + } + } + else + { + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析删除黑名单接口数据错误,无法继续")); + return; + } + } + + if (0 == st_JsonRoot["code"].asInt()) + { + Authorize_Help_LogPrint(_T("删除黑名单数据成功")); + } + else + { + Authorize_Help_LogPrint(_T("删除黑名单数据失败")); + } + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + //刷新 + OnBnClickedButton4(); +} diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.h new file mode 100644 index 0000000000000000000000000000000000000000..e401b232e0e6e2066374c64c334c8e8163c38635 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.h @@ -0,0 +1,39 @@ +#pragma once +#include "afxdialogex.h" + + +// CDialog_Banned 对话框 + +class CDialog_Banned : public CDialogEx +{ + DECLARE_DYNAMIC(CDialog_Banned) + +public: + CDialog_Banned(CWnd* pParent = nullptr); // 标准构造函数 + virtual ~CDialog_Banned(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_DIALOG_BANNED }; +#endif + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedRadio1(); + CButton m_RadioIPAddr; + CButton m_RadioUser; + CStatic m_StaticTips; + afx_msg void OnBnClickedRadio2(); + virtual BOOL OnInitDialog(); + CStatic m_StaticIPEnd; + CEdit m_EditIPEnd; + afx_msg void OnBnClickedButton2(); + afx_msg void OnBnClickedButton4(); + afx_msg void OnBnClickedButton3(); + CListCtrl m_ListAddr; + CListCtrl m_ListUser; + CEdit m_EditUser; +}; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp index 0dfd71c60e7cd1c2928c9cdcaa971d3a51d154bd..b0b8903a315903b4fd5948c11a75852bf9ed19df 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp @@ -118,6 +118,7 @@ void CDialog_Config::OnBnClickedButton1() if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("登录失败,无法继续")); + AuthHelp_Windows_Dithering(hMainWnd); return; } } @@ -126,12 +127,14 @@ void CDialog_Config::OnBnClickedButton1() if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("登录失败,无法继续")); + AuthHelp_Windows_Dithering(hMainWnd); return; } } if (0 != st_JsonRoot["code"].asInt()) { Authorize_Help_LogPrint(_T("登录失败,无法继续")); + AuthHelp_Windows_Dithering(hMainWnd); return; } m_StrToken.Format(_T("%lld"), st_JsonRoot["xhToken"].asUInt64()); @@ -144,8 +147,6 @@ void CDialog_Config::OnBnClickedButton1() m_BtnLogin.EnableWindow(FALSE); m_BtnLogout.EnableWindow(TRUE); m_BtnUpdate.EnableWindow(TRUE); - - } 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 df179c738308f290f827106363226e82084b94f1..32b0037e8d9451a0744467dd33909ff585d86e95 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 @@ -40,6 +40,7 @@ void CDialog_Modify::DoDataExchange(CDataExchange* pDX) BEGIN_MESSAGE_MAP(CDialog_Modify, CDialogEx) ON_BN_CLICKED(IDC_BUTTON2, &CDialog_Modify::OnBnClickedButton2) + ON_BN_CLICKED(IDC_BUTTON3, &CDialog_Modify::OnBnClickedButton3) END_MESSAGE_MAP() @@ -282,3 +283,10 @@ void CDialog_Modify::OnBnClickedButton2() OnOK(); } + + +void CDialog_Modify::OnBnClickedButton3() +{ + // TODO: 在此添加控件通知处理程序代码 + OnCancel(); +} diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.h index 35088e7f21d24c919e2aec881ef032de71f8e3be..d9a9788b5afccc10bc878daa3658aa1e133410a0 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.h @@ -35,4 +35,5 @@ public: CEdit m_EditHardCode; CEdit m_EditCreateTime; CButton m_BtnModify; + afx_msg void OnBnClickedButton3(); }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps index 3132c9f06e4d7b8b3700081abd8ee7e1630213d2..13b5bb6322e5de9c3fa1ef48a44fd59e55e5a94c 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 a7592c54c242dfefb68dfa3a02fea9d4305add5b..96ee716d879e06f95033ecfe95a4d99fd47c5f92 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 26763d51242e7e5a7c82abeb312a80167fcbeaae..04aa153627c014759c15161a454836cf53356579 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj @@ -191,6 +191,7 @@ + @@ -205,6 +206,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 9f87650bd7a097b5a3eb0d887dd89bb0c43d9fc2..22babc0e8deae92d736517ae89e78d0a2d027e01 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters @@ -63,6 +63,9 @@ 头文件\Authorize_Dialog + + 头文件\Authorize_Dialog + @@ -92,6 +95,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 bc356f27c55a009b3ef6bfe11be8f6ebd18b9ab1..ce241c74060c545c2c6c6bb7a54e7d526214339c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp @@ -28,6 +28,8 @@ void CXEngineAuthorizeAppDlg::DoDataExchange(CDataExchange* pDX) CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_TAB1, m_TabWindows); DDX_Control(pDX, IDC_EDIT1, m_EditLog); + DDX_Control(pDX, IDC_BUTTON1, m_BtnLogSave); + DDX_Control(pDX, IDC_BUTTON2, m_BtnLogClear); } BEGIN_MESSAGE_MAP(CXEngineAuthorizeAppDlg, CDialogEx) @@ -66,14 +68,16 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() WSAStartup(MAKEWORD(2, 2), &st_WSAData); m_TabWindows.InsertItem(0, _T("服务配置")); - m_TabWindows.InsertItem(1, _T("用户管理")); - m_TabWindows.InsertItem(2, _T("序列号管理")); - m_TabWindows.InsertItem(3, _T("功能开关")); - + m_TabWindows.InsertItem(1, _T("功能开关")); + m_TabWindows.InsertItem(2, _T("用户管理")); + m_TabWindows.InsertItem(3, _T("序列号管理")); + m_TabWindows.InsertItem(4, _T("黑名单配置")); + m_DlgConfig.Create(IDD_DIALOG_CONFIG, &m_TabWindows); + m_DlgSwitch.Create(IDD_DIALOG_SWITCH, &m_TabWindows); m_DlgUser.Create(IDD_DIALOG_USER, &m_TabWindows); m_DlgSerial.Create(IDD_DIALOG_SERIAL, &m_TabWindows); - m_DlgSwitch.Create(IDD_DIALOG_SWITCH, &m_TabWindows); + m_DlgBanned.Create(IDD_DIALOG_BANNED, &m_TabWindows); //调整子对话框在父窗口中的位置 CRect st_Rect; m_TabWindows.GetClientRect(&st_Rect); @@ -83,17 +87,22 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() st_Rect.right -= 1; //设置子对话框尺寸并移动到指定位置 m_DlgConfig.MoveWindow(&st_Rect); + m_DlgSwitch.MoveWindow(&st_Rect); m_DlgUser.MoveWindow(&st_Rect); m_DlgSerial.MoveWindow(&st_Rect); - m_DlgSwitch.MoveWindow(&st_Rect); + m_DlgBanned.MoveWindow(&st_Rect); //分别设置隐藏和显示 m_DlgConfig.ShowWindow(TRUE); + m_DlgSwitch.ShowWindow(FALSE); m_DlgUser.ShowWindow(FALSE); m_DlgSerial.ShowWindow(FALSE); - m_DlgSwitch.ShowWindow(FALSE); + m_DlgBanned.ShowWindow(FALSE); m_TabWindows.SetCurSel(0); hMainWnd = m_hWnd; + + AuthHelp_Windows_CreateTooltip(m_BtnLogSave.m_hWnd, _T("保存日志为文件")); + AuthHelp_Windows_CreateTooltip(m_BtnLogClear.m_hWnd, _T("清空日志窗口")); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } @@ -142,27 +151,39 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult { case 0: m_DlgConfig.ShowWindow(TRUE); + m_DlgSwitch.ShowWindow(FALSE); m_DlgUser.ShowWindow(FALSE); m_DlgSerial.ShowWindow(FALSE); - m_DlgSwitch.ShowWindow(FALSE); + m_DlgBanned.ShowWindow(FALSE); break; case 1: m_DlgConfig.ShowWindow(FALSE); - m_DlgUser.ShowWindow(TRUE); + m_DlgSwitch.ShowWindow(TRUE); + m_DlgUser.ShowWindow(FALSE); m_DlgSerial.ShowWindow(FALSE); - m_DlgSwitch.ShowWindow(FALSE); + m_DlgBanned.ShowWindow(FALSE); break; case 2: m_DlgConfig.ShowWindow(FALSE); - m_DlgUser.ShowWindow(FALSE); - m_DlgSerial.ShowWindow(TRUE); m_DlgSwitch.ShowWindow(FALSE); + m_DlgUser.ShowWindow(TRUE); + m_DlgSerial.ShowWindow(FALSE); + m_DlgBanned.ShowWindow(FALSE); break; case 3: m_DlgConfig.ShowWindow(FALSE); + m_DlgSwitch.ShowWindow(FALSE); + m_DlgUser.ShowWindow(FALSE); + m_DlgSerial.ShowWindow(TRUE); + m_DlgBanned.ShowWindow(FALSE); + break; + case 4: + m_DlgConfig.ShowWindow(FALSE); + m_DlgSwitch.ShowWindow(FALSE); m_DlgUser.ShowWindow(FALSE); m_DlgSerial.ShowWindow(FALSE); - m_DlgSwitch.ShowWindow(TRUE); + m_DlgBanned.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 fec042d60dcfbda698eee25299d6b5d019383fb6..446b4c1d7deeaf13c27f01ca45c60bb889bbfb03 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h @@ -32,13 +32,16 @@ protected: DECLARE_MESSAGE_MAP() public: CDialog_Config m_DlgConfig; + CDialog_Switch m_DlgSwitch; CDialog_User m_DlgUser; CDialog_Serial m_DlgSerial; - CDialog_Switch m_DlgSwitch; + CDialog_Banned m_DlgBanned; public: CTabCtrl m_TabWindows; afx_msg void OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult); CEdit m_EditLog; afx_msg void OnBnClickedButton1(); afx_msg void OnBnClickedButton2(); + CButton m_BtnLogSave; + CButton m_BtnLogClear; }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h index b2a6b75affa2856aa88277c9b13d063ce1de0a64..00025d1e0167f47fcade309e83407e26c916328e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h @@ -34,6 +34,7 @@ using namespace std; #include "Authorize_Dialog/Dialog_Serial.h" #include "Authorize_Dialog/Dialog_Modify.h" #include "Authorize_Dialog/Dialog_Switch.h" +#include "Authorize_Dialog/Dialog_Banned.h" #include "Authorize_Help/Authorize_Help.h" extern HWND hMainWnd; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h index 16a25ce6d5c8eac61f29f8b0ae5eb59bb7226cbd..e41e37e3d48990669a436a0ff6351c5c5f85e126 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h @@ -9,6 +9,7 @@ #define IDD_DIALOG_SERIAL 134 #define IDD_DIALOG_MODIFY 136 #define IDD_DIALOG_SWITCH 138 +#define IDD_DIALOG_BANNED 140 #define IDC_TAB1 1000 #define IDC_EDIT1 1001 #define IDC_EDIT2 1002 @@ -17,6 +18,7 @@ #define IDC_EDIT4 1004 #define IDC_BUTTON1 1005 #define IDC_EDIT5 1005 +#define IDC_LIST2 1005 #define IDC_BUTTON2 1006 #define IDC_BUTTON3 1007 #define IDC_EDIT10 1007 @@ -35,7 +37,9 @@ #define IDC_RADIO1 1015 #define IDC_RADIO2 1016 #define IDC_RADIO3 1017 +#define IDC_STATIC_TIPS 1017 #define IDC_RADIO4 1018 +#define IDC_STATIC_TIPS2 1018 #define IDC_RADIO5 1019 #define IDC_RADIO6 1020 #define IDC_RADIO7 1021 @@ -47,9 +51,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 140 +#define _APS_NEXT_RESOURCE_VALUE 142 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1017 +#define _APS_NEXT_CONTROL_VALUE 1018 #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 c76ed0f43c88e16c65152a1e951601f8f4b2550a..141f1135be4e6596c2cc9dc057ab700889f53ef4 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 @@ -17,19 +17,28 @@ BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, TCHAR** pptszList, int if (0 == _tcsnicmp(lpszAPILogin, tszURLValue, _tcslen(lpszAPILogin))) { - //http://app.xyry.org:5302/api?function=login&user=123123aa&pass=123123 + //http://app.xyry.org:5302/api?function=login&user=123123aa&pass=123123&device=36 TCHAR tszUserName[128]; TCHAR tszUserPass[128]; + TCHAR tszDeviceType[128]; XNETHANDLE xhToken = 0; AUTHREG_USERTABLE st_UserTable; memset(tszUserName, '\0', sizeof(tszUserName)); memset(tszUserPass, '\0', sizeof(tszUserPass)); + memset(tszDeviceType, '\0', sizeof(tszDeviceType)); memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); + if (nListCount < 3) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "request parament is incorrent"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("客户端:%s,登录失败,请求参数不正确"), lpszClientAddr); + return FALSE; + } BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszURLKey, tszUserName); BaseLib_OperatorString_GetKeyValue(pptszList[2], "=", tszURLKey, tszUserPass); - + BaseLib_OperatorString_GetKeyValue(pptszList[3], "=", tszURLKey, tszDeviceType); //是否使用了第三方验证 if (st_AuthConfig.st_XLogin.bPassAuth) { @@ -42,7 +51,7 @@ BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, TCHAR** pptszList, int _tcscpy(st_AuthProtocol.tszUserName, tszUserName); _tcscpy(st_AuthProtocol.tszUserPass, tszUserPass); - st_AuthProtocol.enDeviceType = ENUM_PROTOCOL_FOR_DEVICE_TYPE_WEB; + st_AuthProtocol.enDeviceType = (ENUM_PROTOCOLDEVICE_TYPE)_ttoi(tszDeviceType); Protocol_Packet_HttpUserPass(tszSDBuffer, &nSDLen, &st_AuthProtocol); APIHelp_HttpRequest_Custom(_T("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogin, tszSDBuffer, &nHTTPCode, &ptszMsgBuffer, &nHTTPLen); @@ -134,7 +143,7 @@ BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, TCHAR** pptszList, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,用户名:%s,登录失败,客户端类型错误"), lpszClientAddr, tszUserName); return FALSE; } - st_UserTable.enDeviceType = ENUM_PROTOCOL_FOR_DEVICE_TYPE_WEB; + st_UserTable.enDeviceType = (ENUM_PROTOCOLDEVICE_TYPE)_ttoi(tszDeviceType); if (!Session_Authorize_Insert(lpszClientAddr, &st_UserTable, XENGINE_AUTH_APP_NETTYPE_HTTP)) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 500, "server is error"); 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 new file mode 100644 index 0000000000000000000000000000000000000000..21fc1d5ca14c184ff93b65419f041bd184ef4c69 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp @@ -0,0 +1,50 @@ +#include "../Authorize_Hdr.h" + +BOOL XEngine_AuthorizeHTTP_Banned(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen) +{ + int nSDLen = 4096; + TCHAR tszSDBuffer[4096]; + LPCTSTR lpszAPIInsert = _T("insert"); + LPCTSTR lpszAPIDelete = _T("delete"); + LPCTSTR lpszAPIList = _T("list"); + + memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); + + if (0 == _tcsnicmp(lpszAPIInsert, lpszAPIName, _tcslen(lpszAPIInsert))) + { + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + + Protocol_Parse_HttpParseBanned(lpszMsgBuffer, nMsgLen, &st_Banned); + Database_SQLite_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, _T("HTTP客户端:%s,插入禁用列表成功,禁用的用户:%s,禁用的IP地址:%s - %s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPStart, st_Banned.tszIPEnd); + } + else if (0 == _tcsnicmp(lpszAPIDelete, lpszAPIName, _tcslen(lpszAPIDelete))) + { + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + + Protocol_Parse_HttpParseBanned(lpszMsgBuffer, nMsgLen, &st_Banned); + Database_SQLite_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, _T("HTTP客户端:%s,删除禁用列表成功,删除禁用的用户:%s,删除禁用的IP地址:%s - %s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPStart, st_Banned.tszIPEnd); + } + else if (0 == _tcsnicmp(lpszAPIList, lpszAPIName, _tcslen(lpszAPIList))) + { + int nCountAddr = 0; + int nCountUser = 0; + AUTHREG_BANNED** ppSt_BannedUser; + AUTHREG_BANNED** ppSt_BannedAddr; + + Database_SQLite_BannedList(&ppSt_BannedUser, &nCountUser, &ppSt_BannedAddr, &nCountAddr); + 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); + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_BannedUser, nCountUser); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,查询禁用列表成功,禁用的用户个数:%d,禁用的IP地址个数:%d"), lpszClientAddr, nCountUser, nCountAddr); + } + return TRUE; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.h new file mode 100644 index 0000000000000000000000000000000000000000..3fa918c6f550f173c4e77656a30e4be015a26378 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.h @@ -0,0 +1,3 @@ +#pragma once + +BOOL XEngine_AuthorizeHTTP_Banned(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file 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 1f390f90716bf440db772efac2dbd54fb2a77ee5..8fabbbbfa22dd3b947f1bd65fc21397c69517df5 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 @@ -51,6 +51,18 @@ BOOL XEngine_AuthorizeHTTP_User(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPC return FALSE; } Protocol_Parse_HttpParseTable(lpszMsgBuffer, nMsgLen, &st_UserTable); + //是否在黑名单 + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + + _tcscpy(st_Banned.tszUserName, st_UserTable.st_UserInfo.tszUserName); + if (Database_SQLite_BannedExist(&st_Banned)) + { + 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, _T("HTTP客户端:%s,用户名:%s,注册失败,用户名已经被禁用!"), lpszClientAddr, st_Banned.tszUserName); + return FALSE; + } //填充写入数据 _stprintf(st_UserTable.tszLeftTime, _T("%d"), st_AuthConfig.st_XVerification.nTryTime); st_UserTable.enSerialType = (ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE)st_AuthConfig.st_XVerification.nTryMode; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 6998e9428fbb34f77bb3ae8a49d4cc895d2b7d05..470a8af239a376c7594a162402d914a88355e042 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -81,6 +81,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #include "AuthorizeHTTP_Post/AuthorizeHTTP_Serial.h" #include "AuthorizeHTTP_Post/AuthorizeHTTP_Pass.h" #include "AuthorizeHTTP_Post/AuthorizeHTTP_Switch.h" +#include "AuthorizeHTTP_Post/AuthorizeHTTP_Banned.h" #include "AuthorizeHTTP_Get/AuthorizeHTTP_Token.h" #ifdef _WINDOWS diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index 396d764e8b2d1364bf7d0c4733ddb99102be11ce..ff46ecb7204bd9ac74b1f8ba3575890473559099 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -57,6 +57,19 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + + _tcscpy(st_Banned.tszIPStart, lpszClientAddr); + BaseLib_OperatorIPAddr_SegAddr(st_Banned.tszIPStart); + //是否在黑名单 + if (Database_SQLite_BannedExist(&st_Banned)) + { + 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, _T("客户端:%s,登录连接被阻止,IP地址被禁用!"), lpszClientAddr); + return FALSE; + } if (0 == _tcsnicmp(lpszMethodPost, pSt_HTTPParament->tszHttpMethod, _tcslen(lpszMethodPost))) { TCHAR tszAPIType[64]; @@ -69,6 +82,7 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int LPCTSTR lpszAPIVerUser = _T("user"); LPCTSTR lpszAPIVerPass = _T("pass"); LPCTSTR lpszAPIVerSwitch = _T("switch"); + LPCTSTR lpszAPIVerBanned = _T("banned"); memset(tszAPIType, '\0', sizeof(tszAPIType)); memset(tszAPIVer, '\0', sizeof(tszAPIVer)); @@ -157,6 +171,28 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int } XEngine_AuthorizeHTTP_Switch(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } + else if (0 == _tcsnicmp(lpszAPIVerBanned, tszAPIVer, _tcslen(lpszAPIVerBanned))) + { + AUTHREG_USERTABLE st_UserTable; + memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); + //验证权限 + Protocol_Parse_HttpParseToken(lpszMsgBuffer, nMsgLen, &xhToken); + if (!Session_Token_Get(xhToken, &st_UserTable)) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "Unauthorized"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,请求的API:%s 失败,因为没有经过验证"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return FALSE; + } + if (0 != st_UserTable.st_UserInfo.nUserLevel) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return FALSE; + } + XEngine_AuthorizeHTTP_Banned(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); + } } else if (0 == _tcsnicmp(lpszMethodGet, pSt_HTTPParament->tszHttpMethod, _tcslen(lpszMethodGet))) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index d131d0db5ba5f7d26d51808b9dbf31613d4799fd..dae045dd283be413356c00d490deda16e94b6caf 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -55,6 +55,20 @@ BOOL XEngine_Client_TCPTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int n TCHAR tszSDBuffer[2048]; memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); + AUTHREG_BANNED st_Banned; + memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); + + _tcscpy(st_Banned.tszIPStart, lpszClientAddr); + BaseLib_OperatorIPAddr_SegAddr(st_Banned.tszIPStart); + //是否在黑名单 + 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, _T("客户端:%s,登录连接被阻止,IP地址被禁用!"), lpszClientAddr); + return FALSE; + } if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN == pSt_ProtocolHdr->unOperatorCode) { AUTHREG_USERTABLE st_UserTable; @@ -66,7 +80,7 @@ BOOL XEngine_Client_TCPTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int n pSt_ProtocolHdr->unPacketSize = 0; pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN; - + //是否允许登录 if (!st_FunSwitch.bSwitchLogin) { pSt_ProtocolHdr->wReserve = 503; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile index 4b7bc9e9f65defeb0eae863747c28b9311bb7cb9..b79e54675c9d2e6bf0353cfb36ee323ffe2a8a86 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile @@ -10,7 +10,7 @@ LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool LIBEX = -ldl -lpthread LOADSO = -Wl,-rpath=./,--disable-new-dtags LIBINCLUDE = Authorize_Config.o Authorize_Net.o Authorize_Task.o Authorize_TCPTask.o Authorize_WSTask.o Authorize_HttpTask.o XEngine_AuthorizeService.o \ - AuthorizeHTTP_Client.o AuthorizeHTTP_Serial.o AuthorizeHTTP_User.o AuthorizeHTTP_Pass.o AuthorizeHTTP_Switch.o \ + AuthorizeHTTP_Client.o AuthorizeHTTP_Serial.o AuthorizeHTTP_User.o AuthorizeHTTP_Pass.o AuthorizeHTTP_Switch.o AuthorizeHTTP_Banned.o \ AuthorizeHTTP_Token.o ifeq ($(OS),Windows_NT) @@ -65,6 +65,8 @@ AuthorizeHTTP_Pass.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp AuthorizeHTTP_Switch.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp +AuthorizeHTTP_Banned.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp AuthorizeHTTP_Token.o:./AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj index c6a20e734990c30b6c656f67167ec3fa95062cb4..6ddc6b9fe74b7a849a1872d187032c8723628cff 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj @@ -151,6 +151,7 @@ + @@ -166,6 +167,7 @@ + diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters index fed22309aee3c35118b6b79f02e706205b47a0e8..5fec005c71304150ec63e9242cb1f956fa8b8ff1 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters @@ -66,6 +66,9 @@ 源文件\AuthorizeHTTP_Post + + 源文件\AuthorizeHTTP_Post + @@ -107,5 +110,8 @@ 头文件\AuthorizeHTTP_Post + + 头文件\AuthorizeHTTP_Post + \ No newline at end of file