diff --git a/.github/workflows/linuxbuild.yml b/.github/workflows/linuxbuild.yml new file mode 100644 index 0000000000000000000000000000000000000000..03ae11eb4c170442b6de1461fbf0c0db8fdabdb0 --- /dev/null +++ b/.github/workflows/linuxbuild.yml @@ -0,0 +1,64 @@ +name: ubuntu build workflows + +on: + push: + branches: [ "develop" ] + pull_request: + branches: [ "develop" ] + +permissions: + contents: read + +jobs: + build: + strategy: + # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. + fail-fast: false + matrix: + include: + - os: ubuntu-22.04 + #- os: ubuntu-24.04 + runs-on: ${{ matrix.os }} + + steps: + # 检出您的主仓库代码 + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + # 检出依赖的xengine仓库到指定的xengine目录 + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + run: | + git submodule init + git submodule update + + # 设置依赖库的环境变量 + - name: Set up Dependency Environment Variables + run: | + cd libxengine + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 3 + cd .. + #编译 + - name: make + run: | + cd XEngine_Source + make + make FLAGS=InstallAll + make FLAGS=CleanAll + + make RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + - name: test + run: | + cd XEngine_Release + ./XEngine_AuthorizeService -t \ No newline at end of file diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml new file mode 100644 index 0000000000000000000000000000000000000000..d0d4ed55066897cd6541a0cfb465907943cf4f97 --- /dev/null +++ b/.github/workflows/macbuild.yml @@ -0,0 +1,64 @@ +name: macos build workflows + +on: + push: + branches: [ "develop" ] + pull_request: + branches: [ "develop" ] + +permissions: + contents: read + +jobs: + build: + strategy: + matrix: + include: + - os: macos-13 + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + # 检出依赖的xengine仓库到指定的xengine目录 + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + run: | + git submodule init + git submodule update + + - name: brew install + run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + + # 设置依赖库的环境变量 + - name: Set up Dependency Environment Variables + run: | + cd libxengine + chmod 777 * + ./XEngine_LINEnv.sh -i 3 + cd .. + #编译 + - name: make debug + run: | + cd XEngine_Source + make PLATFORM=mac + make PLATFORM=mac FLAGS=InstallAll + make PLATFORM=mac FLAGS=CleanAll + - name: make release + run: | + cd XEngine_Source + make PLATFORM=mac RELEASE=1 + make PLATFORM=mac FLAGS=InstallAll + make PLATFORM=mac FLAGS=CleanAll + - name: test + run: | + cd XEngine_Release + ./XEngine_AuthorizeService -t diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml new file mode 100644 index 0000000000000000000000000000000000000000..b28225e64ab4f508420bf593aa5ddc6acd259ca3 --- /dev/null +++ b/.github/workflows/msbuild.yml @@ -0,0 +1,77 @@ +name: windows build workflows + +on: + push: + branches: [ "develop" ] + pull_request: + branches: [ "develop" ] + +permissions: + contents: read + +jobs: + build: + strategy: + # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. + fail-fast: false + matrix: + configuration: [Debug ,Release] + platform: [x86 ,x64] + + runs-on: windows-latest # 最新的 Windows 环境 + + steps: + # 检出您的主仓库代码 + - name: Checkout main repository code + uses: actions/checkout@v4 + with: + ref: 'develop' + + # 检出依赖的xengine仓库到指定的xengine目录 + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: xengine + + - name: sub module checkout (opensource) + run: | + git submodule init + git submodule update + shell: pwsh + + # 设置依赖库的环境变量 + - name: Set up Dependency Environment Variables + run: | + echo "XENGINE_INCLUDE=${{ github.workspace }}/xengine" | Out-File -FilePath $env:GITHUB_ENV -Append + echo "XENGINE_LIB32=${{ github.workspace }}/xengine/XEngine_Windows/x86" | Out-File -FilePath $env:GITHUB_ENV -Append + echo "XENGINE_LIB64=${{ github.workspace }}/xengine/XEngine_Windows/x64" | Out-File -FilePath $env:GITHUB_ENV -Append + shell: pwsh + + # 配置 MSBuild 的路径,准备构建 VC++ 项目 + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v1.0.2 + #编译 + - name: Build Solution + run: msbuild XEngine_Source/XEngine.sln /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }} + #测试 + - name: Conditional Step for x86 Release + if: matrix.configuration == 'Release' && matrix.platform == 'x86' + run: | + cp -r XEngine_Source/Release/*.dll XEngine_Release/ + cp -r XEngine_Source/Release/*.exe XEngine_Release/ + cp -r XEngine_Source/VSCopy_x86.bat XEngine_Release/ + cd XEngine_Release + ./VSCopy_x86.bat + ./XEngine_AuthorizeService.exe -t + shell: pwsh + - name: Conditional Step for x86 Debug + if: matrix.configuration == 'Debug' && matrix.platform == 'x86' + run: | + cp -r XEngine_Source/Debug/*.dll XEngine_Release/ + cp -r XEngine_Source/Debug/*.exe XEngine_Release/ + cp -r XEngine_Source/VSCopy_x86.bat XEngine_Release/ + cd XEngine_Release + ./VSCopy_x86.bat + ./XEngine_AuthorizeService.exe -t + shell: pwsh diff --git a/CHANGELOG b/CHANGELOG index 54c92205f2ae0495b37f1b89434a7e212dae331d..c0671bf94fa73d5c0aee2f5ae6c554e2733d9be8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,41 @@ +XEngine_Authorize V3.14.0.1001 + +增加:支持无限制多端登录了 +增加:工作流CI支持 +增加:当tcp或者websocket登录的时候会返回token了 +增加:普通用户token开关支持 +修改:websocket支持解析token字段了 +修改:现在http post方法不在需要验证用户,使用token替代 +修改:可以通过token获取用户过期时间 +修改:公告和动态码合并到token任务中 +修改:注册管理界面默认设置5次次数验证了 +修改:多端登录序列类型进行了验证 +修正:删除用户需要验证用户了 +修正:某些时候崩溃 +修正:公告信息可以为NULL的情况 +修正:快速验证不允许硬件码为NULL了 +修正:子模块状态错误 +修正:在MACOS构建运行失败的问题 +删除:XEngine_AuthorizeHTTP_Announcement列举处理方法函数 + +added:unlimited login type with multi supported now +added:workflow +added:reply token handle when tcp and websocket login +added:token auth for normal user of switch +modify:web socket support parse token field +modify:The post method processing flow now only requires token instead of verifying user and password +modify:get user left time by token +modify:merge notice and dynamic code and token task +modify:set time 5 default value with cdkey init and choice time add serial for management app +modify:multi login serial type is verification now +fixed:verification user information for delete user +fixed:some crashed +fixed:the problem that notice can be set null +fixed:does not allow code is null when fast verification +fixed:sub module status is incorrect +fixed:build error on mac +delete:XEngine_AuthorizeHTTP_Announcement list process from get method +================================================================ XEngine_Authorize V3.13.0.1001 增加:管理程序支持CDKEY创建,打开,授权,初始化 diff --git a/README.en.md b/README.en.md index f45276916974f3ae4d9fcfa05397d4742aed3da9..456917ff55fcd15081959b99fef98aae40b88311 100644 --- a/README.en.md +++ b/README.en.md @@ -51,11 +51,11 @@ feature list: #### XEngine Evn you must install XEngine,need V8.15 or above,install XEngine can be refer to xengine Readme docment -GITEE:https://gitee.com/xyry/libxengine -GITHUB:https://github.com/libxengine/xengine +GITEE:https://gitee.com/libxengine/libxengine +GITHUB:https://github.com/libxengine/libxengine ##### fast to deployment -git clone https://gitee.com/xyry/libxengine.git or git clone https://github.com/libxengine/xengine.git +git clone https://gitee.com/libxengine/libxengine.git or git clone https://github.com/libxengine/libxengine.git window Exection XEngine_WINEnv.bat Linux Exection:sudo ./XEngine_LINEnv.sh -i 3 Macos Exection:./XEngine_LINEnv.sh -i 3 diff --git a/README.md b/README.md index 12d045afb002a9ee61929a332eb1ea441f3112c5..82c281730c7c6266965199f16b15292e53d8df42 100644 --- a/README.md +++ b/README.md @@ -59,11 +59,11 @@ XEngine_Authorize #### XEngine环境 必须安装XEngine,版本需要V8.15或者以上版本,安装XEngine可以参考其Readme文档 -GITEE:https://gitee.com/xyry/libxengine -GITHUB:https://github.com/libxengine/xengine +GITEE:https://gitee.com/libxengine/libxengine +GITHUB:https://github.com/libxengine/libxengine ###### 快速部署 -git clone https://gitee.com/xyry/libxengine.git 或者 git clone https://github.com/libxengine/xengine.git +git clone https://gitee.com/libxengine/libxengine.git 或者 git clone https://github.com/libxengine/libxengine.git window执行XEngine_WINEnv.bat 脚本. Linux执行:sudo ./XEngine_LINEnv.sh -i 3 macos执行:./XEngine_LINEnv.sh -i 3 @@ -72,7 +72,7 @@ macos执行:./XEngine_LINEnv.sh -i 3 由于依赖的子模块,在你checkout仓库后,在仓库目录下执行下面的命令拉取子模块 git submodule init git submodule update -如果github访问失败,也可以在XEngine_Source\XEngine_Depend 下直接clone项目:git clone https://gitee.com/xengine/XEngine_OPenSource.git +如果github访问失败,你也可以clone该项目,在主目录下使用命令:git clone https://gitee.com/xengine/XEngine_OPenSource.git XEngine_Source/XEngine_Depend #### Windows 使用VS打开并且编译,支持WINDOWS 7SP1以上系统 diff --git a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp index 42316c2b0a85870cb3e7adf88c446c1755c8358f..9528c0c7bb93ec6f7ffd904f47fbfcb1d67ea6ee 100644 --- a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp +++ b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp @@ -80,6 +80,7 @@ XHTHREAD AuthClient_Thread() if (0 == st_ProtocolHdr.wReserve) { printf(_X("登录成功\n")); + xhToken = st_ProtocolHdr.xhToken; } else { @@ -182,7 +183,7 @@ int AuthClient_Pay() } int AuthClient_DynamicCode() { - LPCXSTR lpszUrl = _X("http://127.0.0.1:5302/api?function=dcode&user=get"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5302/api?function=dcode"); int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; @@ -284,7 +285,8 @@ int AuthClient_Login() } int AuthClient_Notice() { - LPCXSTR lpszUrl = _X("http://127.0.0.1:5302/api?function=notice"); + XCHAR tszURLStr[MAX_PATH] = {}; + _xstprintf(tszURLStr, _T("http://127.0.0.1:5302/api?function=notice&token=%lld"), xhToken); int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; @@ -294,7 +296,7 @@ int AuthClient_Notice() Json::CharReaderBuilder st_ReaderBuilder; std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); - APIClient_Http_Request(_X("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nMsgLen); + APIClient_Http_Request(_X("GET"), tszURLStr, NULL, NULL, &ptszMsgBuffer, &nMsgLen); if (bEncrypto) { XCHAR tszDEBuffer[2048] = {}; @@ -373,7 +375,8 @@ int AuthClient_GetTime() { Json::Value st_JsonRoot; Json::Value st_JsonObject; - LPCXSTR lpszUrl = _X("http://127.0.0.1:5302/auth/user/time"); + XCHAR tszURLStr[MAX_PATH] = {}; + _xstprintf(tszURLStr, _T("http://127.0.0.1:5302/api?function=time&token=%lld"),xhToken); st_JsonObject["tszUserName"] = lpszUser; st_JsonObject["tszUserPass"] = lpszPass; @@ -389,7 +392,7 @@ int AuthClient_GetTime() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszENBuffer, lpszPass); - APIClient_Http_Request(_X("POST"), lpszUrl, tszENBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIClient_Http_Request(_X("GET"), tszURLStr, tszENBuffer, NULL, &ptszMsgBuffer, &nMsgLen); OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDEBuffer, lpszPass); printf("AuthClient_GetTime:\n%s\n", tszDEBuffer); @@ -397,7 +400,7 @@ int AuthClient_GetTime() } else { - APIClient_Http_Request(_X("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIClient_Http_Request(_X("GET"), tszURLStr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); printf("AuthClient_GetTime:\n%s\n", ptszMsgBuffer); BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); } @@ -449,8 +452,8 @@ int AuthClient_Try() LPCXSTR lpszSerialNet = _X("cpuid:112233"); //通过此可以做临时网络验证,安全性比本地临时验证高 LPCXSTR lpszUrl = _X("http://127.0.0.1:5302/auth/user/try"); - st_JsonObject["tszSerial"] = lpszSerialNet; - st_JsonRoot["st_UserTry"] = st_JsonObject; + st_JsonObject["tszVSerial"] = lpszSerialNet; + st_JsonRoot["st_VERTemp"] = st_JsonObject; int nMsgLen = 0; XCHAR* ptszMsgBuffer = NULL; @@ -502,7 +505,7 @@ int main() AuthClient_GetPass(); AuthClient_GetTime(); - std::this_thread::sleep_for(std::chrono::seconds(600)); + std::this_thread::sleep_for(std::chrono::seconds(10)); AuthClient_Delete(); AuthClient_Try(); diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 232688fa463b8dc67238d7e0f49d1260da056232..2940152116fd1a27ef7bbff9cbf575e5e387d9b7 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 a66c0f0142068791ac1db7cda682864f8a023d06..fddd479e886fa613abfbcf2b3363eee01d17dbe8 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_SwitchConfig.json b/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json index d6de5d2f64a0701f16acc1dd178221db3561a044..e74109294530eaa3287e44d4ef2f9af3c1d71f9d 100644 --- a/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json @@ -10,5 +10,6 @@ "bSwitchDCode":false, "bSwitchMulti":true, "bSwitchTry":true, - "bSwitchBanned":true + "bSwitchBanned":true, + "bSwitchTokenLogin":true } \ No newline at end of file diff --git a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json index f092b97af9e34d7ccc49755c3bb2441a63f8c672..4bde3daf8de73697c53e08a0d5d38d39b544ca2e 100644 --- a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json @@ -1,5 +1,6 @@ { "XVer":[ + "V3.14.0.1001 Build20240920", "V3.13.0.1001 Build20240715", "V3.12.1.1001 Build20240621", "V3.12.0.1001 Build20240513", diff --git a/XEngine_Source/AuthorizeModule_CDKey/Makefile b/XEngine_Source/AuthorizeModule_CDKey/Makefile index 90dedde13b3d12230ccab4d8f665c87c07e62b38..d42338a349b7a2d9d7a969423b440704c2f30510 100644 --- a/XEngine_Source/AuthorizeModule_CDKey/Makefile +++ b/XEngine_Source/AuthorizeModule_CDKey/Makefile @@ -16,8 +16,13 @@ ifeq ($(RELEASE),1) FLAGS = -c DEBUG = else -FLAGS = -c -lc_p -DEBUG = -g -pg + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g + else + FLAGS = -c -lc_p + DEBUG = -g -pg + endif endif ifeq ($(UNICODE),1) diff --git a/XEngine_Source/AuthorizeModule_Client/Makefile b/XEngine_Source/AuthorizeModule_Client/Makefile index bfbc80660e73c0d5d6c703480fe1d9f5c97574df..e6e73d7f7c758e85ad3340ad483b7dd1abbc0fc1 100644 --- a/XEngine_Source/AuthorizeModule_Client/Makefile +++ b/XEngine_Source/AuthorizeModule_Client/Makefile @@ -16,8 +16,13 @@ ifeq ($(RELEASE),1) FLAGS = -c DEBUG = else -FLAGS = -c -lc_p -DEBUG = -g -pg + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g + else + FLAGS = -c -lc_p + DEBUG = -g -pg + endif endif ifeq ($(UNICODE),1) diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index 6b9aaa96c9cd5d8bccc722bda5495fc4d8942dbe..f4ca512cd4d5474a9f7d5157d8fbf1a8762d6123 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -38,6 +38,8 @@ typedef struct XCHAR tszKeyFile[MAX_PATH]; //本地CDKEY文件地址 XCHAR tszKeyPass[MAX_PATH]; //本地CDKEY密码 }st_XCDKey; + int nCheckTimeNumber; //检测次数 + int nCheckTimeout; //超时时间 int nTokenTimeout; //TOKEN登录超时时间 int nDynamicTimeout; //动态码超时时间 int nVerTime; //验证时间 @@ -49,7 +51,7 @@ typedef struct { bool bHTTPAuth; //是否开启HTTP授权登录,支持HTTP授权验证 bool bPassAuth; //是否启用三方认证 - int nMultiMode; //多端登录模式,0按照平台(PC,WEB,PAD,PHONE 4种),1按照类型(每种都可以) + int nMultiMode; //多端登录模式,0按照平台(PC,WEB,PAD,PHONE 4种),1按照类型(每种都可以),2无限制 struct { XCHAR tszPassLogin[MAX_PATH]; //三方认证登录验证 @@ -118,7 +120,8 @@ typedef struct bool bSwitchDCode; //动态验证码 bool bSwitchMulti; //多端登录开关 bool bSwitchTry; //临时验证 - bool bSwitchBanned; //黑名单 + bool bSwitchBanned; //黑名单 + bool bSwitchTokenLogin; //TOKEN开关 }XENGINE_FUNCTIONSWITCH; ////////////////////////////////////////////////////////////////////////// // 导出的函数 diff --git a/XEngine_Source/AuthorizeModule_Configure/Makefile b/XEngine_Source/AuthorizeModule_Configure/Makefile index 5651201bfac938587770acd82c3ccdf02953ffb4..23fc96c0ed486434531dabc5ab6be787a28529c3 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Makefile +++ b/XEngine_Source/AuthorizeModule_Configure/Makefile @@ -16,8 +16,13 @@ ifeq ($(RELEASE),1) FLAGS = -c DEBUG = else -FLAGS = -c -lc_p -DEBUG = -g -pg + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g + else + FLAGS = -c -lc_p + DEBUG = -g -pg + endif endif ifeq ($(UNICODE),1) diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 4de9063d356fc187cc7da8660aab092fb530d9ae..12717fc3e414e27aa596b61b0f8ab3a6026b408e 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -342,5 +342,6 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_Switch(LPCXSTR lpszConfigFile, pSt_ServerConfig->bSwitchMulti = st_JsonRoot["bSwitchMulti"].asBool(); pSt_ServerConfig->bSwitchTry = st_JsonRoot["bSwitchTry"].asBool(); pSt_ServerConfig->bSwitchBanned = st_JsonRoot["bSwitchBanned"].asBool(); + pSt_ServerConfig->bSwitchTokenLogin = st_JsonRoot["bSwitchTokenLogin"].asBool(); return true; } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp index 03b3ad5139dca45a66ac99cc22beb8d1b7bd6778..753c65d71e34fe1fd53dd60af0eb338afa7f77ea 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp @@ -73,22 +73,22 @@ bool CDBModule_MySQL::DBModule_MySQL_Destroy() /******************************************************************** 函数名称:DBModule_MySQL_UserDelete 函数功能:删除一个用户从数据库中 - 参数.一:lpszUserName + 参数.一:pSt_UserInfo In/Out:In - 类型:常量字符指针 + 类型:数据结构指针 可空:N - 意思:要删除的用户 + 意思:输入删除用户信息 返回值 类型:逻辑型 意思:是否删除成功 备注: *********************************************************************/ -bool CDBModule_MySQL::DBModule_MySQL_UserDelete(LPCXSTR lpszUserName) +bool CDBModule_MySQL::DBModule_MySQL_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - _xstprintf(tszSQLStatement, _X("delete from `Authorize_User` where UserName = '%s'"), lpszUserName); + _xstprintf(tszSQLStatement, _X("DELETE FROM `Authorize_User` WHERE UserName = '%s' AND Password = '%s' AND EmailAddr = '%s' AND IDCard = '%lld'"), pSt_UserInfo->tszUserName, pSt_UserInfo->tszUserPass, pSt_UserInfo->tszEMailAddr, pSt_UserInfo->nIDNumber); //执行 if (!DataBase_MySQL_Execute(xhData, tszSQLStatement)) { diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h index b2df45f5ec36a329aefeee69159ff1ea4d443fd6..f0957e243be088e5788caaee87abac4e092789fc 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.h @@ -23,7 +23,7 @@ public: bool DBModule_MySQL_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector, bool bIsChange = true); //初始化 bool DBModule_MySQL_Destroy(); //销毁 public: - bool DBModule_MySQL_UserDelete(LPCXSTR lpszUserName); //删除用户 + bool DBModule_MySQL_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); //删除用户 bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo); //用户注册 bool DBModule_MySQL_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 bool DBModule_MySQL_UserPay(LPCXSTR lpszUserName, LPCXSTR lpszSerialName); //充值卡充值 diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp index 8468868d5fe9754791f0b75f3ab74476aec7da23..a350bbdf0fd7728e259a6c0191a10b7af302c327 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.cpp @@ -76,22 +76,22 @@ bool CDBModule_SQLite::DBModule_SQLite_Destroy() /******************************************************************** 函数名称:DBModule_SQLite_UserDelete 函数功能:删除一个用户从数据库中 - 参数.一:lpszUserName + 参数.一:pSt_UserInfo In/Out:In - 类型:常量字符指针 + 类型:数据结构指针 可空:N - 意思:要删除的用户 + 意思:输入删除用户信息 返回值 类型:逻辑型 意思:是否删除成功 备注: *********************************************************************/ -bool CDBModule_SQLite::DBModule_SQLite_UserDelete(LPCXSTR lpszUserName) +bool CDBModule_SQLite::DBModule_SQLite_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo) { SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - _xstprintf(tszSQLStatement, _X("delete from Authorize_User where UserName = '%s'"), lpszUserName); + _xstprintf(tszSQLStatement, _X("DELETE FROM `Authorize_User` WHERE UserName = '%s' AND Password = '%s' AND EmailAddr = '%s' AND IDCard = '%lld'"), pSt_UserInfo->tszUserName, pSt_UserInfo->tszUserPass, pSt_UserInfo->tszEMailAddr, pSt_UserInfo->nIDNumber); //执行 if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h index a47bfd48585a365eb2d02e36044bb0e0dd51b1f4..02580455c1e4e061f9bd7fb459b2df2aef0e0bab 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_SQLite/DBModule_SQLite.h @@ -23,7 +23,7 @@ public: bool DBModule_SQLite_Init(LPCXSTR lpszSQLFile, bool bIsChange = true); //初始化 bool DBModule_SQLite_Destroy(); //销毁 public: - bool DBModule_SQLite_UserDelete(LPCXSTR lpszUserName); //删除用户 + bool DBModule_SQLite_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); //删除用户 bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE*pSt_UserInfo); //用户注册 bool DBModule_SQLite_UserQuery(LPCXSTR lpszUserName, AUTHREG_USERTABLE* pSt_UserInfo = NULL); //用户查询 bool DBModule_SQLite_UserPay(LPCXSTR lpszUserName,LPCXSTR lpszSerialName); //充值卡充值 diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Define.h b/XEngine_Source/AuthorizeModule_Database/Database_Define.h index cceec65e93e566794e9b28d2783dee3588d0ec67..a25c0735f3ae51386d93d83281120547a1270717 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Define.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Define.h @@ -48,17 +48,17 @@ extern "C" bool DBModule_SQLite_Destroy(); /******************************************************************** 函数名称:DBModule_SQLite_UserDelete 函数功能:删除一个用户从数据库中 - 参数.一:lpszUserName + 参数.一:pSt_UserInfo In/Out:In - 类型:常量字符指针 + 类型:数据结构指针 可空:N - 意思:要删除的用户 + 意思:输入删除用户信息 返回值 类型:逻辑型 意思:是否删除成功 备注: *********************************************************************/ -extern "C" bool DBModule_SQLite_UserDelete(LPCXSTR lpszUserName); +extern "C" bool DBModule_SQLite_UserDelete(XENGINE_PROTOCOL_USERINFO *pSt_UserInfo); /******************************************************************** 函数名称:DBModule_SQLite_UserRegister 函数功能:用户注册处理数据库语句函数 @@ -537,17 +537,17 @@ extern "C" bool DBModule_MySQL_Destroy(); /******************************************************************** 函数名称:DBModule_MySQL_UserDelete 函数功能:删除一个用户从数据库中 - 参数.一:lpszUserName + 参数.一:pSt_UserInfo In/Out:In - 类型:常量字符指针 + 类型:数据结构指针 可空:N - 意思:要删除的用户 + 意思:输入删除用户信息 返回值 类型:逻辑型 意思:是否删除成功 备注: *********************************************************************/ -extern "C" bool DBModule_MySQL_UserDelete(LPCXSTR lpszUserName); +extern "C" bool DBModule_MySQL_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo); /******************************************************************** 函数名称:DBModule_MySQL_UserRegister 函数功能:用户注册处理数据库语句函数 diff --git a/XEngine_Source/AuthorizeModule_Database/Makefile b/XEngine_Source/AuthorizeModule_Database/Makefile index fd211e5c5980cd1076eb674a973525eaf0426bc8..1830aac783960f033fc8e3c15ee0f97e6c8dbee0 100644 --- a/XEngine_Source/AuthorizeModule_Database/Makefile +++ b/XEngine_Source/AuthorizeModule_Database/Makefile @@ -16,8 +16,13 @@ ifeq ($(RELEASE),1) FLAGS = -c DEBUG = else -FLAGS = -c -lc_p -DEBUG = -g -pg + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g + else + FLAGS = -c -lc_p + DEBUG = -g -pg + endif endif ifeq ($(UNICODE),1) diff --git a/XEngine_Source/AuthorizeModule_Database/pch.cpp b/XEngine_Source/AuthorizeModule_Database/pch.cpp index fea7d2964b49a1d6376ca40f8d5c9aa5675a16e6..19cf22c2e6d87ecbb29e6ef9ddd571822b731bac 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Database/pch.cpp @@ -39,9 +39,9 @@ extern "C" bool DBModule_SQLite_Destroy() { return m_DBSQLite.DBModule_SQLite_Destroy(); } -extern "C" bool DBModule_SQLite_UserDelete(LPCXSTR lpszUserName) +extern "C" bool DBModule_SQLite_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo) { - return m_DBSQLite.DBModule_SQLite_UserDelete(lpszUserName); + return m_DBSQLite.DBModule_SQLite_UserDelete(pSt_UserInfo); } extern "C" bool DBModule_SQLite_UserRegister(AUTHREG_USERTABLE * pSt_UserInfo) { @@ -155,9 +155,9 @@ extern "C" bool DBModule_MySQL_Destroy() { return m_DBMySQL.DBModule_MySQL_Destroy(); } -extern "C" bool DBModule_MySQL_UserDelete(LPCXSTR lpszUserName) +extern "C" bool DBModule_MySQL_UserDelete(XENGINE_PROTOCOL_USERINFO* pSt_UserInfo) { - return m_DBMySQL.DBModule_MySQL_UserDelete(lpszUserName); + return m_DBMySQL.DBModule_MySQL_UserDelete(pSt_UserInfo); } extern "C" bool DBModule_MySQL_UserRegister(AUTHREG_USERTABLE* pSt_UserInfo) { diff --git a/XEngine_Source/AuthorizeModule_Help/Makefile b/XEngine_Source/AuthorizeModule_Help/Makefile index 39ddf1732a478eb34fd2de94fdfb5a5e2ae27c9e..d43378fe96f614ac402b97b5d788ae6a5a3e1199 100644 --- a/XEngine_Source/AuthorizeModule_Help/Makefile +++ b/XEngine_Source/AuthorizeModule_Help/Makefile @@ -16,8 +16,13 @@ ifeq ($(RELEASE),1) FLAGS = -c DEBUG = else -FLAGS = -c -lc_p -DEBUG = -g -pg + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g + else + FLAGS = -c -lc_p + DEBUG = -g -pg + endif endif ifeq ($(UNICODE),1) diff --git a/XEngine_Source/AuthorizeModule_Protocol/Makefile b/XEngine_Source/AuthorizeModule_Protocol/Makefile index 26a49d7e7d9ed0f649cee5a13f1f457c6334b7d3..a3887b07a45d943fea71e27fec3fdc863dd8479b 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Makefile +++ b/XEngine_Source/AuthorizeModule_Protocol/Makefile @@ -16,8 +16,13 @@ ifeq ($(RELEASE),1) FLAGS = -c DEBUG = else -FLAGS = -c -lc_p -DEBUG = -g -pg + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g + else + FLAGS = -c -lc_p + DEBUG = -g -pg + endif endif ifeq ($(UNICODE),1) diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp index fbd6098a0c5de599694cad11529e7d1e27f16efb..9d2ab7af3dc88edf9142a50d8ef200d03ec31114 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp @@ -70,6 +70,7 @@ bool CProtocol_Packet::Protocol_Packet_HDRComm(XCHAR* ptszMsgBuffer, int* pInt_M Json::Value st_JsonRoot; st_JsonRoot["wHeader"] = pSt_ProtocolHdr->wHeader; st_JsonRoot["wTail"] = pSt_ProtocolHdr->wTail; + st_JsonRoot["xhToken"] = (Json::Value::UInt64)pSt_ProtocolHdr->xhToken; st_JsonRoot["unOperatorType"] = pSt_ProtocolHdr->unOperatorType; st_JsonRoot["unOperatorCode"] = pSt_ProtocolHdr->unOperatorCode; st_JsonRoot["wCrypto"] = pSt_ProtocolHdr->wCrypto; @@ -661,6 +662,7 @@ bool CProtocol_Packet::Protocol_Packet_HttpSwitch(XCHAR* ptszMsgBuffer, int* pIn st_JsonRoot["bSwitchMulti"] = pSt_FunSwitch->bSwitchMulti; st_JsonRoot["bSwitchTry"] = pSt_FunSwitch->bSwitchTry; st_JsonRoot["bSwitchBanned"] = pSt_FunSwitch->bSwitchBanned; + st_JsonRoot["bSwitchTokenLogin"] = pSt_FunSwitch->bSwitchTokenLogin; *pInt_MsgLen = st_JsonRoot.toStyledString().length(); memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen); diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp index cf6ba5c630c5fa0cba0e33d1c165da7f00cf07b0..99b6586028e693ca131568d74f6339b5b75575ec 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp @@ -72,6 +72,10 @@ bool CProtocol_Parse::Protocol_Parse_WSHdr(LPCXSTR lpszMsgBuffer, int nMsgLen, X pSt_ProtocolHdr->unOperatorCode = st_JsonRoot["unOperatorCode"].asInt(); pSt_ProtocolHdr->byIsReply = st_JsonRoot["byIsReply"].asInt(); pSt_ProtocolHdr->wCrypto = st_JsonRoot["wCrypto"].asInt(); + if (!st_JsonRoot["xhToken"].isNull()) + { + pSt_ProtocolHdr->xhToken = st_JsonRoot["xhToken"].asUInt64(); + } return true; } /******************************************************************** @@ -841,7 +845,7 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseSwitch(LPCXSTR lpszMsgBuffer, int pSt_FunSwitch->bSwitchMulti = st_JsonObject["bSwitchMulti"].asBool(); pSt_FunSwitch->bSwitchTry = st_JsonObject["bSwitchTry"].asBool(); pSt_FunSwitch->bSwitchBanned = st_JsonObject["bSwitchBanned"].asBool(); - + pSt_FunSwitch->bSwitchTokenLogin = st_JsonObject["bSwitchTokenLogin"].asBool(); return true; } /******************************************************************** diff --git a/XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.vcxproj b/XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.vcxproj index 1c63b37baab7d85ec4479e60634a197c5bb832b6..8fca794a1dcfb20a57acdf3676472a77dee57e3c 100644 --- a/XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.vcxproj +++ b/XEngine_Source/AuthorizeModule_Session/AuthorizeModule_Session.vcxproj @@ -71,7 +71,7 @@ - $(XEngine_Include);$(IncludePath) + $(XEngine_Include);..\AuthorizeModule_Session;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) diff --git a/XEngine_Source/AuthorizeModule_Session/Makefile b/XEngine_Source/AuthorizeModule_Session/Makefile index 923e5ac6817d3bef33d28f11de491e844ebdbd49..36b84bafa8d353c2236f0df131d4cb663c0398f1 100644 --- a/XEngine_Source/AuthorizeModule_Session/Makefile +++ b/XEngine_Source/AuthorizeModule_Session/Makefile @@ -16,8 +16,13 @@ ifeq ($(RELEASE),1) FLAGS = -c DEBUG = else -FLAGS = -c -lc_p -DEBUG = -g -pg + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g + else + FLAGS = -c -lc_p + DEBUG = -g -pg + endif endif ifeq ($(UNICODE),1) diff --git a/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp b/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp index 547de7acb3a61614caf0558ffb9ee02ee98fc78a..2ed788c4d6e2a2afe44182e8f65e944c5da037cb 100644 --- a/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp +++ b/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp @@ -281,7 +281,12 @@ bool CSession_Authorize::Session_Authorize_Destroy() 类型:数据结构指针 可空:N 意思:用户传递的协议数据 - 参数.三:nNetType + 参数.三:xhToken + In/Out:In + 类型:句柄 + 可空:Y + 意思:所属TOKEN + 参数.四:nNetType In/Out:In 类型:整数型 可空:Y @@ -291,7 +296,7 @@ bool CSession_Authorize::Session_Authorize_Destroy() 意思:是否允许登陆 备注:如果成功,服务器会自动进行计时 *********************************************************************/ -bool CSession_Authorize::Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHREG_USERTABLE* pSt_UserTable, int nNetType) +bool CSession_Authorize::Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHREG_USERTABLE* pSt_UserTable, XNETHANDLE xhToken, int nNetType /* = 0 */) { Session_IsErrorOccur = false; @@ -311,6 +316,7 @@ bool CSession_Authorize::Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHRE AUTHSESSION_NETCLIENT st_Client; memset(&st_Client, '\0', sizeof(AUTHSESSION_NETCLIENT)); + st_Client.xhToken = xhToken; st_Client.nNetType = nNetType; st_Client.nLeftTime = _ttxoll(pSt_UserTable->tszLeftTime); diff --git a/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.h b/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.h index 2fc4ec934a490df3755b4459f6dc6ac74f23fd47..dd38793ea8250b2b5a93d9d34cd5fdbde6308c5b 100644 --- a/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.h +++ b/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.h @@ -23,7 +23,7 @@ public: bool Session_Authorize_CloseAddr(LPCXSTR lpszClientAddr); bool Session_Authorize_Destroy(); public: - bool Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHREG_USERTABLE* pSt_UserTable, int nNetType = 0); + bool Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHREG_USERTABLE* pSt_UserTable, XNETHANDLE xhToken, int nNetType = 0); bool Session_Authorize_SetUser(AUTHREG_USERTABLE* pSt_UserTable); protected: static XHTHREAD Session_Authorize_ActiveThread(XPVOID lParam); //计时器线程 diff --git a/XEngine_Source/AuthorizeModule_Session/Session_Define.h b/XEngine_Source/AuthorizeModule_Session/Session_Define.h index 60f2d741f3dbb9a3fc667a9aa89547aa2aa3cdc1..fb09594c528607a8ef149c99ca93d2181b97a0b1 100644 --- a/XEngine_Source/AuthorizeModule_Session/Session_Define.h +++ b/XEngine_Source/AuthorizeModule_Session/Session_Define.h @@ -16,6 +16,7 @@ typedef struct XENGINE_LIBTIMER st_LibTimer; //登录时间结构 XCHAR tszClientAddr[64]; XCHAR tszLeftTime[64]; //过期日期 + XNETHANDLE xhToken; __int64x nOnlineTime; //在线时间 __int64x nLeftTime; //剩余时间 int nNetType; //连接类型 @@ -131,7 +132,12 @@ extern "C" bool Session_Authorize_Destroy(); 类型:数据结构指针 可空:N 意思:用户传递的协议数据 - 参数.三:nNetType + 参数.三:xhToken + In/Out:In + 类型:句柄 + 可空:Y + 意思:所属TOKEN + 参数.四:nNetType In/Out:In 类型:整数型 可空:Y @@ -141,7 +147,7 @@ extern "C" bool Session_Authorize_Destroy(); 意思:是否允许登陆 备注:如果成功,服务器会自动进行计时 *********************************************************************/ -extern "C" bool Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHREG_USERTABLE * pSt_UserTable, int nNetType = 0); +extern "C" bool Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHREG_USERTABLE * pSt_UserTable, XNETHANDLE xhToken, int nNetType = 0); /******************************************************************** 函数名称:Session_Authorize_SetUser 函数功能:设置用户信息 diff --git a/XEngine_Source/AuthorizeModule_Session/pch.cpp b/XEngine_Source/AuthorizeModule_Session/pch.cpp index 70baaf39967f67118ceef260d34b938fa2bf0aff..df3b78a38f2ede2e6253b91df7440030d742d4e8 100644 --- a/XEngine_Source/AuthorizeModule_Session/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Session/pch.cpp @@ -51,9 +51,9 @@ extern "C" bool Session_Authorize_Destroy() { return m_SessionAuth.Session_Authorize_Destroy(); } -extern "C" bool Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHREG_USERTABLE * pSt_UserTable, int nNetType) +extern "C" bool Session_Authorize_Insert(LPCXSTR lpszClientAddr, AUTHREG_USERTABLE * pSt_UserTable, XNETHANDLE xhToken, int nNetType) { - return m_SessionAuth.Session_Authorize_Insert(lpszClientAddr, pSt_UserTable, nNetType); + return m_SessionAuth.Session_Authorize_Insert(lpszClientAddr, pSt_UserTable, xhToken, nNetType); } extern "C" bool Session_Authorize_SetUser(AUTHREG_USERTABLE * pSt_UserTable) { diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index e1a076e84eea04ff3bf114b4a5738217b5de8bb3..d6c4c6f1b007b781f4282462cbb13471eb11827e 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -16,6 +16,12 @@ AUTH_CLIENT_PATH = ./AuthorizeModule_Client AUTH_APP_PATH = ./XEngine_APPService/XEngine_AuthorizeService +ifeq ($(PLATFORM),linux) + FILEEXT = so +else ifeq ($(PLATFORM),mac) + FILEEXT = dylib +endif + XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so \ libAuthorizeModule_CDKey.so libAuthorizeModule_Session.so libAuthorizeModule_Database.so libAuthorizeModule_Protocol.so libAuthorizeModule_Configure.so libAuthorizeModule_Help.so libAuthorizeModule_Client.so \ XEngine_AuthorizeApp.exe @@ -23,10 +29,19 @@ XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so .PHONY:MakeAll MakeAll:$(XENGINE_MODULES) + libjsoncpp.so: +ifeq ($(FLAGS), InstallAll) + cp $(DEPEND_JSONCPP_PATH)/libjsoncpp.$(FILEEXT) ../XEngine_Release/ +else make -C $(DEPEND_JSONCPP_PATH) PLATFORM=$(PLATFORM) $(FLAGS) +endif libXEngine_InfoReport.so: +ifeq ($(FLAGS), InstallAll) + cp $(DEPEND_REPORT_PATH)/libXEngine_InfoReport.$(FILEEXT) ../XEngine_Release/ +else make -C $(DEPEND_REPORT_PATH) PLATFORM=$(PLATFORM) $(FLAGS) +endif libAuthorizeModule_CDKey.so: make -C $(AUTH_CDKEY_PATH) PLATFORM=$(PLATFORM) $(FLAGS) diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index 56a1eb69e83e84a9676f5aab05861d3e9656a488..12bb0f97303763311f4d1d5b7341fc4d2316fed3 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -11,59 +11,71 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_HDRFile", "XEngine_ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_Protocol", "AuthorizeModule_Protocol\AuthorizeModule_Protocol.vcxproj", "{6B926D00-DCD2-49E3-86A9-3230C9872E65}" ProjectSection(ProjectDependencies) = postProject - {940A00A6-A944-46C1-B34F-1361AFE240E0} = {940A00A6-A944-46C1-B34F-1361AFE240E0} + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_Configure", "AuthorizeModule_Configure\AuthorizeModule_Configure.vcxproj", "{1391B739-713B-4A3A-9233-FEAB92E0566C}" ProjectSection(ProjectDependencies) = postProject - {940A00A6-A944-46C1-B34F-1361AFE240E0} = {940A00A6-A944-46C1-B34F-1361AFE240E0} + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_APPService", "XEngine_APPService", "{2444CB54-6443-47F9-8D93-91237D0D05FB}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_Session", "AuthorizeModule_Session\AuthorizeModule_Session.vcxproj", "{CB9138DF-789D-459F-AD43-4095B22A487F}" + ProjectSection(ProjectDependencies) = postProject + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_Database", "AuthorizeModule_Database\AuthorizeModule_Database.vcxproj", "{5FA1874A-32F4-4176-9C23-4E22BE183660}" ProjectSection(ProjectDependencies) = postProject {02A75BD0-416E-4AEF-BF34-BD85BD86384F} = {02A75BD0-416E-4AEF-BF34-BD85BD86384F} + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_AuthorizeService", "XEngine_APPService\XEngine_AuthorizeService\XEngine_AuthorizeService.vcxproj", "{A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9}" ProjectSection(ProjectDependencies) = postProject {02A75BD0-416E-4AEF-BF34-BD85BD86384F} = {02A75BD0-416E-4AEF-BF34-BD85BD86384F} {1391B739-713B-4A3A-9233-FEAB92E0566C} = {1391B739-713B-4A3A-9233-FEAB92E0566C} - {185975A2-EB43-45DF-8108-03656A2BFE33} = {185975A2-EB43-45DF-8108-03656A2BFE33} {5FA1874A-32F4-4176-9C23-4E22BE183660} = {5FA1874A-32F4-4176-9C23-4E22BE183660} {6B926D00-DCD2-49E3-86A9-3230C9872E65} = {6B926D00-DCD2-49E3-86A9-3230C9872E65} - {940A00A6-A944-46C1-B34F-1361AFE240E0} = {940A00A6-A944-46C1-B34F-1361AFE240E0} {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894} = {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894} {CB9138DF-789D-459F-AD43-4095B22A487F} = {CB9138DF-789D-459F-AD43-4095B22A487F} {DD8CB5F1-980F-48C3-BA2F-3CF534903B14} = {DD8CB5F1-980F-48C3-BA2F-3CF534903B14} + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89} = {F6520D2C-BB8E-45BB-964B-F5D6A4318A89} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_AuthorizeApp", "XEngine_APPService\XEngine_AuthorizeApp\XEngine_AuthorizeApp.vcxproj", "{51DCBDC7-50CB-4A44-B10B-FCF90309914D}" ProjectSection(ProjectDependencies) = postProject + {02A75BD0-416E-4AEF-BF34-BD85BD86384F} = {02A75BD0-416E-4AEF-BF34-BD85BD86384F} {1391B739-713B-4A3A-9233-FEAB92E0566C} = {1391B739-713B-4A3A-9233-FEAB92E0566C} - {940A00A6-A944-46C1-B34F-1361AFE240E0} = {940A00A6-A944-46C1-B34F-1361AFE240E0} + {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894} = {AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894} + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_Help", "AuthorizeModule_Help\AuthorizeModule_Help.vcxproj", "{AB3DB24C-E1B3-41CF-B2F4-6C12E13C2894}" + ProjectSection(ProjectDependencies) = postProject + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_Client", "AuthorizeModule_Client\AuthorizeModule_Client.vcxproj", "{DD8CB5F1-980F-48C3-BA2F-3CF534903B14}" ProjectSection(ProjectDependencies) = postProject - {940A00A6-A944-46C1-B34F-1361AFE240E0} = {940A00A6-A944-46C1-B34F-1361AFE240E0} + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_Depend", "XEngine_Depend", "{6444F125-63DE-4120-98B3-DF097A9758FA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsoncpp", "XEngine_Depend\XEngine_Module\jsoncpp\jsoncpp.vcxproj", "{940A00A6-A944-46C1-B34F-1361AFE240E0}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsoncpp", "XEngine_Depend\XEngine_Module\jsoncpp\jsoncpp.vcxproj", "{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngine_Depend\XEngine_Module\XEngine_InfoReport\XEngine_InfoReport.vcxproj", "{185975A2-EB43-45DF-8108-03656A2BFE33}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngine_Depend\XEngine_Module\XEngine_InfoReport\XEngine_InfoReport.vcxproj", "{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}" ProjectSection(ProjectDependencies) = postProject - {940A00A6-A944-46C1-B34F-1361AFE240E0} = {940A00A6-A944-46C1-B34F-1361AFE240E0} + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AuthorizeModule_CDKey", "AuthorizeModule_CDKey\AuthorizeModule_CDKey.vcxproj", "{02A75BD0-416E-4AEF-BF34-BD85BD86384F}" + ProjectSection(ProjectDependencies) = postProject + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -137,22 +149,22 @@ Global {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|x64.Build.0 = Release|x64 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|x86.ActiveCfg = Release|Win32 {DD8CB5F1-980F-48C3-BA2F-3CF534903B14}.Release|x86.Build.0 = Release|Win32 - {940A00A6-A944-46C1-B34F-1361AFE240E0}.Debug|x64.ActiveCfg = Debug|x64 - {940A00A6-A944-46C1-B34F-1361AFE240E0}.Debug|x64.Build.0 = Debug|x64 - {940A00A6-A944-46C1-B34F-1361AFE240E0}.Debug|x86.ActiveCfg = Debug|Win32 - {940A00A6-A944-46C1-B34F-1361AFE240E0}.Debug|x86.Build.0 = Debug|Win32 - {940A00A6-A944-46C1-B34F-1361AFE240E0}.Release|x64.ActiveCfg = Release|x64 - {940A00A6-A944-46C1-B34F-1361AFE240E0}.Release|x64.Build.0 = Release|x64 - {940A00A6-A944-46C1-B34F-1361AFE240E0}.Release|x86.ActiveCfg = Release|Win32 - {940A00A6-A944-46C1-B34F-1361AFE240E0}.Release|x86.Build.0 = Release|Win32 - {185975A2-EB43-45DF-8108-03656A2BFE33}.Debug|x64.ActiveCfg = Debug|x64 - {185975A2-EB43-45DF-8108-03656A2BFE33}.Debug|x64.Build.0 = Debug|x64 - {185975A2-EB43-45DF-8108-03656A2BFE33}.Debug|x86.ActiveCfg = Debug|Win32 - {185975A2-EB43-45DF-8108-03656A2BFE33}.Debug|x86.Build.0 = Debug|Win32 - {185975A2-EB43-45DF-8108-03656A2BFE33}.Release|x64.ActiveCfg = Release|x64 - {185975A2-EB43-45DF-8108-03656A2BFE33}.Release|x64.Build.0 = Release|x64 - {185975A2-EB43-45DF-8108-03656A2BFE33}.Release|x86.ActiveCfg = Release|Win32 - {185975A2-EB43-45DF-8108-03656A2BFE33}.Release|x86.Build.0 = Release|Win32 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.ActiveCfg = Debug|x64 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.Build.0 = Debug|x64 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x86.ActiveCfg = Debug|Win32 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x86.Build.0 = Debug|Win32 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x64.ActiveCfg = Release|x64 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x64.Build.0 = Release|x64 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x86.ActiveCfg = Release|Win32 + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Release|x86.Build.0 = Release|Win32 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x64.ActiveCfg = Debug|x64 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x64.Build.0 = Debug|x64 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x86.ActiveCfg = Debug|Win32 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Debug|x86.Build.0 = Debug|Win32 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.ActiveCfg = Release|x64 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.Build.0 = Release|x64 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.ActiveCfg = Release|Win32 + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.Build.0 = Release|Win32 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x64.ActiveCfg = Debug|x64 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x64.Build.0 = Debug|x64 {02A75BD0-416E-4AEF-BF34-BD85BD86384F}.Debug|x86.ActiveCfg = Debug|Win32 @@ -168,8 +180,8 @@ Global GlobalSection(NestedProjects) = preSolution {A29DFD8D-2818-4BE3-A2DB-07F241B4BFC9} = {2444CB54-6443-47F9-8D93-91237D0D05FB} {51DCBDC7-50CB-4A44-B10B-FCF90309914D} = {2444CB54-6443-47F9-8D93-91237D0D05FB} - {940A00A6-A944-46C1-B34F-1361AFE240E0} = {6444F125-63DE-4120-98B3-DF097A9758FA} - {185975A2-EB43-45DF-8108-03656A2BFE33} = {6444F125-63DE-4120-98B3-DF097A9758FA} + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {6444F125-63DE-4120-98B3-DF097A9758FA} + {F6520D2C-BB8E-45BB-964B-F5D6A4318A89} = {6444F125-63DE-4120-98B3-DF097A9758FA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E1F1DDE3-8949-41AF-84D6-03CB7CAA03AB} diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp index 58dfe7b76100c5f556a2a314f26ae94c2f370d2c..2049ff7a5b15f8f3dae9399ea961469a0502f7eb 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp @@ -67,6 +67,11 @@ void CDialog_Announcement::OnBnClickedButton1() pWnd->m_EditToken.GetWindowText(m_StrToken); m_EditNoticeStr.GetWindowText(m_StrNotice); + if (m_StrNotice.GetLength() < 1) + { + AfxMessageBox(_T("内容不能小于1个字节")); + return; + } TCHAR tszUrlAddr[MAX_PATH]; memset(tszUrlAddr, '\0', MAX_PATH); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.cpp index 5d11ef21af18b964059920cab5593b7467c7a191..4065b35178bfb198573ff77b20c2cf25086dc857 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_CDKey.cpp @@ -115,6 +115,9 @@ bool CDialog_CDKey::Dialog_CDKey_Init() m_EditSoftVer.SetWindowText(_T("V1.0.0.1001")); m_EditSoftTime.SetWindowText(_T("0")); + m_EditRegHaveTime.SetWindowText(_T("5")); + m_EditRegLeftTime.SetWindowText(_T("5")); + int nSerialCount = 3; XCHAR** pptszSerialList; Authorize_Serial_Create(&pptszSerialList, _T("XAUTH"), nSerialCount, 9); @@ -123,6 +126,7 @@ bool CDialog_CDKey::Dialog_CDKey_Init() m_EditSerialUnlimitNumber.SetWindowText(pptszSerialList[2]); BaseLib_OperatorMemory_Free((XPPPMEM)&pptszSerialList, nSerialCount); m_EditSerialTimeCount.SetWindowText(_T("9999")); + m_CheckSerialDataAdd.SetCheck(BST_CHECKED); XCHAR tszTimeStr[128] = {}; XENGINE_LIBTIMER st_LibTime = {}; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp index 9468f2cf9910bcadab2245129c037ae2842c9a7b..891105e2a9bf2a777d0875f117407ae8a0b58d2d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp @@ -48,6 +48,8 @@ void CDialog_Switch::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_RADIO20, m_RadioTryClose); DDX_Control(pDX, IDC_RADIO21, m_RadioBlackOPen); DDX_Control(pDX, IDC_RADIO22, m_RadioBlackClose); + DDX_Control(pDX, IDC_RADIO23, m_RadioTokenOPen); + DDX_Control(pDX, IDC_RADIO24, m_RadioTokenClose); } @@ -244,6 +246,16 @@ void CDialog_Switch::OnBnClickedButton1() m_RadioBlackOPen.SetCheck(BST_UNCHECKED); m_RadioBlackClose.SetCheck(BST_CHECKED); } + if (st_JsonRoot["bSwitchTokenLogin"].asBool()) + { + m_RadioTokenOPen.SetCheck(BST_CHECKED); + m_RadioTokenClose.SetCheck(BST_UNCHECKED); + } + else + { + m_RadioTokenOPen.SetCheck(BST_UNCHECKED); + m_RadioTokenClose.SetCheck(BST_CHECKED); + } m_BtnSetConfigure.EnableWindow(true); } else @@ -369,6 +381,15 @@ void CDialog_Switch::OnBnClickedButton2() { st_JsonObject["bSwitchBanned"] = false; } + + if (BST_CHECKED == m_RadioTokenOPen.GetCheck()) + { + st_JsonObject["bSwitchTokenLogin"] = true; + } + else + { + st_JsonObject["bSwitchTokenLogin"] = false; + } st_JsonRoot["st_SwitchInfo"] = st_JsonObject; st_JsonRoot["xhToken"] = _ttxoll(m_StrToken.GetBuffer()); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h index 8f0a6fce088d9587f441367be282e7d383bc7d44..e8fd2d754c4235d84f680c3621b513de2fe39d8e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h @@ -49,4 +49,6 @@ public: CButton m_RadioTryClose; CButton m_RadioBlackOPen; CButton m_RadioBlackClose; + CButton m_RadioTokenOPen; + CButton m_RadioTokenClose; }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps index 6b78a10f040f6c9afa595ae7abce3772379dab0e..8a1d171e423e9f41935d293fbd935353240d66d5 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 085cc658f08bb247f8c01202e242c5b7cae407b8..e247434c5524eb0fb48bbbca53a086700ed4db12 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/resource.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h index ed5dbc9ef64e6abbea0d2d4a2b810a9c6fe56f4f..067adfb8a52a58749de067fc845993cc50fd5028 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h @@ -91,6 +91,8 @@ #define IDC_RADIO20 1034 #define IDC_RADIO21 1035 #define IDC_RADIO22 1036 +#define IDC_RADIO23 1037 +#define IDC_RADIO24 1038 // Next default values for new objects // diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.cpp deleted file mode 100644 index fbf89af5b29cab861089299c1acc78a4c108024a..0000000000000000000000000000000000000000 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "../Authorize_Hdr.h" - -bool XEngine_AuthorizeHTTP_DynamicCode(LPCXSTR lpszClientAddr, XCHAR** pptszList, int nListCount) -{ - int nMsgLen = 0; - XCHAR tszMsgBuffer[4096]; - XCHAR tszURLKey[128]; - XCHAR tszURLValue[128]; - LPCXSTR lpszAPIGet = _X("get"); - - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - memset(tszURLKey, '\0', sizeof(tszURLKey)); - memset(tszURLValue, '\0', sizeof(tszURLValue)); - BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszURLKey, tszURLValue); - - if (!st_FunSwitch.bSwitchDCode) - { - Protocol_Packet_HttpComm(tszMsgBuffer, &nMsgLen, 503, "the function is closed"); - XEngine_Client_TaskSend(lpszClientAddr, tszMsgBuffer, nMsgLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求获得动态验证码失败,服务器已经关闭此功能!"), lpszClientAddr); - return false; - } - if (0 == _tcsxnicmp(lpszAPIGet, tszURLValue, _tcsxlen(lpszAPIGet))) - { - //http://app.xyry.org:5302/api?function=dcode&user=get - int nDCode = 0; - XNETHANDLE xhToken = 0; - AuthHelp_DynamicCode_Create(&xhToken, &nDCode); - Protocol_Packet_HttpToken(tszMsgBuffer, &nMsgLen, xhToken, st_AuthConfig.st_XVerification.nDynamicTimeout, nDCode); - XEngine_Client_TaskSend(lpszClientAddr, tszMsgBuffer, nMsgLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获得动态验证码成功,TOKEN:%lld,验证码:%d"), lpszClientAddr, xhToken, nDCode); - } - return true; -} \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.h deleted file mode 100644 index c0957afe9a227ee99c02878ae1d144e9be7f68ed..0000000000000000000000000000000000000000 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -bool XEngine_AuthorizeHTTP_DynamicCode(LPCXSTR lpszClientAddr, XCHAR** pptszList, int nListCount); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3eb4a678db995609e36d294ef89803bc430b6bcf --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp @@ -0,0 +1,79 @@ +#include "../Authorize_Hdr.h" + +bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, int nListCount) +{ + int nSDLen = 4096; + XCHAR tszSDBuffer[4096] = {}; + XCHAR tszURLKey[128] = {}; + XCHAR tszURLValue[128] = {}; + LPCXSTR lpszAPITime = _X("time"); + LPCXSTR lpszAPIDCode = _X("dcode"); + LPCXSTR lpszAPINotice = _X("notice"); + + memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); + BaseLib_OperatorString_GetKeyValue(pptszList[0], "=", tszURLKey, tszURLValue); + + if (0 == _tcsxnicmp(lpszAPITime, tszURLValue, _tcsxlen(lpszAPITime))) + { + XCHAR tszUserToken[128]; + memset(tszUserToken, '\0', sizeof(tszUserToken)); + BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszURLKey, tszUserToken); + + AUTHREG_USERTABLE st_UserTable = {}; + if (!Session_Token_Get(_ttxoll(tszUserToken), &st_UserTable)) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,获取时间失败,无法继续,错误:%X"), lpszClientAddr, Session_GetLastError()); + return false; + } + int nListCount = 0; + AUTHSESSION_NETCLIENT** ppSt_ListClient; + if (!Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserTable.st_UserInfo.tszUserName)) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,获取时间失败,无法继续,错误:%X"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, Session_GetLastError()); + return false; + } + Protocol_Packet_UserTime(tszSDBuffer, &nSDLen, &ppSt_ListClient, nListCount); + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListClient, nListCount); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,用户名:%s,获取时间成功,用户同时在线数:%d"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, nListCount); + } + else if (0 == _tcsxnicmp(lpszAPIDCode, tszURLValue, _tcsxlen(lpszAPIDCode))) + { + if (!st_FunSwitch.bSwitchDCode) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求获得动态验证码失败,服务器已经关闭此功能!"), lpszClientAddr); + return false; + } + //http://app.xyry.org:5302/api?function=dcode + int nDCode = 0; + XNETHANDLE xhToken = 0; + AuthHelp_DynamicCode_Create(&xhToken, &nDCode); + Protocol_Packet_HttpToken(tszSDBuffer, &nSDLen, xhToken, st_AuthConfig.st_XVerification.nDynamicTimeout, nDCode); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获得动态验证码成功,TOKEN:%lld,验证码:%d"), lpszClientAddr, xhToken, nDCode); + } + else if (0 == _tcsxnicmp(lpszAPINotice, tszURLValue, _tcsxlen(lpszAPINotice))) + { + XCHAR tszUserToken[128]; + memset(tszUserToken, '\0', sizeof(tszUserToken)); + BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszURLKey, tszUserToken); + + AUTHREG_USERTABLE st_UserTable = {}; + if (!Session_Token_Get(_ttxoll(tszUserToken), &st_UserTable)) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,获取通告失败,无法继续,错误:%X"), lpszClientAddr, Session_GetLastError()); + return false; + } + //http://app.xyry.org:5302/api?function=notice + XEngine_AuthorizeHTTP_Announcement(lpszClientAddr, _X("list"), NULL, 0); + } + return true; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.h new file mode 100644 index 0000000000000000000000000000000000000000..79be1b1d86fafa2c3f3d91365e06366552484619 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.h @@ -0,0 +1,3 @@ +#pragma once + +bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, int nListCount); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp index 3721652c1b85f17ad613ecae9670a98bbbe490de..09841e90e9ad91ec8b26046ab8dd3a3ddb0d7342 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp @@ -39,6 +39,13 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN return false; } Protocol_Parse_HttpParseAnnouncement(lpszMsgBuffer, nMsgLen, &st_Announcement); + if (_tcsxlen(st_Announcement.tszContext) <= 1) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 510, "server limited"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,公告系统协议处理失败,内容不能小于1个字节!"), lpszClientAddr); + return false; + } if (0 == st_AuthConfig.st_XSql.nDBType) { DBModule_SQLite_AnnouncementInsert(&st_Announcement); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp index 215158f814d1ddb0932da4bb600989daf8dc8df9..5f48e3a523d2735e1c0e67ea3e71035ff6f60786 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp @@ -13,14 +13,14 @@ bool XEngine_AuthorizeHTTP_Switch(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L { Protocol_Packet_HttpSwitch(tszSDBuffer, &nSDLen, &st_FunSwitch); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获取功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获取功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d,普通Token:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchTokenLogin); } else if (0 == _tcsxnicmp(lpszAPISet, lpszAPIName, _tcsxlen(lpszAPISet))) { Protocol_Parse_HttpParseSwitch(lpszMsgBuffer, nMsgLen, &st_FunSwitch); Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求设置功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求设置功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d,普通Token:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchTokenLogin); } return true; 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 bf1a47367f5a234b67a89ae296344d2b5a70f250..ddc78d3572d56a86564c018271cf199104ee3990 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 @@ -1,6 +1,6 @@ #include "../Authorize_Hdr.h" -bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen) +bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen) { int nSDLen = 8196; XCHAR tszSDBuffer[8196]; @@ -8,16 +8,12 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC LPCXSTR lpszAPIRegister = _X("register"); LPCXSTR lpszAPIPay = _X("pay"); LPCXSTR lpszAPIPass = _X("pass"); - LPCXSTR lpszAPITime = _X("time"); LPCXSTR lpszAPITry = _X("try"); memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); if (0 == _tcsxnicmp(lpszAPIName, lpszAPIDelete, _tcsxlen(lpszAPIName))) { - XENGINE_PROTOCOL_USERINFO st_UserInfo; - memset(&st_UserInfo, '\0', sizeof(XENGINE_PROTOCOL_USERINFO)); - if (!st_FunSwitch.bSwitchDelete) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); @@ -25,7 +21,25 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,删除失败,删除功能已经被服务器关闭!"), lpszClientAddr); return false; } + XENGINE_PROTOCOL_USERINFO st_UserInfo = {}; Protocol_Parse_HttpParseUser(lpszMsgBuffer, nMsgLen, &st_UserInfo); + //删除数据库 + bool bRet = false; + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bRet = DBModule_SQLite_UserDelete(&st_UserInfo); + } + else + { + bRet = DBModule_MySQL_UserDelete(&st_UserInfo); + } + if (!bRet) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "user delete failed,maybe user verification failed"); + 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_UserInfo.tszUserName); + return false; + } //关闭链接 int nListCount = 0; AUTHSESSION_NETCLIENT** ppSt_ListClient; @@ -36,14 +50,6 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC } BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListClient, nListCount); - if (0 == st_AuthConfig.st_XSql.nDBType) - { - DBModule_SQLite_UserDelete(st_UserInfo.tszUserName); - } - else - { - DBModule_MySQL_UserDelete(st_UserInfo.tszUserName); - } Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求删除用户:%s 成功,在线用户数:%d"), lpszClientAddr, st_UserInfo.tszUserName, nListCount); @@ -216,27 +222,6 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,用户名:%s,找回密码成功"), lpszClientAddr, st_UserInfo.tszUserName); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPITime, _tcsxlen(lpszAPIName))) - { - int nListCount = 0; - AUTHSESSION_NETCLIENT** ppSt_ListClient; - XENGINE_PROTOCOL_USERAUTH st_UserAuth; - - memset(&st_UserAuth, '\0', sizeof(XENGINE_PROTOCOL_USERAUTH)); - - Protocol_Parse_HttpParseAuth(lpszMsgBuffer, nMsgLen, &st_UserAuth); - if (!Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserAuth.tszUserName)) - { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,获取时间失败,无法继续,错误:%X"), lpszClientAddr, st_UserAuth.tszUserName, Session_GetLastError()); - return false; - } - Protocol_Packet_UserTime(tszSDBuffer, &nSDLen, &ppSt_ListClient, nListCount); - BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListClient, nListCount); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,用户名:%s,获取时间成功,用户同时在线数:%d"), lpszClientAddr, st_UserAuth.tszUserName, nListCount); - } else if (0 == _tcsxnicmp(lpszAPIName, lpszAPITry, _tcsxlen(lpszAPIName))) { AUTHREG_TEMPVER st_VERTemp; @@ -250,6 +235,13 @@ bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC return false; } Protocol_Parse_HttpParseTry(lpszMsgBuffer, nMsgLen, &st_VERTemp); + if (_tcsxlen(st_VERTemp.tszVSerial) < 1) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "serial is to short"); + 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_VERTemp.tszVSerial); + return false; + } bool bSuccess = false; //判断是使用哪个数据库 if (0 == st_AuthConfig.st_XSql.nDBType) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.h index e4ee6fbb332c941ebe5f15b5eef8a080d501aac1..79ae67f3ef5c71150da6cca5be1193cf161a4847 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.h @@ -1,3 +1,3 @@ #pragma once -bool XEngine_AuthorizeHTTP_User(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file +bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp index 6ee0a44f61d1e596c58a8f5bacaa78f5fa2a0a5b..d32e456f16b552d079a4fd5413c6367ac9a7fc2c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp @@ -33,6 +33,10 @@ bool Authorize_Service_Parament(int argc, char** argv) { st_AuthConfig.bDeamon = _ttxoi(argv[i + 1]); } + else if (0 == _tcsxcmp("-t", argv[i])) + { + bIsTest = true; + } } return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 5245822d9e7cf06b31c6e5ca379fa2ad20d52232..da312cb62e7adb613e8ae0032975d4065fe2aef0 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -57,6 +57,7 @@ using namespace std; #include "../../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Error.h" extern bool bIsRun; +extern bool bIsTest; extern XHANDLE xhLog; extern XHANDLE xhTCPSocket; extern XHANDLE xhWSSocket; @@ -99,7 +100,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #include "AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.h" #include "AuthorizeHTTP_Post/AuthorizeHTTP_Try.h" #include "AuthorizeHTTP_Get/AuthorizeHTTP_Token.h" -#include "AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.h" +#include "AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.h" #ifdef _MSC_BUILD #ifdef _DEBUG diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index 0d51e18c57ca34f5c97bdcbb836c43a5bf13809b..f04150658088c1c41071c3050106a4866891868c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -108,13 +108,11 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 不支持"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; } - - if (0 == _tcsxnicmp(lpszAPIVerClient, tszAPIVer, _tcsxlen(lpszAPIVerClient))) + AUTHREG_USERTABLE st_UserTable; + memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); + //得到TOKEN + if (Protocol_Parse_HttpParseToken(lpszMsgBuffer, nMsgLen, &xhToken)) { - 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"); @@ -122,136 +120,94 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为没有经过验证"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; } - if (0 != st_UserTable.st_UserInfo.nUserLevel) + + if (0 == _tcsxnicmp(lpszAPIVerClient, tszAPIVer, _tcsxlen(lpszAPIVerClient))) { - 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return false; + } + XEngine_AuthorizeHTTP_Client(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - XEngine_AuthorizeHTTP_Client(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); - } - else if (0 == _tcsxnicmp(lpszAPIVerSerial, tszAPIVer, _tcsxlen(lpszAPIVerSerial))) - { - AUTHREG_USERTABLE st_UserTable; - memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); - //验证权限 - Protocol_Parse_HttpParseToken(lpszMsgBuffer, nMsgLen, &xhToken); - if (!Session_Token_Get(xhToken, &st_UserTable)) + else if (0 == _tcsxnicmp(lpszAPIVerSerial, tszAPIVer, _tcsxlen(lpszAPIVerSerial))) { - 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, _X("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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return false; + } + XEngine_AuthorizeHTTP_Serial(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - if (0 != st_UserTable.st_UserInfo.nUserLevel) + else if (0 == _tcsxnicmp(lpszAPIVerSwitch, tszAPIVer, _tcsxlen(lpszAPIVerSwitch))) { - 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return false; + } + XEngine_AuthorizeHTTP_Switch(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - XEngine_AuthorizeHTTP_Serial(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); - } - else if (0 == _tcsxnicmp(lpszAPIVerUser, tszAPIVer, _tcsxlen(lpszAPIVerUser))) - { - XEngine_AuthorizeHTTP_User(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); - } - else if (0 == _tcsxnicmp(lpszAPIVerPass, tszAPIVer, _tcsxlen(lpszAPIVerPass))) - { - XEngine_AuthorizeHTTP_Pass(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); - } - else if (0 == _tcsxnicmp(lpszAPIVerSwitch, tszAPIVer, _tcsxlen(lpszAPIVerSwitch))) - { - AUTHREG_USERTABLE st_UserTable; - memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); - //验证权限 - Protocol_Parse_HttpParseToken(lpszMsgBuffer, nMsgLen, &xhToken); - if (!Session_Token_Get(xhToken, &st_UserTable)) + else if (0 == _tcsxnicmp(lpszAPIVerBanned, tszAPIVer, _tcsxlen(lpszAPIVerBanned))) { - 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, _X("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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return false; + } + XEngine_AuthorizeHTTP_Banned(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - if (0 != st_UserTable.st_UserInfo.nUserLevel) + else if (0 == _tcsxnicmp(lpszAPIVerNotice, tszAPIVer, _tcsxlen(lpszAPIVerNotice))) { - 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); - return false; - } - XEngine_AuthorizeHTTP_Switch(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); - } - else if (0 == _tcsxnicmp(lpszAPIVerBanned, tszAPIVer, _tcsxlen(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, _X("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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return false; + } + XEngine_AuthorizeHTTP_Announcement(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - if (0 != st_UserTable.st_UserInfo.nUserLevel) + else if (0 == _tcsxnicmp(lpszAPIVerTry, tszAPIVer, _tcsxlen(lpszAPIVerTry))) { - 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return false; + } + XEngine_AuthorizeHTTP_Try(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - XEngine_AuthorizeHTTP_Banned(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); - } - else if (0 == _tcsxnicmp(lpszAPIVerCDKey, tszAPIVer, _tcsxlen(lpszAPIVerCDKey))) - { - XEngine_AuthorizeHTTP_CDKey(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - else if (0 == _tcsxnicmp(lpszAPIVerNotice, tszAPIVer, _tcsxlen(lpszAPIVerNotice))) + else { - AUTHREG_USERTABLE st_UserTable; - memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); - //验证权限 - Protocol_Parse_HttpParseToken(lpszMsgBuffer, nMsgLen, &xhToken); - if (!Session_Token_Get(xhToken, &st_UserTable)) + if (0 == _tcsxnicmp(lpszAPIVerPass, tszAPIVer, _tcsxlen(lpszAPIVerPass))) { - 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为没有经过验证"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); - return false; + XEngine_AuthorizeHTTP_Pass(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - if (0 != st_UserTable.st_UserInfo.nUserLevel) + else if (0 == _tcsxnicmp(lpszAPIVerCDKey, tszAPIVer, _tcsxlen(lpszAPIVerCDKey))) { - 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); - return false; - } - XEngine_AuthorizeHTTP_Announcement(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); - } - else if (0 == _tcsxnicmp(lpszAPIVerTry, tszAPIVer, _tcsxlen(lpszAPIVerTry))) - { - 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为没有经过验证"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); - return false; + XEngine_AuthorizeHTTP_CDKey(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - if (0 != st_UserTable.st_UserInfo.nUserLevel) + else if (0 == _tcsxnicmp(lpszAPIVerUser, tszAPIVer, _tcsxlen(lpszAPIVerUser))) { - 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, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); - return false; + XEngine_AuthorizeHTTP_User(xhToken, lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - XEngine_AuthorizeHTTP_Try(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } } else if (0 == _tcsxnicmp(lpszMethodGet, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodGet))) @@ -260,8 +216,10 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XCHAR** pptszList; XCHAR tszUrlName[128]; LPCXSTR lpszFuncName = _X("api"); - LPCXSTR lpszAPIVerNotice = _X("notice"); LPCXSTR lpszAPIVerDCode = _X("dcode"); + LPCXSTR lpszAPIVerTime = _X("time"); + LPCXSTR lpszAPIVerNotice = _X("notice"); + memset(tszUrlName, '\0', sizeof(tszUrlName)); HttpProtocol_ServerHelp_GetParament(pSt_HTTPParament->tszHttpUri, &pptszList, &nListCount, tszUrlName); if ((nListCount < 1) || (0 != _tcsxnicmp(lpszFuncName, tszUrlName, _tcsxlen(lpszFuncName)))) @@ -279,13 +237,10 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int memset(tszURLValue, '\0', sizeof(tszURLValue)); BaseLib_OperatorString_GetKeyValue(pptszList[0], "=", tszURLKey, tszURLValue); - if (0 == _tcsxnicmp(lpszAPIVerNotice, tszURLValue, _tcsxlen(lpszAPIVerNotice))) - { - XEngine_AuthorizeHTTP_Announcement(lpszClientAddr, "list", lpszMsgBuffer, nMsgLen); - } - else if (0 == _tcsxnicmp(lpszAPIVerDCode, tszURLValue, _tcsxlen(lpszAPIVerDCode))) + if (0 == _tcsxnicmp(lpszAPIVerDCode, tszURLValue, _tcsxlen(lpszAPIVerDCode)) || 0 == _tcsxnicmp(lpszAPIVerTime, tszURLValue, _tcsxlen(lpszAPIVerTime)) || + 0 == _tcsxnicmp(lpszAPIVerNotice, tszURLValue, _tcsxlen(lpszAPIVerNotice))) { - XEngine_AuthorizeHTTP_DynamicCode(lpszClientAddr, pptszList, nListCount); + XEngine_AuthorizeHTTP_GetTask(lpszClientAddr, pptszList, nListCount); } else { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index 56e57810fba4caebdf43ae46b2fffd5eb3683a67..cde4200e00e8453970829c06c04f504d2675b4b9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -2,6 +2,7 @@ ////////////////////////////////////////////////////////////////////////// bool CALLBACK XEngine_Client_TCPAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { + HelpComponents_Datas_CreateEx(xhTCPPacket, lpszClientAddr, 0); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("TCP客户端:%s,进入服务器"), lpszClientAddr); return true; @@ -106,8 +107,9 @@ bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart) Protocol_Packet_HttpUserTime(tszSDBuffer, &nSDLen, &st_AuthTime); APIClient_Http_Request(_X("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogout, tszSDBuffer); } + Session_Token_Delete(st_NETClient.xhToken); Session_Authorize_CloseAddr(lpszClientAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,用户名:%s,离开服务器,在线时长:%d"), lpszClientAddr, st_NETClient.st_UserTable.st_UserInfo.tszUserName, st_AuthTime.nTimeONLine); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,用户名:%s,Token:%llu,离开服务器,在线时长:%d"), lpszClientAddr, st_NETClient.st_UserTable.st_UserInfo.tszUserName, st_NETClient.xhToken, st_AuthTime.nTimeONLine); } else { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index a73b2fa693702bbb49785ec75e61e0994ec0ade6..ea514126bc4eb6144ec6aa8497c01d93f7be6fe4 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -55,7 +55,22 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n XCHAR tszSDBuffer[2048] = {}; AUTHREG_BANNED st_Banned = {}; - if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN == pSt_ProtocolHdr->unOperatorCode) + if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_HB_SYN == pSt_ProtocolHdr->unOperatorCode) + { + if (1 == pSt_ProtocolHdr->byIsReply) + { + pSt_ProtocolHdr->wReserve = 0; + Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + } + + if (st_FunSwitch.bSwitchTokenLogin) + { + Session_Token_UPDate(pSt_ProtocolHdr->xhToken); + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,句柄:%llu 心跳处理成功"), lpszClientAddr, pSt_ProtocolHdr->xhToken); + } + else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN == pSt_ProtocolHdr->unOperatorCode) { AUTHREG_USERTABLE st_UserTable; XENGINE_PROTOCOL_USERAUTH st_AuthProtocol; @@ -197,6 +212,10 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n break; } } + else if (2 == st_AuthConfig.st_XLogin.nMultiMode) + { + break; + } else { pSt_ProtocolHdr->wReserve = 257; @@ -215,27 +234,31 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n bLogin = true; } } - if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == st_UserTable.enSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_TIME == st_UserTable.enSerialType) { if (!st_AuthConfig.st_XLogin.st_MulitLogin.bTime) { bLogin = true; } } - if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == st_UserTable.enSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_DAY == st_UserTable.enSerialType) { if (!st_AuthConfig.st_XLogin.st_MulitLogin.bDay) { bLogin = true; } } - if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == st_UserTable.enSerialType) + else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == st_UserTable.enSerialType) { if (!st_AuthConfig.st_XLogin.st_MulitLogin.bCustom) { bLogin = true; } } + else + { + bLogin = true; //其他注册类型禁止登录 + } //判断这次登录是否允许 if (bLogin) { @@ -312,9 +335,13 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } } } - + //创建一个普通TOKEN + if (pSt_ProtocolHdr->xhToken < 10000000 || pSt_ProtocolHdr->xhToken > 20000000) + { + BaseLib_OperatorHandle_Create(&pSt_ProtocolHdr->xhToken, 10000000, 20000000); + } st_UserTable.enDeviceType = st_AuthProtocol.enDeviceType; - if (!Session_Authorize_Insert(lpszClientAddr, &st_UserTable, nNetType)) + if (!Session_Authorize_Insert(lpszClientAddr, &st_UserTable, pSt_ProtocolHdr->xhToken, nNetType)) { pSt_ProtocolHdr->wReserve = 256; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); @@ -322,6 +349,11 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,插入会话管理失败,错误:%lX"), lpszClientAddr, st_AuthProtocol.tszUserName); return false; } + if (st_FunSwitch.bSwitchTokenLogin) + { + Session_Token_Insert(pSt_ProtocolHdr->xhToken, &st_UserTable); + } + pSt_ProtocolHdr->wReserve = 0; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp index 92bfa605c2f01df0be0ae02db615a419b3a76cc5..58c3528d05b5550446517e8676906fa1ab5e83c1 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp @@ -67,6 +67,6 @@ void CALLBACK XEngine_TaskEvent_Token(XNETHANDLE xhToken, XPVOID lParam) memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); Session_Token_Get(xhToken, &st_UserTable); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Token:%lld,用户名:%s,已经超时,被移除服务器"), xhToken, st_UserTable.st_UserInfo.tszUserName); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Token:%lld,用户名:%s,已经超时,权限级别:%d,被移除服务器"), xhToken, st_UserTable.st_UserInfo.tszUserName, st_UserTable.st_UserInfo.nUserLevel); Session_Token_Delete(xhToken); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp index 4b203d6e1374eeb18c45260350ba8d8374badb8c..9062bc2f0e512a7ed95dfcf3b0ab832899fb3ea6 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp @@ -82,6 +82,10 @@ bool XEngine_Client_WSTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nM Protocol_Parse_HttpParseAuth(lpszMsgBuffer, nMsgLen, &st_UserAuth); XEngine_Client_TCPTask(lpszClientAddr, (LPCXSTR)&st_UserAuth, sizeof(XENGINE_PROTOCOL_USERAUTH), &st_ProtocolHdr, XENGINE_AUTH_APP_NETTYPE_WS); } + if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_HB_SYN == st_ProtocolHdr.unOperatorCode) + { + XEngine_Client_TCPTask(lpszClientAddr, NULL, 0, &st_ProtocolHdr, XENGINE_AUTH_APP_NETTYPE_WS); + } } return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile index e94e7382ce4233f2497ce4cce07b73ca86c81b0d..3a809762889c38996e026e288d634b3713233eb0 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile @@ -15,14 +15,19 @@ LIB = -lXEngine_InfoReport -ljsoncpp \ LIBEX = OBJECTS = Authorize_Config.o Authorize_Net.o Authorize_Task.o Authorize_TCPTask.o Authorize_WSTask.o Authorize_HttpTask.o XEngine_AuthorizeService.o \ AuthorizeHTTP_Client.o AuthorizeHTTP_Serial.o AuthorizeHTTP_User.o AuthorizeHTTP_Pass.o AuthorizeHTTP_Switch.o AuthorizeHTTP_Banned.o AuthorizeHTTP_CDKey.o AuthorizeHTTP_Announcement.o AuthorizeHTTP_Try.o\ - AuthorizeHTTP_Token.o AuthorizeHTTP_DynamicCode.o + AuthorizeHTTP_Token.o AuthorizeHTTP_GetTask.o ifeq ($(RELEASE),1) FLAGS = -c DEBUG = else -FLAGS = -c -lc_p -DEBUG = -g -pg + ifeq ($(PLATFORM),mac) + FLAGS = -c + DEBUG = -g + else + FLAGS = -c -lc_p + DEBUG = -g -pg + endif endif ifeq ($(UNICODE),1) @@ -90,8 +95,8 @@ AuthorizeHTTP_Try.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp AuthorizeHTTP_Token.o:./AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp -AuthorizeHTTP_DynamicCode.o:./AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.cpp - $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./AuthorizeHTTP_Get/AuthorizeHTTP_DynamicCode.cpp +AuthorizeHTTP_GetTask.o:./AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp XEngine_AuthorizeService.o:./XEngine_AuthorizeService.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_AuthorizeService.cpp diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 6b981335be491f2ff8896d65c31cfcefa7fd09a8..d47fb99afd2f831f9f2670899b9b6340aad84be4 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -1,6 +1,8 @@ #include "Authorize_Hdr.h" bool bIsRun = false; +bool bIsTest = false; + XHANDLE xhLog = NULL; XHANDLE xhTCPSocket = NULL; XHANDLE xhWSSocket = NULL; @@ -99,6 +101,7 @@ int main(int argc, char** argv) WSAStartup(MAKEWORD(2, 2), &st_WSAData); #endif bIsRun = true; + int nRet = -1; FILE* pSt_File = NULL; HELPCOMPONENTS_XLOG_CONFIGURE st_XLogConfig; THREADPOOL_PARAMENT** ppSt_ListTCPThread; @@ -315,7 +318,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%d,多端登录:%d,临时试用:%d,黑名单功能:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchBanned); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%d,多端登录:%d,临时试用:%d,黑名单功能:%d,普通TOKEN:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchBanned, st_FunSwitch.bSwitchTokenLogin); pSt_File = _xtfopen(st_AuthConfig.st_XVerification.st_XCDKey.tszKeyFile, _X("rb")); if (NULL == pSt_File) @@ -360,8 +363,14 @@ int main(int argc, char** argv) } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,网络验证服务运行中,XEngien版本:%s%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_OperatorVer_XNumberStr(), BaseLib_OperatorVer_XTypeStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str()); + while (true) { + if (bIsTest) + { + nRet = 0; + break; + } std::this_thread::sleep_for(std::chrono::seconds(1)); } @@ -369,9 +378,16 @@ XENGINE_EXITAPP: if (bIsRun) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动失败,按任意键网络验证服务器退出...")); - bIsRun = false; + if (bIsTest && 0 == nRet) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("服务启动完毕,测试程序退出...")); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("服务启动失败,服务器退出...")); + } + bIsRun = false; HelpComponents_Datas_Destory(xhTCPPacket); RfcComponents_WSPacket_DestoryEx(xhWSPacket); HttpProtocol_Server_DestroyEx(xhHttpPacket); @@ -405,6 +421,5 @@ XENGINE_EXITAPP: #ifdef _WINDOWS WSACleanup(); #endif - getchar(); - return 0; + return nRet; } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj index 8cf8f4c9ae17a0ec1b35343f5818ad116b257b88..87ca55e9796b85451b50cb324c05499006175f06 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj @@ -150,7 +150,7 @@ - + @@ -170,7 +170,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 0ec6c4e8c6544d40a53954f41533a7ad1fe640ef..d0de6cb8f8eac91b67f5ffdf00c0c8f5b8ea5ca9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters @@ -75,12 +75,12 @@ 源文件\AuthorizeHTTP_Post - - 源文件\AuthorizeHTTP_Get - 源文件\AuthorizeHTTP_Post + + 源文件\AuthorizeHTTP_Get + @@ -131,11 +131,11 @@ 头文件\AuthorizeHTTP_Post - - 头文件\AuthorizeHTTP_Get - 头文件\AuthorizeHTTP_Post + + 头文件\AuthorizeHTTP_Get + \ No newline at end of file diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 7c8fc77e5a26d72fa1f313134198e5973069b7bb..a7b440b0c648f37d291ae019b67a482111e1a70b 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 7c8fc77e5a26d72fa1f313134198e5973069b7bb +Subproject commit a7b440b0c648f37d291ae019b67a482111e1a70b