diff --git a/README.en.md b/README.en.md index e040266f2166a163c22acf1d6cad2b43ef418bff..7927f2490cea5fb400686687041664f516451ba5 100644 --- a/README.en.md +++ b/README.en.md @@ -42,18 +42,14 @@ Run it on the terminal,use XEngine_AuthorizeService use vs2019 x86(debug or release) x64(only release) open and complie You need to configure the environment in the following way, otherwise you may need to set the library directory in the project yourself -##### XEngine -XEngine can be download with mine repository,whe you downloaded xengine,you have to add value to you user environment -- XEngine_Include header file path -- XEngine_Library library file path - #### Linux Linux use Makefile complie UBUNTU20.04 x64 or CENTOS8 x64 -##### XEngine环境 -you can install xengine env to your system by shell -like this:sudo XEngine_RunEnv.sh -i 3 +#### XEngine Env +install XEngine can be refer to xengine Readme docment +GITEE:https://gitee.com/xyry/libxengine +GITHUB:https://github.com/libxengine/xengine ##### Screenshot of the program execute command in XEngine_Source path @@ -61,6 +57,10 @@ make complie make FLAGS=InstallAll Install File make FLAGS=CleanAll Clear Complie +## test server +address:app.xyry.org or 159.75.200.173 +port :tcp port 5300,websocket port 5301,Transmission verification password: no encryption + ## Screenshot of the program ![输入图片说明](https://www.xyry.org/authorize/1.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/authorize/2.png "在这里输入图片标题") diff --git a/README.md b/README.md index bae091ecd9669a3cb3ceb5304ffb966b61f4c0d5..0b87b4a3bd6f96a771fc618aa30b6278671ca844 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,7 @@ XEngine版本需要V7.23或者以上版本 ## 编译 #### Windows -使用VS2019 x86(debug release)打开并且编译 你需要按照下面的方式配置环境,不然你可能需要自己在项目中设置库目录 - -##### XEngine环境 -XEngine可以直接下载,下载完毕后添加用户环境变量,需要下面两个 -- XEngine_Include 头文件目录地址 -- XEngine_Library 库文件目录地址 +使用VS2019 x86(debug release)或者x64(release)打开并且编译 你需要按照下面的方式配置环境,不然你可能需要自己在项目中设置库目录 #### Linux Linux使用Makefile编译 @@ -59,6 +54,15 @@ make 编译 make FLAGS=InstallAll 安装库程序 make FLAGS=CleanAll 清理编译 +#### XEngine环境 +安装XEngine可以参考其Readme文档 +GITEE:https://gitee.com/xyry/libxengine +GITHUB:https://github.com/libxengine/xengine + +## 测试服务器 +地址:app.xyry.org 或者 159.75.200.173 +端口:tcp端口 5300,websocket端口 5301,传输验证密码:无加密 + ## 程序截图 ![输入图片说明](https://www.xyry.org/authorize/1.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/authorize/2.png "在这里输入图片标题") @@ -80,4 +84,9 @@ make FLAGS=CleanAll 清理编译 ## 提交问题 -如果你有问题,可以在issues中提交 \ No newline at end of file +如果你有问题,可以在issues中提交 + +## 开发计划 +日志系统升级! +解决临时验证过期时间问题! +用户权限级别优化! \ No newline at end of file diff --git a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp index 9ab80957dcfa2c5fce28aed2853dd857a28eb750..4182ae17e860b927733cf9012d850762cf3bdbaa 100644 --- a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp +++ b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp @@ -2,6 +2,7 @@ #include #include #pragma comment(lib,"Ws2_32.lib") +#pragma comment(lib,"x86//XEngine_Core/XEngine_OPenSsl.lib") #pragma comment(lib,"x86//XEngine_Client/XClient_Socket.lib") #else #include @@ -12,9 +13,11 @@ using namespace std; #include #include +#include +#include +#include #include #include -#include #include #include "../../XEngine_Source/XAuth_Protocol.h" //g++ -std=c++17 -Wall -g Auth_APPClient.cpp -o Auth_APPClient.exe -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_BaseLib -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Client -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_AuthorizeReg -lXEngine_BaseLib -lXClient_Socket -lXEngine_AuthRegClient -lpthread -Wl,-rpath=../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_BaseLib:../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Client:../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_AuthorizeReg,--disable-new-dtags @@ -29,6 +32,7 @@ BOOL bReadTxt = TRUE; BOOL bDelete = TRUE; BOOL bTry = TRUE; BOOL bTimeOut = TRUE; +BOOL bEncrypto = FALSE; SOCKET m_Socket = 0; LPCTSTR lpszUser = _T("123123aa"); @@ -42,17 +46,21 @@ XHTHREAD AuthClient_Thread() { while (bRun) { - int nMsgLen = 2048; - TCHAR tszMsgBuffer[2048]; - - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + int nMsgLen = 0; + TCHAR *ptszMsgBuffer; + XENGINE_PROTOCOLHDR st_ProtocolHdr; - if (XClient_TCPSelect_RecvMsg(m_Socket, tszMsgBuffer, &nMsgLen, TRUE)) + memset(&st_ProtocolHdr, '\0', sizeof(XENGINE_PROTOCOLHDR)); + if (XClient_TCPSelect_RecvPkt(m_Socket, &ptszMsgBuffer, &nMsgLen, &st_ProtocolHdr)) { - XENGINE_PROTOCOLHDR st_ProtocolHdr; - memset(&st_ProtocolHdr, '\0', sizeof(XENGINE_PROTOCOLHDR)); - memcpy(&st_ProtocolHdr, tszMsgBuffer, sizeof(XENGINE_PROTOCOLHDR)); + TCHAR tszMsgBuffer[4096]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + if (nMsgLen > 0) + { + //只有有后续数据的情况才需要解密 + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, lpszPass); + } if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPDEL == st_ProtocolHdr.unOperatorCode) { bDelete = FALSE; @@ -67,9 +75,9 @@ XHTHREAD AuthClient_Thread() } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPREGISTER == st_ProtocolHdr.unOperatorCode) { + bRegiser = FALSE; if (0 == st_ProtocolHdr.wReserve) { - bRegiser = FALSE; printf(_T("注册成功\n")); } else @@ -79,9 +87,9 @@ XHTHREAD AuthClient_Thread() } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN == st_ProtocolHdr.unOperatorCode) { + bLogin = FALSE; if (0 == st_ProtocolHdr.wReserve) { - bLogin = FALSE; printf(_T("登录成功\n")); } else @@ -91,9 +99,9 @@ XHTHREAD AuthClient_Thread() } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPPAY == st_ProtocolHdr.unOperatorCode) { + bPay = FALSE; if (0 == st_ProtocolHdr.wReserve) { - bPay = FALSE; printf(_T("充值成功\n")); } else @@ -103,14 +111,21 @@ XHTHREAD AuthClient_Thread() } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPGETPASS == st_ProtocolHdr.unOperatorCode) { + bPass = FALSE; if (0 == st_ProtocolHdr.wReserve) { - XENGINE_PROTOCOL_USERAUTH st_AuthProtocol; - memset(&st_AuthProtocol, '\0', sizeof(XENGINE_PROTOCOL_USERAUTH)); - memcpy(&st_AuthProtocol, tszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), sizeof(XENGINE_PROTOCOL_USERAUTH)); - - bPass = FALSE; - printf(_T("找回密码成功,账号:%s,密码:%s\n"), st_AuthProtocol.tszUserName, st_AuthProtocol.tszUserPass); + if (0 == st_ProtocolHdr.unPacketSize) + { + printf(_T("找回密码成功,账号密码已发送到你的邮箱\n")); + } + else + { + XENGINE_PROTOCOL_USERAUTH st_AuthProtocol; + memset(&st_AuthProtocol, '\0', sizeof(XENGINE_PROTOCOL_USERAUTH)); + memcpy(&st_AuthProtocol, tszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), sizeof(XENGINE_PROTOCOL_USERAUTH)); + + printf(_T("找回密码成功,账号:%s,密码:%s\n"), st_AuthProtocol.tszUserName, st_AuthProtocol.tszUserPass); + } } else { @@ -119,13 +134,13 @@ XHTHREAD AuthClient_Thread() } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPGETTIME == st_ProtocolHdr.unOperatorCode) { + bLeftTime = FALSE; if (0 == st_ProtocolHdr.wReserve) { AUTHREG_PROTOCOL_TIME st_AuthTime; memset(&st_AuthTime, '\0', sizeof(AUTHREG_PROTOCOL_TIME)); memcpy(&st_AuthTime, tszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), sizeof(AUTHREG_PROTOCOL_TIME)); - bLeftTime = FALSE; printf(_T("获取剩余时间成功,账号:%s,地址:%s,剩余时间:%lld 分钟,在线时间:%lld,过期日期:%s,类型:%d\n"), st_AuthTime.tszUserName, st_AuthTime.tszUserAddr, st_AuthTime.nTimeLeft, st_AuthTime.nTimeONLine, st_AuthTime.tszLeftTime, st_AuthTime.enSerialType); } else @@ -135,9 +150,9 @@ XHTHREAD AuthClient_Thread() } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_NOTIFYMSG == st_ProtocolHdr.unOperatorCode) { + bReadTxt = FALSE; if (0 == st_ProtocolHdr.wReserve) { - bReadTxt = FALSE; TCHAR tszMsgInfo[2048]; memset(tszMsgInfo, '\0', sizeof(tszMsgInfo)); memcpy(tszMsgInfo, tszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), st_ProtocolHdr.unPacketSize); @@ -151,9 +166,9 @@ XHTHREAD AuthClient_Thread() } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPTRYVER == st_ProtocolHdr.unOperatorCode) { + bTry = FALSE; if (0 == st_ProtocolHdr.wReserve) { - bTry = FALSE; printf(_T("临时验证成功\n")); } else @@ -176,25 +191,45 @@ XHTHREAD AuthClient_Thread() return 0; } -BOOL AuthRegClient_Protocol_Send(LPCTSTR lpszMsgBuffer, TCHAR* ptszMsgBuffer, int* pInt_MsgLen, UINT en_AuthProtocol, BYTE byCrypto = 0) +BOOL AuthRegClient_Protocol_Send(LPCTSTR lpszMsgBuffer, TCHAR* ptszMsgBuffer, int* pInt_MsgLen, UINT en_AuthProtocol) { //填充协议 + TCHAR tszMsgBuffer[4096]; XENGINE_PROTOCOLHDR st_ProtocolHdr; //协议头 + + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); memset(&st_ProtocolHdr, '\0', sizeof(XENGINE_PROTOCOLHDR)); st_ProtocolHdr.wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER; st_ProtocolHdr.unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH; st_ProtocolHdr.unOperatorCode = en_AuthProtocol; st_ProtocolHdr.unPacketSize = *pInt_MsgLen; - st_ProtocolHdr.wCrypto = byCrypto; st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL; - memcpy(ptszMsgBuffer, &st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)); - if (*pInt_MsgLen > 0) + if (bEncrypto) { - memcpy(ptszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), lpszMsgBuffer, st_ProtocolHdr.unPacketSize); + st_ProtocolHdr.wCrypto = ENUM_XENGINE_PROTOCOLHDR_CRYPTO_TYPE_XCRYPT; + if (*pInt_MsgLen > 0) + { + OPenSsl_XCrypto_Encoder(lpszMsgBuffer, (int*)&st_ProtocolHdr.unPacketSize, (UCHAR*)tszMsgBuffer, lpszPass); + memcpy(ptszMsgBuffer, &st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)); + memcpy(ptszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), tszMsgBuffer, st_ProtocolHdr.unPacketSize); + } + else + { + memcpy(ptszMsgBuffer, &st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)); + } + *pInt_MsgLen = sizeof(XENGINE_PROTOCOLHDR) + st_ProtocolHdr.unPacketSize; + } + else + { + memcpy(ptszMsgBuffer, &st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR)); + if (*pInt_MsgLen > 0) + { + memcpy(ptszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), lpszMsgBuffer, st_ProtocolHdr.unPacketSize); + } + *pInt_MsgLen = sizeof(XENGINE_PROTOCOLHDR) + st_ProtocolHdr.unPacketSize; } - *pInt_MsgLen = sizeof(XENGINE_PROTOCOLHDR) + st_ProtocolHdr.unPacketSize; return TRUE; } int AuthClient_Register() @@ -261,14 +296,6 @@ int AuthClient_Login() strcpy(st_AuthUser.tszUserPass, lpszPass); int nMsgLen = sizeof(XENGINE_PROTOCOL_USERAUTH); - - /*使用加密发送 - CHAR tszEnBuffer[2048]; - memset(tszEnBuffer, '\0', sizeof(tszEnBuffer)); - - OPenSsl_XCrypto_Encoder((LPCTSTR)&st_AuthUser, &nMsgLen, (UCHAR*)tszMsgBuffer, "123123"); - AuthRegClient_Protocol_Send(tszMsgBuffer, tszEnBuffer, &nMsgLen, XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN, 4); - */ AuthRegClient_Protocol_Send((LPCTSTR)&st_AuthUser, tszMsgBuffer, &nMsgLen, XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN); if (!XClient_TCPSelect_SendMsg(m_Socket, tszMsgBuffer, nMsgLen)) { @@ -393,7 +420,6 @@ int AuthClient_Try() } return 0; } - int main() { #ifdef _WINDOWS diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index b28553fca3bcaba9ba034d86a8eec926b8af7e92..8b293144d2b1f991055cd345852d72c67ac01202 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 8edcb34db54a35cd31a4656072a44c157fb15101..4ed37d2e3a3bc3ddc51c316616d161a787394e4d 100644 Binary files a/XEngine_Docment/Docment_zh.docx and b/XEngine_Docment/Docment_zh.docx differ diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.ini b/XEngine_Release/XEngine_Config/XEngine_Config.ini index 7de84eae8c7b6b0830c01609d1c02cc4d918b827..058e1dfcb4bf4865e85eaa6c6c5c236daca65df2 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.ini +++ b/XEngine_Release/XEngine_Config/XEngine_Config.ini @@ -16,6 +16,7 @@ TryMode=1 Enable=0 Pass=123123 [SmtpConfig] +SmtpEnable=0 SmtpService=smtp.qq.com SmtpFromAddr=486179@qq.com SmtpUser=123123aa diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index da61ed3a6f00dc9ac5e263e83fe3f978cfe3d3f1..9535e5a0dbb0ce669c37403940697ba6d2911010 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -36,6 +36,7 @@ typedef struct }st_Crypto; struct { + BOOL bSmtpEnable; //ǷSMTP TCHAR tszSmtpAddr[MAX_PATH]; //SMTP TCHAR tszSmtpFrom[MAX_PATH]; //ظַ TCHAR tszSmtpUser[MAX_PATH]; //û diff --git a/XEngine_Source/AuthorizeModule_Configure/Configure_ini/Configure_ini.cpp b/XEngine_Source/AuthorizeModule_Configure/Configure_ini/Configure_ini.cpp index 62c783bf0d9c9c9a0bfc0c3468755a77a6f67c8b..d448dfd3cf92bff35dc6dfb2153cf928172fb34f 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Configure_ini/Configure_ini.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/Configure_ini/Configure_ini.cpp @@ -65,6 +65,7 @@ BOOL CConfigure_IniFile::Configure_IniFile_Read(LPCTSTR lpszFile, AUTHORIZE_CONF pSt_AuthConfig->st_Crypto.bEnable = GetPrivateProfileInt(_T("Crypto"), _T("Enable"), 0, lpszFile); pSt_AuthConfig->st_Crypto.nPassword = GetPrivateProfileInt(_T("Crypto"), _T("Pass"), 0, lpszFile); + pSt_AuthConfig->st_EMail.bSmtpEnable = GetPrivateProfileInt(_T("SmtpConfig"), _T("SmtpEnable"), 0, lpszFile); GetPrivateProfileString(_T("SmtpConfig"), _T("SmtpService"), NULL, pSt_AuthConfig->st_EMail.tszSmtpAddr, MAX_PATH, lpszFile); GetPrivateProfileString(_T("SmtpConfig"), _T("SmtpFromAddr"), NULL, pSt_AuthConfig->st_EMail.tszSmtpFrom, MAX_PATH, lpszFile); GetPrivateProfileString(_T("SmtpConfig"), _T("SmtpUser"), NULL, pSt_AuthConfig->st_EMail.tszSmtpUser, MAX_PATH, lpszFile); @@ -146,6 +147,9 @@ BOOL CConfigure_IniFile::Configure_IniFile_Write(LPCTSTR lpszFile, AUTHORIZE_CON _stprintf(tszBuffer, _T("%d"), pSt_AuthConfig->st_Crypto.nPassword); WritePrivateProfileString(_T("Crypto"), _T("Pass"), tszBuffer, lpszFile); + memset(tszBuffer, '\0', MAX_PATH); + _stprintf(tszBuffer, _T("%d"), pSt_AuthConfig->st_EMail.bSmtpEnable); + WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpEnable"), tszBuffer, lpszFile); WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpService"), pSt_AuthConfig->st_EMail.tszSmtpAddr, lpszFile); WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpFromAddr"), pSt_AuthConfig->st_EMail.tszSmtpFrom, lpszFile); WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpUser"), pSt_AuthConfig->st_EMail.tszSmtpUser, lpszFile); diff --git a/XEngine_Source/VSCopy.bat b/XEngine_Source/VSCopy.bat index 4f6ca18d0c8a0ba214c52b39d9cc7ea31be1f43d..859e117e365aba9dd90a269e43b51c8780adb7c7 100644 --- a/XEngine_Source/VSCopy.bat +++ b/XEngine_Source/VSCopy.bat @@ -11,6 +11,7 @@ copy /y "%XEngine_Library%\x86\XEngine_HelpComponents\HelpComponents_Authorize.d copy /y "%XEngine_Library%\x86\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Library%\x86\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" +copy /y "%XEngine_Library%\x86\XEngine_RfcComponents\RfcComponents_EmailClient.dll" "./" copy /y "%XEngine_Library%\x86\XEngine_HelpComponents\bson-1.0.dll" "./" copy /y "%XEngine_Library%\x86\XEngine_HelpComponents\mongoc-1.0.dll" "./" @@ -19,4 +20,5 @@ copy /y "%XEngine_Library%\x86\XEngine_HelpComponents\libpq.dll" "./" copy /y "%XEngine_Library%\x86\XEngine_HelpComponents\sqlite3.dll" "./" copy /y "%XEngine_Library%\x86\XEngine_HelpComponents\zlib1.dll" "./" copy /y "%XEngine_Library%\x86\XEngine_LibEx\libcrypto-1_1.dll" "./" -copy /y "%XEngine_Library%\x86\XEngine_LibEx\libssl-1_1.dll" "./" \ No newline at end of file +copy /y "%XEngine_Library%\x86\XEngine_LibEx\libssl-1_1.dll" "./" +copy /y "%XEngine_Library%\x86\XEngine_LibEx\libcurl.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/VSCopy_Debug.bat b/XEngine_Source/VSCopy_Debug.bat index 6ff9d30c16e04704cdcfdfa5d522af0c6331f3dd..daada8024e8d9dfc13252866d248a80936e04636 100644 --- a/XEngine_Source/VSCopy_Debug.bat +++ b/XEngine_Source/VSCopy_Debug.bat @@ -10,4 +10,5 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_XLog.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_Authorize.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemApi.dll" "./" -copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_WSProtocol.dll" "./" \ No newline at end of file +copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_WSProtocol.dll" "./" +copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_EmailClient.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/CDialog_Configure.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/CDialog_Configure.cpp index 094be1c821d04874784b3664a76f93667d68e5e0..448828594a310d2d6e3fa61bde13eef4a9c224f5 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/CDialog_Configure.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/CDialog_Configure.cpp @@ -42,6 +42,7 @@ void CDialog_Configure::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_EDIT10, m_EditSmtpPass); DDX_Control(pDX, IDC_EDIT15, m_EditWSPort); DDX_Control(pDX, IDC_CHECK2, m_EditTimeNotift); + DDX_Control(pDX, IDC_CHECK3, m_CheckEnableEmail); } @@ -65,7 +66,6 @@ BOOL CDialog_Configure::OnInitDialog() LPCTSTR lpszFile = _T("./XEngine_Config/XEngine_Config.ini"); memset(&st_AuthConfig, '\0', sizeof(AUTHORIZE_CONFIGURE)); Configure_IniFile_Read(lpszFile, &st_AuthConfig); - AuthorizeService_ReadConfigure(); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE @@ -122,6 +122,16 @@ void CDialog_Configure::AuthorizeService_ReadConfigure() m_RadioKeyDisable.SetCheck(TRUE); m_RadioKeyPass.SetCheck(FALSE); } + + if (st_AuthConfig.st_EMail.bSmtpEnable) + { + m_CheckEnableEmail.SetCheck(1); + } + else + { + m_CheckEnableEmail.SetCheck(0); + } + m_StrConfigCrypt.Format(_T("%d"), st_AuthConfig.st_Crypto.nPassword); m_EditPass.SetWindowText(m_StrConfigCrypt.GetBuffer()); @@ -147,6 +157,7 @@ void CDialog_Configure::AuthorizeService_ReadConfigure() } void CDialog_Configure::AuthorizeService_WriteConfigure() { + LPCTSTR lpszConfigFile = _T("./XEngine_Config/XEngine_Config.ini"); CString m_StrConfigTCPPort; //服务器端口 CString m_StrConfigWSPort; CString m_StrConfigThread; //启动的线程个数 @@ -164,40 +175,76 @@ void CDialog_Configure::AuthorizeService_WriteConfigure() CString m_StrConfigSmtpUser; //用户名 CString m_StrConfigSmtpPass; //密码 + m_EditServicePort.GetWindowText(m_StrConfigTCPPort); + m_EditWSPort.GetWindowText(m_StrConfigWSPort); + m_EditThreadPool.GetWindowText(m_StrConfigThread); + m_EditVerTimedout.GetWindowText(m_StrTimedOut); + + m_EditTryTime.GetWindowText(m_StrConfigTryTime); + m_EditAuthTime.GetWindowText(m_StrConfigAuthTime); + m_StrConfigTryMode.Format(_T("%d"), m_ComboRegTry.GetCurSel()); + m_StrConfigAuthMode.Format(_T("%d"), m_ComboListAuth.GetCurSel()); + + m_EditPass.GetWindowText(m_StrConfigCrypt); + + m_EditSmtpAddr.GetWindowText(m_StrConfigSmtpAddr); + m_EditFromAddr.GetWindowText(m_StrConfigSmtpFrom); + m_EditSmtpUser.GetWindowText(m_StrConfigSmtpUser); + m_EditSmtpPass.GetWindowText(m_StrConfigSmtpPass); + + WritePrivateProfileString(_T("ServiceConfig"), _T("TCPPort"), m_StrConfigTCPPort.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("ServiceConfig"), _T("WSPort"), m_StrConfigWSPort.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("ServiceConfig"), _T("ThreadPool"), m_StrConfigThread.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("ServiceConfig"), _T("UserVerTimed"), m_StrTimedOut.GetBuffer(), lpszConfigFile); + + if (BST_CHECKED == m_BtnAutoStart.GetCheck()) + { + WritePrivateProfileString(_T("ServiceConfig"), _T("AutoStart"), _T("1"), lpszConfigFile); + } + else + { + WritePrivateProfileString(_T("ServiceConfig"), _T("AutoStart"), _T("0"), lpszConfigFile); + } if (BST_CHECKED == m_EditTimeNotift.GetCheck()) { - st_AuthConfig.bTimeNotify = TRUE; + WritePrivateProfileString(_T("ServiceConfig"), _T("TimeNotify"), _T("1"), lpszConfigFile); } else { - st_AuthConfig.bTimeNotify = FALSE; + WritePrivateProfileString(_T("ServiceConfig"), _T("TimeNotify"), _T("0"), lpszConfigFile); } - m_EditServicePort.GetWindowText(m_StrConfigTCPPort); - m_EditWSPort.GetWindowText(m_StrConfigWSPort); - m_EditThreadPool.GetWindowText(m_StrConfigThread); - m_EditVerTimedout.GetWindowText(m_StrTimedOut); - st_AuthConfig.nTCPPort = _ttoi(m_StrConfigTCPPort.GetBuffer()); - st_AuthConfig.nWSPort = _ttoi(m_StrConfigWSPort.GetBuffer()); - st_AuthConfig.nThreads = _ttoi(m_StrConfigThread.GetBuffer()); - st_AuthConfig.nVerTimeout = _ttoi(m_StrTimedOut.GetBuffer()); - st_AuthConfig.bAutoStart = m_BtnAutoStart.GetCheck(); + WritePrivateProfileString(_T("Verification"), _T("TryTime"), m_StrConfigTryTime.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("Verification"), _T("VerTime"), m_StrConfigAuthTime.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("Verification"), _T("TryMode"), m_StrConfigTryMode.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("Verification"), _T("VerMode"), m_StrConfigAuthMode.GetBuffer(), lpszConfigFile); - m_EditTryTime.GetWindowText(m_StrConfigTryTime); - m_EditAuthTime.GetWindowText(m_StrConfigAuthTime); - st_AuthConfig.st_Verification.nTryMode = m_ComboRegTry.GetCurSel(); - st_AuthConfig.st_Verification.nVerMode = m_ComboListAuth.GetCurSel(); - st_AuthConfig.st_Verification.nTryTime = _ttoi(m_StrConfigTryTime.GetBuffer()); - st_AuthConfig.st_Verification.nVerTime = _ttoi(m_StrConfigAuthTime.GetBuffer()); + if (BST_CHECKED == m_RadioKeyPass.GetCheck()) + { + WritePrivateProfileString(_T("Crypto"), _T("Enable"), _T("1"), lpszConfigFile); + WritePrivateProfileString(_T("Crypto"), _T("Pass"), m_StrConfigCrypt.GetBuffer(), lpszConfigFile); + } + else + { + WritePrivateProfileString(_T("Crypto"), _T("Enable"), _T("0"), lpszConfigFile); + } - m_EditPass.GetWindowText(m_StrConfigCrypt); - st_AuthConfig.st_Crypto.bEnable = m_RadioKeyPass.GetCheck(); - st_AuthConfig.st_Crypto.nPassword = _ttoi(m_StrConfigCrypt.GetBuffer()); + if (BST_CHECKED == m_CheckEnableEmail.GetCheck()) + { + WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpEnable"), _T("1"), lpszConfigFile); + } + else + { + WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpEnable"), _T("0"), lpszConfigFile); + } + WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpService"), m_StrConfigSmtpAddr.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpFromAddr"), m_StrConfigSmtpFrom.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpUser"), m_StrConfigSmtpUser.GetBuffer(), lpszConfigFile); + WritePrivateProfileString(_T("SmtpConfig"), _T("SmtpPass"), m_StrConfigSmtpPass.GetBuffer(), lpszConfigFile); - m_EditSmtpAddr.GetWindowText(st_AuthConfig.st_EMail.tszSmtpAddr, MAX_PATH); - m_EditFromAddr.GetWindowText(st_AuthConfig.st_EMail.tszSmtpFrom, MAX_PATH); - m_EditSmtpUser.GetWindowText(st_AuthConfig.st_EMail.tszSmtpUser, MAX_PATH); - m_EditSmtpPass.GetWindowText(st_AuthConfig.st_EMail.tszSmtpPass, MAX_PATH); + Configure_IniFile_Read(lpszConfigFile, &st_AuthConfig); + AuthorizeService_ReadConfigure(); + AfxMessageBox(_T("保存成功!")); } void CDialog_Configure::OnBnClickedButton1() @@ -255,4 +302,4 @@ void CDialog_Configure::OnBnClickedRadio1() m_RadioKeyDisable.SetCheck(0); m_EditPass.EnableWindow(TRUE); -} +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/CDialog_Configure.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/CDialog_Configure.h index 6f16dfcc64c6b14c1f804ce9fb028e3aa83aaf3a..40b2f3ffbec6755d6da2138900747cd592acf56f 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/CDialog_Configure.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/CDialog_Configure.h @@ -48,4 +48,5 @@ public: afx_msg void OnBnClickedRadio1(); CEdit m_EditWSPort; CButton m_EditTimeNotift; + CButton m_CheckEnableEmail; }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Task/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Task/Authorize_TCPTask.cpp index 572b9cc12a125682e6eb7d7298baae9cb1de842c..2bd57c43fd74355b50a53a299fbbe092641a446c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Task/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Task/Authorize_TCPTask.cpp @@ -149,6 +149,14 @@ BOOL XEngine_Client_TaskHandle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in XEngine_Authorize_LogPrint(lParam, _T("ͻˣ%sû%s¼ʧܣû"), lpszClientAddr, st_AuthProtocol.tszUserName); return FALSE; } + + if (_tcslen(st_AuthProtocol.tszUserPass) != _tcslen(st_UserTable.st_UserInfo.tszUserPass)) + { + pSt_ProtocolHdr->wReserve = 252; + XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, lParam, nNetType); + XEngine_Authorize_LogPrint(lParam, _T("ͻˣ%sû%s¼ʧܣ"), lpszClientAddr, st_AuthProtocol.tszUserName); + return FALSE; + } if (0 != _tcsncmp(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass, _tcslen(st_AuthProtocol.tszUserPass))) { pSt_ProtocolHdr->wReserve = 252; @@ -263,11 +271,35 @@ BOOL XEngine_Client_TaskHandle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in XEngine_Authorize_LogPrint(lParam, _T("ͻˣ%sû%sһʧܣ֤Ϣʧ"), lpszClientAddr, st_UserInfo.tszUserName); return FALSE; } - _tcscpy(st_AuthProtocol.tszUserName, st_UserTable.st_UserInfo.tszUserName); - _tcscpy(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass); - pSt_ProtocolHdr->wReserve = 0; - XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, lParam, nNetType, (LPCTSTR)&st_AuthProtocol, sizeof(XENGINE_PROTOCOL_USERAUTH)); + if (st_AuthConfig.st_EMail.bSmtpEnable) + { + XNETHANDLE xhEMail; + TCHAR tszEMailBuffer[1024]; + RFCCOMPONENTS_EMAILSMTP st_EmailInfo; + + memset(tszEMailBuffer, '\0', sizeof(tszEMailBuffer)); + memset(&st_EmailInfo, '\0', sizeof(RFCCOMPONENTS_EMAILSMTP)); + + _tcscpy(st_EmailInfo.tszServiceAddr, st_AuthConfig.st_EMail.tszSmtpAddr); + _tcscpy(st_EmailInfo.tszUserName, st_AuthConfig.st_EMail.tszSmtpUser); + _tcscpy(st_EmailInfo.tszPassWord, st_AuthConfig.st_EMail.tszSmtpPass); + _tcscpy(st_EmailInfo.tszFromAddr, st_AuthConfig.st_EMail.tszSmtpFrom); + + _stprintf(tszEMailBuffer, _T("û:%s\r\n:%s\r\n"), st_UserTable.st_UserInfo.tszUserName, st_UserTable.st_UserInfo.tszUserPass); + RfcComponents_EMailClient_SmtpInit(&xhEMail, &st_EmailInfo); + RfcComponents_EMailClient_SmtpSend(xhEMail, st_UserTable.st_UserInfo.tszEMailAddr, _T("XEngineȨ֤-һ"), tszEMailBuffer); + RfcComponents_EMailClient_SmtpClose(xhEMail); + XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, lParam, nNetType); + } + else + { + _tcscpy(st_AuthProtocol.tszUserName, st_UserTable.st_UserInfo.tszUserName); + _tcscpy(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass); + + pSt_ProtocolHdr->wReserve = 0; + XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, lParam, nNetType, (LPCTSTR)&st_AuthProtocol, sizeof(XENGINE_PROTOCOL_USERAUTH)); + } XEngine_Authorize_LogPrint(lParam, _T("ͻˣ%sû%sһɹ"), lpszClientAddr, st_UserInfo.tszUserName); } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQGETTIME == pSt_ProtocolHdr->unOperatorCode) @@ -401,7 +433,7 @@ BOOL XEngine_Client_TaskHandle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in pSt_ProtocolHdr->wReserve = 2101; XEngine_Authorize_LogPrint(lParam, _T("ͻˣ%sû%sѯûϢʧ,ʻ"), lpszClientAddr, st_UserInfo.tszUserName); } - XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, lParam, nNetType); + XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, lParam, nNetType, (LPCTSTR)&st_UserTable, sizeof(AUTHREG_USERTABLE)); } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQSETUSER == pSt_ProtocolHdr->unOperatorCode) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Task/Authorize_WSTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Task/Authorize_WSTask.cpp index dd5ae1f85eabd4b7a8f2d9c75180217fddd9b461..d28e17cd77ff55fbd36d5401415049cefeff4996 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Task/Authorize_WSTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Task/Authorize_WSTask.cpp @@ -26,7 +26,21 @@ XHTHREAD CALLBACK XEngine_AuthService_WSThread(LPVOID lParam) { continue; } - XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, enOPCode, pSt_ThreadInfo->lPClass); + //如果使用加密,客户端只能使用XCrypto 加密 + if (BST_CHECKED == pClass_This->m_DlgConfig.m_RadioKeyPass.GetCheck()) + { + CString m_StrPass; + TCHAR tszDeBuffer[2048]; + memset(tszDeBuffer, '\0', sizeof(tszDeBuffer)); + + pClass_This->m_DlgConfig.m_EditPass.GetWindowText(m_StrPass); + OPenSsl_XCrypto_Decoder(tszMsgBuffer, &nMsgLen, tszDeBuffer, m_StrPass.GetBuffer()); + XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszDeBuffer, nMsgLen, enOPCode, pSt_ThreadInfo->lPClass); + } + else + { + XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, enOPCode, pSt_ThreadInfo->lPClass); + } } BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListClient, nListCount); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps index 5558a8ba3e3f6d3e2127f4b9b3727420d824c423..dd15fa841f4e39cfaf1da01575405fa74405c509 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 f657753bf96ccbee3e95a7d9a6c970d507b43e57..7c60c03f1991032547a806ea144975aa25ddbaf7 100644 Binary files a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc and b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc differ diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp index ab564115d01dfe4ca9d732a8033ebceac7fd0df9..ed95100505945fe18970fa32a147f3b0bd0c3d66 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp @@ -39,8 +39,14 @@ BEGIN_MESSAGE_MAP(CXEngineAuthorizeAppDlg, CDialogEx) ON_BN_CLICKED(IDC_BUTTON1, &CXEngineAuthorizeAppDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CXEngineAuthorizeAppDlg::OnBnClickedButton2) ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1) + ON_MESSAGE(WINSDK_SKIN_USERMSG_TRAY, OnAddTrayIcon)//添加消息映射 ON_BN_CLICKED(IDC_BUTTON4, &CXEngineAuthorizeAppDlg::OnBnClickedButton4) ON_WM_DESTROY() + ON_COMMAND(ID_32771, &CXEngineAuthorizeAppDlg::On32771) + ON_COMMAND(ID_32772, &CXEngineAuthorizeAppDlg::On32772) + ON_COMMAND(ID_32773, &CXEngineAuthorizeAppDlg::On32773) + ON_COMMAND(ID_32774, &CXEngineAuthorizeAppDlg::On32774) + ON_COMMAND(ID_32775, &CXEngineAuthorizeAppDlg::On32775) END_MESSAGE_MAP() @@ -62,14 +68,14 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() HANDLE hMutex = CreateMutex(NULL, TRUE, _T("XEngine_AuthorizeApp")); if (NULL != hMutex) { - if (GetLastError() == ERROR_ALREADY_EXISTS) + DWORD dwRet = GetLastError(); + if (dwRet == ERROR_ALREADY_EXISTS) { - AfxMessageBox(_T("程序已经运行!")); + AfxMessageBox(_T("程序已经运行,无法继续运行!")); CloseHandle(hMutex); - return FALSE; + OnCancel(); } } - CloseHandle(hMutex); m_TabCtrl.InsertItem(0, _T("服务配置")); m_TabCtrl.InsertItem(1, _T("用户管理")); @@ -109,8 +115,7 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() if (st_AuthConfig.bAutoStart) { - OnBnClickedButton1(); - ShowWindow(SW_HIDE); + OnBnClickedButton3(); } return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } @@ -346,3 +351,57 @@ void CXEngineAuthorizeAppDlg::OnDestroy() SystemApi_Skin_CreateTrayTip(m_hWnd, _T("血与荣誉网络验证服务"), WINSDK_SKIN_USERMSG_TRAY, IDR_MAINFRAME, FALSE); WSACleanup(); } +LRESULT CXEngineAuthorizeAppDlg::OnAddTrayIcon(WPARAM wParam, LPARAM lParam) +{ + if (wParam == IDR_MAINFRAME) + { + switch (lParam) + { + case WM_RBUTTONDOWN: + CMenu m_Menu; + CPoint m_Point; + m_Menu.LoadMenu(IDR_MENU1); + CMenu* pSubMenu = m_Menu.GetSubMenu(0); + GetCursorPos(&m_Point); + SetForegroundWindow(); //解决托盘菜单不消失 + pSubMenu->TrackPopupMenu(TPM_LEFTALIGN, m_Point.x, m_Point.y, this); + PostMessage(WM_NULL, 0, 0); //解决托盘菜单不消失 + break; + } + } + return S_OK; +} + +void CXEngineAuthorizeAppDlg::On32771() +{ + // TODO: 在此添加命令处理程序代码 + ShowWindow(SW_SHOW); +} + + +void CXEngineAuthorizeAppDlg::On32772() +{ + // TODO: 在此添加命令处理程序代码 + ShowWindow(SW_HIDE); +} + + +void CXEngineAuthorizeAppDlg::On32773() +{ + // TODO: 在此添加命令处理程序代码 + OnBnClickedButton3(); +} + + +void CXEngineAuthorizeAppDlg::On32774() +{ + // TODO: 在此添加命令处理程序代码 + OnBnClickedButton4(); +} + + +void CXEngineAuthorizeAppDlg::On32775() +{ + // TODO: 在此添加命令处理程序代码 + OnOK(); +} diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h index fba068b5911fd9c3038f293fa99e0dcf90e12f6c..74948ff080e8759d5ee2c1a47817eccc0b5f0033 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h @@ -27,6 +27,7 @@ protected: virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); + afx_msg LRESULT OnAddTrayIcon(WPARAM wParam, LPARAM lParam); DECLARE_MESSAGE_MAP() public: CDialog_Configure m_DlgConfig; @@ -39,6 +40,7 @@ public: THREADPOOL_PARAMENT** ppSt_ThreadTCPParament; THREADPOOL_PARAMENT** ppSt_ThreadWSParament; public: + BOOL bShow; CEdit m_EditLog; afx_msg void OnBnClickedButton3(); afx_msg void OnBnClickedButton1(); @@ -49,4 +51,9 @@ public: afx_msg void OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnBnClickedButton4(); afx_msg void OnDestroy(); + afx_msg void On32771(); + afx_msg void On32772(); + afx_msg void On32773(); + afx_msg void On32774(); + afx_msg void On32775(); }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h index 7be7dc15c2eb272cbfef2069bcc2b931d9329591..f50a42c2b5fc36af15df880d5bc5155852929a80 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h @@ -34,6 +34,8 @@ using namespace std; #include #include #include +#include +#include #include #include #include @@ -103,4 +105,5 @@ typedef struct #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Packets.lib") #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Authorize.lib") #pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol.lib") +#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_EmailClient.lib") #pragma comment(lib,"XEngine_SystemSdk/XEngine_SystemApi.lib") \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h index 6297373a9ad70bf581d6cddd7671a603f5079991..048db1471bebb6a4b0b35b92a7ea15d1e4417132 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h @@ -9,6 +9,7 @@ #define IDD_DIALOG_USER 134 #define IDD_DIALOG_LOCAL 136 #define IDD_DIALOG_MODIFY 138 +#define IDR_MENU1 140 #define IDC_TAB1 1000 #define IDC_EDIT1 1001 #define IDC_BUTTON1 1002 @@ -46,14 +47,20 @@ #define IDC_IPADDRESS1 1021 #define IDC_CHECK2 1024 #define IDC_BUTTON6 1025 +#define IDC_CHECK3 1025 #define IDC_BUTTON7 1026 +#define ID_32771 32771 +#define ID_32772 32772 +#define ID_32773 32773 +#define ID_32774 32774 +#define ID_32775 32775 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 140 -#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_RESOURCE_VALUE 141 +#define _APS_NEXT_COMMAND_VALUE 32776 #define _APS_NEXT_CONTROL_VALUE 1026 #define _APS_NEXT_SYMED_VALUE 101 #endif diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 79941b276ca1acd9ac59b02087497639087564b4..f1245da20173decdd4ac468f04c14676b0026280 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -35,6 +35,8 @@ using namespace std; #include #include #include +#include +#include #include "../../XAuth_Protocol.h" #include "../../XEngine_AuthComponents/AuthComponents_SQLPacket/SQLPacket_Define.h" #include "../../XEngine_AuthComponents/AuthComponents_SQLPacket/SQLPacket_Error.h" @@ -92,4 +94,5 @@ extern AUTHORIZE_CONFIGURE st_AuthConfig; #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Packets.lib") #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Authorize.lib") #pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol.lib") +#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_EmailClient.lib") #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index d98d9540e027d60c795fc1e2df27e415015bf0a4..8ee09044c1be6da4cb5a18fbbd64a3d5b7c04969 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -136,6 +136,13 @@ BOOL XEngine_Client_TCPTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int n XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("客户端:%s,用户名:%s,登录失败,用户名不存在"), lpszClientAddr, st_AuthProtocol.tszUserName); return FALSE; } + if (_tcslen(st_AuthProtocol.tszUserPass) != _tcslen(st_UserTable.st_UserInfo.tszUserPass)) + { + pSt_ProtocolHdr->wReserve = 252; + XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("客户端:%s,用户名:%s,登录失败,密码错误"), lpszClientAddr, st_AuthProtocol.tszUserName); + return FALSE; + } if (0 != _tcsncmp(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass, _tcslen(st_AuthProtocol.tszUserPass))) { pSt_ProtocolHdr->wReserve = 252; @@ -222,11 +229,34 @@ BOOL XEngine_Client_TCPTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int n XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("客户端:%s,用户名:%s,找回密码失败,验证信息失败"), lpszClientAddr, st_UserInfo.tszUserName); return FALSE; } - _tcscpy(st_AuthProtocol.tszUserName, st_UserTable.st_UserInfo.tszUserName); - _tcscpy(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass); + if (st_AuthConfig.st_EMail.bSmtpEnable) + { + XNETHANDLE xhEMail; + TCHAR tszEMailBuffer[1024]; + RFCCOMPONENTS_EMAILSMTP st_EmailInfo; - pSt_ProtocolHdr->wReserve = 0; - XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, nNetType, (LPCTSTR)&st_AuthProtocol, sizeof(XENGINE_PROTOCOL_USERAUTH)); + memset(tszEMailBuffer, '\0', sizeof(tszEMailBuffer)); + memset(&st_EmailInfo, '\0', sizeof(RFCCOMPONENTS_EMAILSMTP)); + + _tcscpy(st_EmailInfo.tszServiceAddr, st_AuthConfig.st_EMail.tszSmtpAddr); + _tcscpy(st_EmailInfo.tszUserName, st_AuthConfig.st_EMail.tszSmtpUser); + _tcscpy(st_EmailInfo.tszPassWord, st_AuthConfig.st_EMail.tszSmtpPass); + _tcscpy(st_EmailInfo.tszFromAddr, st_AuthConfig.st_EMail.tszSmtpFrom); + + _stprintf(tszEMailBuffer, _T("你的用户名:%s\r\n你的密码:%s\r\n"), st_UserTable.st_UserInfo.tszUserName, st_UserTable.st_UserInfo.tszUserPass); + RfcComponents_EMailClient_SmtpInit(&xhEMail, &st_EmailInfo); + RfcComponents_EMailClient_SmtpSend(xhEMail, st_UserTable.st_UserInfo.tszEMailAddr, _T("XEngine授权验证服务-密码找回"), tszEMailBuffer); + RfcComponents_EMailClient_SmtpClose(xhEMail); + XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, nNetType); + } + else + { + _tcscpy(st_AuthProtocol.tszUserName, st_UserTable.st_UserInfo.tszUserName); + _tcscpy(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass); + + pSt_ProtocolHdr->wReserve = 0; + XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, nNetType, (LPCTSTR)&st_AuthProtocol, sizeof(XENGINE_PROTOCOL_USERAUTH)); + } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("客户端:%s,用户名:%s,找回密码成功"), lpszClientAddr, st_UserInfo.tszUserName); } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQGETTIME == pSt_ProtocolHdr->unOperatorCode) @@ -354,7 +384,7 @@ BOOL XEngine_Client_TCPTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int n pSt_ProtocolHdr->wReserve = 2101; XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("客户端:%s,用户名:%s,请求查询用户信息失败,帐户不存在"), lpszClientAddr, st_UserInfo.tszUserName); } - XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, nNetType, (LPCTSTR)&st_UserTable.st_UserInfo, sizeof(XENGINE_PROTOCOL_USERINFO)); + XEngine_Client_TaskSend(lpszClientAddr, pSt_ProtocolHdr, nNetType, (LPCTSTR)&st_UserTable, sizeof(AUTHREG_USERTABLE)); } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQSETUSER == pSt_ProtocolHdr->unOperatorCode) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp index b38f0ce6d21e43caf3ba4d8bf70640fe5a444e47..c87a3173d229cce619a9a5933973b1dbd3c71d91 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp @@ -25,7 +25,22 @@ XHTHREAD CALLBACK XEngine_AuthService_WSThread(LPVOID lParam) { continue; } - XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, enOPCode); + if (st_AuthConfig.st_Crypto.bEnable) + { + TCHAR tszPassword[64]; + TCHAR tszDeBuffer[2048]; + + memset(tszPassword, '\0', sizeof(tszPassword)); + memset(tszDeBuffer, '\0', sizeof(tszDeBuffer)); + + _stprintf(tszPassword, _T("%d"), st_AuthConfig.st_Crypto.nPassword); + OPenSsl_XCrypto_Decoder(tszMsgBuffer, &nMsgLen, tszDeBuffer, tszPassword); + XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszDeBuffer, nMsgLen, enOPCode); + } + else + { + XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, enOPCode); + } } BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListClient, nListCount); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile index 4c23c7fcc9dc9f8681bf0a108a4077c7bf2fe455..b8a128ea483354eaaa7c9c7a759326f0ec173baf 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile @@ -2,7 +2,7 @@ CC = g++ -Wall RELEASE = 0 UNICODE = 0 LOADBIN = -L /usr/local/lib/XEngine_Release/XEngine_BaseLib -L /usr/local/lib/XEngine_Release/XEngine_Core -L /usr/local/lib/XEngine_Release/XEngine_HelpComponents -L /usr/local/lib/XEngine_Release/XEngine_RfcComponents -L /usr/local/lib/XEngine_Release/XEngine_SystemSdk -L ../../XEngine_AuthComponents/AuthComponents_Session -L ../../XEngine_AuthComponents/AuthComponents_SQLPacket -L ../../AuthorizeModule_Protocol -L ../../AuthorizeModule_Configure -LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_OPenSsl -lHelpComponents_Packets -lHelpComponents_DataBase -lHelpComponents_XLog -lHelpComponents_Authorize -lRfcComponents_WSProtocol -lXEngine_ProcFile -lXEngine_SystemApi -lAuthComponents_Session -lAuthComponents_SQLPacket -lAuthorizeModule_Protocol -lAuthorizeModule_Configure +LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_OPenSsl -lHelpComponents_Packets -lHelpComponents_DataBase -lHelpComponents_XLog -lHelpComponents_Authorize -lRfcComponents_WSProtocol -lRfcComponents_EmailClient -lXEngine_ProcFile -lXEngine_SystemApi -lAuthComponents_Session -lAuthComponents_SQLPacket -lAuthorizeModule_Protocol -lAuthorizeModule_Configure LIBEX = -static-libgcc -ldl -lrt -lpthread LOADSO = -Wl,-rpath=./,--disable-new-dtags LIBINCLUDE = Authorize_Config.o Authorize_Net.o Authorize_Task.o Authorize_TCPTask.o Authorize_WSTask.o XEngine_AuthorizeService.o