From 5056a3edf632159540330f2c7f25ee795cf61a2f Mon Sep 17 00:00:00 2001 From: Tina0595 <2825103297@qq.com> Date: Sun, 7 Jul 2024 21:43:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=BB=91=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XEngine_SQL/mysql.sql | 8 +- .../DBModule_MySQL/DBModule_MySQL.cpp | 112 ++++++++------- .../DBModule_SQLite/DBModule_SQLite.cpp | 129 ++++++++++-------- .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 2 +- .../Authorize_HttpTask.cpp | 2 +- .../Authorize_TCPTask.cpp | 3 +- 6 files changed, 137 insertions(+), 119 deletions(-) diff --git a/XEngine_SQL/mysql.sql b/XEngine_SQL/mysql.sql index a148690..22e774e 100644 --- a/XEngine_SQL/mysql.sql +++ b/XEngine_SQL/mysql.sql @@ -41,8 +41,8 @@ CREATE TABLE `Authorize_BannedAddr` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `bEnable` tinyint(4) NOT NULL, `tszIPAddr` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `tszLeftTime` date NULL DEFAULT NULL, - `tszCreateTime` date NOT NULL, + `tszLeftTime` datetime NULL DEFAULT NULL, + `tszCreateTime` datetime NOT NULL, PRIMARY KEY (`ID`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; @@ -58,8 +58,8 @@ CREATE TABLE `Authorize_BannedUser` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `bEnable` tinyint(1) NOT NULL, `tszUserName` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `tszLeftTime` date NULL DEFAULT NULL, - `tszCreateTime` date NOT NULL, + `tszLeftTime` datetime NULL DEFAULT NULL, + `tszCreateTime` datetime NOT NULL, PRIMARY KEY (`ID`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp index 89094b4..088db2c 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp @@ -1519,43 +1519,49 @@ bool CDBModule_MySQL::DBModule_MySQL_BannedExist(AUTHREG_BANNED* pSt_Banned) return false; } - if (nRow <= 0) + if (nRow > 0) { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; - DataBase_MySQL_FreeResult(xhData, xhTable); - return false; - } - - ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); - pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); + ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + pInt_Length = DataBase_MySQL_GetLength(xhData, xhTable); - //ID - int nFliedValue = 0; - if (NULL != ppszResult[nFliedValue]) { - pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); - } - //是否启用 - nFliedValue++; - if (NULL != ppszResult[nFliedValue]) { - pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); - } - - //地址 - nFliedValue++; + //ID + int nFliedValue = 0; + if (NULL != ppszResult[nFliedValue]) { + pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); + } + //是否启用 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) { + pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); + } + //地址 + nFliedValue++; + //过期时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) { + _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); + } - //过期时间 - nFliedValue++; - if (NULL != ppszResult[nFliedValue]) { - _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); - } + //注册时间 + nFliedValue++; + if (NULL != ppszResult[nFliedValue]) { + _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); + } - //注册时间 - nFliedValue++; - if (NULL != ppszResult[nFliedValue]) { - _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); + //如果启用 且 tszLeftTime 大于 0 + if (pSt_Banned->bEnable && _tcsxlen(pSt_Banned->tszLeftTime) > 0) + { + __int64x nTimer = 0; + XCHAR tszStrTime[128]; + memset(tszStrTime, '\0', sizeof(tszStrTime)); + BaseLib_OperatorTime_TimeToStr(tszStrTime); + BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); + if (nTimer < 0) //如果没有超过禁用时间 直接返回 说明存在黑名单 不在执行判断IP地址 + { + return true; + } + } } - DataBase_MySQL_FreeResult(xhData, xhTable); } @@ -1584,7 +1590,7 @@ bool CDBModule_MySQL::DBModule_MySQL_BannedExist(AUTHREG_BANNED* pSt_Banned) if (nRow <= 0) { SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_PARAMENT; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTUSER; DataBase_MySQL_FreeResult(xhData, xhTable); return false; } @@ -1622,31 +1628,31 @@ bool CDBModule_MySQL::DBModule_MySQL_BannedExist(AUTHREG_BANNED* pSt_Banned) { _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); } - - DataBase_MySQL_FreeResult(xhData, xhTable); - } - //处理是否被禁用 - if (!pSt_Banned->bEnable) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTENABLE; - return false; - } - if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) - { - __int64x nTimer = 0; - XCHAR tszStrTime[128]; - memset(tszStrTime, '\0', sizeof(tszStrTime)); - BaseLib_OperatorTime_TimeToStr(tszStrTime); - BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); - if (nTimer > 0) + //处理是否被禁用 + if (!pSt_Banned->bEnable) { SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTENABLE; return false; } + if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) + { + __int64x nTimer = 0; + XCHAR tszStrTime[128]; + memset(tszStrTime, '\0', sizeof(tszStrTime)); + BaseLib_OperatorTime_TimeToStr(tszStrTime); + BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); + if (nTimer < 0) + { + return true; + } + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT; + } + DataBase_MySQL_FreeResult(xhData, xhTable); } - return true; + + return false; } /******************************************************************** 函数名称:DBModule_MySQL_BannedUPDate diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp index 08c33ef..9aae3ef 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp @@ -1389,7 +1389,7 @@ bool CDBModule_SQLite::DBModule_SQLite_BannedList(AUTHREG_BANNED*** pppSt_Banned bool CDBModule_SQLite::DBModule_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) { SQLPacket_IsErrorOccur = false; - //判断用域名是否存在 + //判断用户名是否存在 if (_tcsxlen(pSt_Banned->tszUserName) > 0) { int nRow = 0; @@ -1405,28 +1405,39 @@ bool CDBModule_SQLite::DBModule_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) SQLPacket_dwErrorCode = DataBase_GetLastError(); return false; } - if (nRow <= 0) + if (nRow > 0) { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; - DataBase_SQLite_FreeTable(ppszResult); - return false; + int nFliedValue = nColumn; + //ID + pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); + nFliedValue++; + //是否启用 + pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); + nFliedValue++; + //地址 + nFliedValue++; + //过期时间 + _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); + + //如果启用 且 tszLeftTime 大于 0 + if (pSt_Banned->bEnable && _tcsxlen(pSt_Banned->tszLeftTime) > 0) + { + __int64x nTimer = 0; + XCHAR tszStrTime[128]; + memset(tszStrTime, '\0', sizeof(tszStrTime)); + + BaseLib_OperatorTime_TimeToStr(tszStrTime); + BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); + if (nTimer < 0) //如果没有超过禁用时间 直接返回 说明存在黑名单 不在执行判断IP地址 + { + return true; + } + } } - int nFliedValue = nColumn; - //ID - pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); - nFliedValue++; - //是否启用 - pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); - nFliedValue++; - //地址 - nFliedValue++; - //过期时间 - _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); - nFliedValue++; - //注册时间 - _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); - DataBase_SQLite_FreeTable(ppszResult); + DataBase_SQLite_FreeTable(ppszResult); } //判断IP地址是否存在 if (_tcsxlen(pSt_Banned->tszIPAddr) > 0) @@ -1437,7 +1448,7 @@ bool CDBModule_SQLite::DBModule_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) XCHAR tszSQLStatement[1024]; memset(tszSQLStatement, '\0', 1024); - _xstprintf(tszSQLStatement, _X("SELECT * FROM Authorize_BannedAddr WHERE tszIPAddr = '%s'"), pSt_Banned->tszIPAddr); + _xstprintf(tszSQLStatement, _X("SELECT * FROM Authorize_BannedAddr WHERE tszIPAddr = '%s'"), pSt_Banned->tszIPAddr); if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) { SQLPacket_IsErrorOccur = true; @@ -1447,50 +1458,50 @@ bool CDBModule_SQLite::DBModule_SQLite_BannedExist(AUTHREG_BANNED* pSt_Banned) if (nRow <= 0) { SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; - DataBase_SQLite_FreeTable(ppszResult); + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTUSER; return false; } + int nFliedValue = nColumn; - //ID + //ID pSt_Banned->nID = _ttxoll(ppszResult[nFliedValue]); - nFliedValue++; - //是否启用 + nFliedValue++; + //是否启用 pSt_Banned->bEnable = _ttxoi(ppszResult[nFliedValue]); - nFliedValue++; - //地址 - nFliedValue++; - //过期时间 - _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); - nFliedValue++; - //注册时间 - _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); - DataBase_SQLite_FreeTable(ppszResult); - } - //处理是否被禁用 - if (!pSt_Banned->bEnable) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTENABLE; - return false; - } - if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) - { - __int64x nTimer = 0; - XCHAR tszStrTime[128]; - memset(tszStrTime, '\0', sizeof(tszStrTime)); + nFliedValue++; + //地址 + nFliedValue++; + //过期时间 + _tcsxcpy(pSt_Banned->tszLeftTime, ppszResult[nFliedValue]); + nFliedValue++; + //注册时间 + _tcsxcpy(pSt_Banned->tszCreateTime, ppszResult[nFliedValue]); - BaseLib_OperatorTime_TimeToStr(tszStrTime); - BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); - if (nTimer > 0) - { - SQLPacket_IsErrorOccur = true; - SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT; - return false; - } + //处理是否被禁用 + if (!pSt_Banned->bEnable) + { + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTENABLE; + return false; + } + if (_tcsxlen(pSt_Banned->tszLeftTime) > 0) + { + __int64x nTimer = 0; + XCHAR tszStrTime[128]; + memset(tszStrTime, '\0', sizeof(tszStrTime)); + + BaseLib_OperatorTime_TimeToStr(tszStrTime); + BaseLib_OperatorTimeSpan_GetForStr(pSt_Banned->tszLeftTime, tszStrTime, &nTimer, 3); + if (nTimer < 0) + { + return true; + } + SQLPacket_IsErrorOccur = true; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_TIMELEFT; + } + DataBase_SQLite_FreeTable(ppszResult); } - - return true; + return false; } /******************************************************************** 函数名称:DBModule_SQLite_BannedUPDate 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 81188f5..8d637ca 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 @@ -80,7 +80,7 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 423, "user name is banned"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,注册失败,用户名已经被禁用!"), lpszClientAddr, st_Banned.tszUserName); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,注册失败,用户名或IP地址已经被禁用!"), lpszClientAddr, st_Banned.tszUserName); return false; } //填充写入数据 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index fa73a14..a286baa 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -76,7 +76,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 423, "ip address is banned"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,IP地址被禁用!"), lpszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,用户名或IP地址被禁用!"), lpszClientAddr); return false; } if (0 == _tcsxnicmp(lpszMethodPost, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodPost))) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index b4cb4ac..77ff159 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -59,6 +59,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); _tcsxcpy(st_Banned.tszIPAddr, lpszClientAddr); + _tcsxcpy(st_Banned.tszUserName, lpszMsgBuffer); BaseLib_OperatorIPAddr_SegAddr(st_Banned.tszIPAddr); //是否在黑名单 bool bSuccess = false; @@ -75,7 +76,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n pSt_ProtocolHdr->wReserve = 423; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,IP地址被禁用!"), lpszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,用户名或IP地址被禁用!"), lpszClientAddr); return false; } -- Gitee