Skip to content

Commit 2f72e7d

Browse files
authored
Merge pull request #19 from libxengine/develop
V3.7.0.1001 Merge
2 parents 3d43396 + 79c9c4a commit 2f72e7d

File tree

125 files changed

+3161
-2211
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+3161
-2211
lines changed

CHANGELOG

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
XEngine_Authorize V3.7.0.1001
2+
3+
添加:登录支持动态验证码功能
4+
添加:禁用列表查询数量限制功能
5+
更新:扩展HTTP缓冲区大小
6+
更新:支持XEngine V8.x版本了
7+
修改:公告协议现在有数量限制了
8+
修正:获取公告功能开关错误
9+
10+
added:dynamic verfication code for login
11+
added:limit query count for banned function
12+
update:extend http buffer size
13+
update:support xengine 8.x
14+
modify:The number of announcements has been limited
15+
fixed:get notice switch is incorrent
16+
================================================================
117
XEngine_Authorize V3.6.0.1001
218

319
添加:公告功能支持

README.en.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ feature list:
4343
15. black list management
4444
16. local cdkey support
4545
17. announecement management
46+
18. support dynamic verifaction code
4647

4748
## install
4849

@@ -77,6 +78,10 @@ make FLAGS=InstallAll Install File
7778
make FLAGS=CleanAll Clear Complie
7879

7980
## how to use
81+
82+
#### upgrade
83+
If it is an upgrade installation, after downloading the new version and modifying the configuration file, it can be run directly
84+
database update need to open the database matching fields and tables are consistent
8085
#### server(management)
8186
Windows:complie complete,copy VSCopy_x86 or VSCopy_x64 to your complie dir,should copy depend module when execution complete,and copy XEngine_Release dir all file to complie dir
8287
Linux or macos:it can be execution....
@@ -97,6 +102,7 @@ port :tcp port 5300,websocket port 5301,http management port 5302,Transmission v
97102
![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/3.png "在这里输入图片标题")
98103
![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/4.png "在这里输入图片标题")
99104
![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/5.png "在这里输入图片标题")
105+
![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/6.png "在这里输入图片标题")
100106

101107
## Participate in contribution
102108

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ V2可以直接升级到V3版本,因为数据库并没有修改,直接替换程
4343
15. 黑名单管理
4444
16. 本地cdkey生成验证支持
4545
17. 支持功公告管理
46+
18. 支持动态验证码登录
4647

4748
## 安装教程
4849

@@ -77,6 +78,10 @@ make FLAGS=InstallAll 安装库程序
7778
make FLAGS=CleanAll 清理编译
7879

7980
## 如何使用
81+
82+
#### 升级
83+
如果是升级安装,下载新版本后修改配置文件就可以直接运行了
84+
数据库升级需要打开数据库匹配字段和表是否一致
8085
#### 服务端(管理端)
8186
Windows:编译成功后,拷贝VSCopy_x86或者VSCopy_x64 到你的编译目录,执行自动拷贝依赖的模块,然后把XEngine_Release下的文件全部拷贝到编译目录即可
8287
Linux or macos:直接运行即可
@@ -97,6 +102,7 @@ Linux or macos:直接运行即可
97102
![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/3.png "在这里输入图片标题")
98103
![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/4.png "在这里输入图片标题")
99104
![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/5.png "在这里输入图片标题")
105+
![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/6.png "在这里输入图片标题")
100106

101107
## 参与贡献
102108

@@ -126,9 +132,7 @@ V3版本为全新版本,为了适应过多环境要求开发
126132

127133
## 开发计划
128134
mfc转qt界面库(我们需要会Qt的人员加入一起开发)
129-
动态验证码
130135
短信登录,扫码登录
131-
消息公告
132136
支持多端登录
133137
多端登录合并用时
134138
生成会话TOKEN分布式鉴权
@@ -138,11 +142,11 @@ token 自动续期
138142
http basic和disgt支持
139143
支持OAuth验证
140144
mysql支持
141-
列表数据分割,用于大型服务器
142145
支持用户和硬件绑定同时验证
143146
统计用户所有在线时间
144147
持久层,redis,memcached等支持
145148
支持代理端(序列号分发,权限控制)
149+
支持设置用户可以使用IP地址段
146150
支持绑定自定义内容
147151
自动售卡(支付宝,微信)
148152
MQTT协议支持,让你的嵌入式设备也用上授时验证

XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp

Lines changed: 73 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#ifdef _WINDOWS
1+
#ifdef _MSC_BUILD
22
#include <Windows.h>
33
#include <tchar.h>
44
#pragma comment(lib,"Ws2_32.lib")
@@ -32,16 +32,19 @@ using namespace std;
3232
//Linux::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_Core -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Client -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_NetHelp -lXEngine_BaseLib -lXEngine_OPenSsl -lXClient_Socket -lNetHelp_APIClient -lpthread -ljsoncpp -Wl,-rpath=../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_BaseLib:../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Core:../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Client:../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_NetHelp,--disable-new-dtags
3333
//Macos::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_Core -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Client -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_NetHelp -lXEngine_BaseLib -lXEngine_OPenSsl -lXClient_Socket -lNetHelp_APIClient -lpthread -ljsoncpp
3434

35-
BOOL bRun = TRUE;
36-
BOOL bLogin = TRUE;
37-
BOOL bTimeOut = TRUE;
38-
BOOL bEncrypto = FALSE;
39-
40-
SOCKET m_Socket = 0;
41-
LPCTSTR lpszUser = _T("123123aa");
42-
LPCTSTR lpszPass = _T("123123");
43-
LPCTSTR lpszSerial = _T("XAUTH-XYRYM-ZAA10-59NKW-KOFLP-35838-ZXC36-ZOVTH");
44-
LPCTSTR lpszEmail = _T("[email protected]");
35+
#define _DYNAMIC_CODE
36+
bool bRun = true;
37+
bool bLogin = true;
38+
bool bTimeOut = true;
39+
bool bEncrypto = false;
40+
XNETHANDLE xhToken = 0;
41+
int nDYCode = 0;
42+
43+
XSOCKET m_Socket = 0;
44+
LPCXSTR lpszUser = _T("123123aa");
45+
LPCXSTR lpszPass = _T("123123");
46+
LPCXSTR lpszSerial = _T("XAUTH-XYRYM-ZAA10-59NKW-KOFLP-35838-ZXC36-ZOVTH");
47+
LPCXSTR lpszEmail = _T("[email protected]");
4548
__int64x nPhoneNumber = 1366666666;
4649
__int64x nIDNumber = 511025111111111111;
4750

@@ -50,13 +53,13 @@ XHTHREAD AuthClient_Thread()
5053
while (bRun)
5154
{
5255
int nMsgLen = 0;
53-
TCHAR *ptszMsgBuffer;
56+
XCHAR *ptszMsgBuffer;
5457
XENGINE_PROTOCOLHDR st_ProtocolHdr;
5558

5659
memset(&st_ProtocolHdr, '\0', sizeof(XENGINE_PROTOCOLHDR));
5760
if (XClient_TCPSelect_RecvPkt(m_Socket, &ptszMsgBuffer, &nMsgLen, &st_ProtocolHdr))
5861
{
59-
TCHAR tszMsgBuffer[4096];
62+
XCHAR tszMsgBuffer[4096];
6063
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
6164

6265
if (nMsgLen > 0 && bEncrypto)
@@ -71,7 +74,7 @@ XHTHREAD AuthClient_Thread()
7174

7275
if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN == st_ProtocolHdr.unOperatorCode)
7376
{
74-
bLogin = FALSE;
77+
bLogin = false;
7578
if (0 == st_ProtocolHdr.wReserve)
7679
{
7780
printf(_T("登录成功\n"));
@@ -83,7 +86,7 @@ XHTHREAD AuthClient_Thread()
8386
}
8487
else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_TIMEDOUT == st_ProtocolHdr.unOperatorCode)
8588
{
86-
bTimeOut = FALSE;
89+
bTimeOut = false;
8790
printf(_T("用户过期\n"));
8891
}
8992
else
@@ -102,7 +105,7 @@ int AuthClient_Register()
102105
Json::Value st_JsonRoot;
103106
Json::Value st_JsonUserInfo;
104107
Json::Value st_JsonUserTable;
105-
LPCTSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/register");
108+
LPCXSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/register");
106109

107110
st_JsonUserInfo["tszUserName"] = lpszUser;
108111
st_JsonUserInfo["tszUserPass"] = lpszPass;
@@ -129,7 +132,7 @@ int AuthClient_Pay()
129132
int nHTTPCode = 0;
130133
Json::Value st_JsonRoot;
131134
Json::Value st_JsonObject;
132-
LPCTSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/pay");
135+
LPCXSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/pay");
133136

134137
st_JsonObject["tszSerialNumber"] = lpszSerial;
135138
st_JsonObject["tszUserName"] = lpszUser;
@@ -144,9 +147,39 @@ int AuthClient_Pay()
144147

145148
return 0;
146149
}
150+
int AuthClient_DynamicCode()
151+
{
152+
int nHTTPCode = 0;
153+
LPCXSTR lpszUrl = _T("http://127.0.0.1:5302/api?function=dcode&user=get");
154+
155+
int nMsgLen = 0;
156+
CHAR* ptszMsgBuffer = NULL;
157+
APIClient_Http_Request(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nMsgLen);
158+
printf("AuthClient_DynamicCode:\n%s\n", ptszMsgBuffer);
159+
160+
Json::Value st_JsonRoot;
161+
JSONCPP_STRING st_JsonError;
162+
Json::CharReaderBuilder st_ReaderBuilder;
163+
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_ReaderBuilder.newCharReader());
164+
if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
165+
{
166+
return 0;
167+
}
168+
XCHAR tszDCodeStr[64];
169+
XCHAR tszTokenStr[64];
170+
171+
memset(tszDCodeStr, '\0', sizeof(tszDCodeStr));
172+
memset(tszTokenStr, '\0', sizeof(tszTokenStr));
173+
174+
nDYCode = st_JsonRoot["nDynamicCode"].asUInt();
175+
xhToken = st_JsonRoot["xhToken"].asUInt64();
176+
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
177+
178+
return 0;
179+
}
147180
int AuthClient_Login()
148181
{
149-
TCHAR tszMsgBuffer[2048];
182+
XCHAR tszMsgBuffer[2048];
150183
XENGINE_PROTOCOLHDR st_ProtocolHdr; //协议头
151184
XENGINE_PROTOCOL_USERAUTH st_AuthUser;
152185

@@ -164,14 +197,20 @@ int AuthClient_Login()
164197
strcpy(st_AuthUser.tszUserName, lpszUser);
165198
strcpy(st_AuthUser.tszUserPass, lpszPass);
166199

200+
if (nDYCode > 0)
201+
{
202+
st_ProtocolHdr.xhToken = xhToken;
203+
_stprintf(st_AuthUser.tszDCode, _T("%d"), nDYCode);
204+
}
205+
167206
int nMsgLen = 0;
168207
if (bEncrypto)
169208
{
170-
TCHAR tszCodecBuffer[2048];
209+
XCHAR tszCodecBuffer[2048];
171210
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
172211

173212
st_ProtocolHdr.wCrypto = ENUM_XENGINE_PROTOCOLHDR_CRYPTO_TYPE_XCRYPT;
174-
OPenSsl_XCrypto_Encoder((LPCTSTR)&st_AuthUser, (int*)&st_ProtocolHdr.unPacketSize, (UCHAR*)tszCodecBuffer, lpszPass);
213+
OPenSsl_XCrypto_Encoder((LPCXSTR)&st_AuthUser, (int*)&st_ProtocolHdr.unPacketSize, (UCHAR*)tszCodecBuffer, lpszPass);
175214

176215
memcpy(tszMsgBuffer, &st_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR));
177216
memcpy(tszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), tszCodecBuffer, st_ProtocolHdr.unPacketSize);
@@ -200,7 +239,7 @@ int AuthClient_Login()
200239
int AuthClient_Notice()
201240
{
202241
int nHTTPCode = 0;
203-
LPCTSTR lpszUrl = _T("http://127.0.0.1:5302/api?function=notice");
242+
LPCXSTR lpszUrl = _T("http://127.0.0.1:5302/api?function=notice");
204243

205244
int nMsgLen = 0;
206245
CHAR* ptszMsgBuffer = NULL;
@@ -217,7 +256,7 @@ int AuthClient_Notice()
217256
}
218257
for (unsigned int i = 0; i < st_JsonRoot["Array"].size(); i++)
219258
{
220-
TCHAR tszMsgBuffer[2048];
259+
XCHAR tszMsgBuffer[2048];
221260
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
222261
Json::Value st_JsonArray = st_JsonRoot["Array"][i];
223262

@@ -234,7 +273,7 @@ int AuthClient_GetPass()
234273
int nHTTPCode = 0;
235274
Json::Value st_JsonRoot;
236275
Json::Value st_JsonObject;
237-
LPCTSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/pass");
276+
LPCXSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/pass");
238277

239278
st_JsonObject["tszUserName"] = lpszUser;
240279
st_JsonObject["tszEMailAddr"] = lpszEmail;
@@ -256,7 +295,7 @@ int AuthClient_GetTime()
256295
int nHTTPCode = 0;
257296
Json::Value st_JsonRoot;
258297
Json::Value st_JsonObject;
259-
LPCTSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/time");
298+
LPCXSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/time");
260299

261300
st_JsonObject["tszUserName"] = lpszUser;
262301
st_JsonObject["tszUserPass"] = lpszPass;
@@ -275,7 +314,7 @@ int AuthClient_Delete()
275314
int nHTTPCode = 0;
276315
Json::Value st_JsonRoot;
277316
Json::Value st_JsonObject;
278-
LPCTSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/delete");
317+
LPCXSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/delete");
279318

280319
st_JsonObject["tszUserName"] = lpszUser;
281320
st_JsonObject["tszUserPass"] = lpszPass;
@@ -298,8 +337,8 @@ int AuthClient_Try()
298337
int nHTTPCode = 0;
299338
Json::Value st_JsonRoot;
300339
Json::Value st_JsonObject;
301-
LPCTSTR lpszSerialNet = _T("cpuid:112233"); //通过此可以做临时网络验证,安全性比本地临时验证高
302-
LPCTSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/try");
340+
LPCXSTR lpszSerialNet = _T("cpuid:112233"); //通过此可以做临时网络验证,安全性比本地临时验证高
341+
LPCXSTR lpszUrl = _T("http://127.0.0.1:5302/auth/user/try");
303342

304343
st_JsonObject["tszSerial"] = lpszSerialNet;
305344
st_JsonRoot["st_UserTry"] = st_JsonObject;
@@ -314,12 +353,12 @@ int AuthClient_Try()
314353
}
315354
int main()
316355
{
317-
#ifdef _WINDOWS
356+
#ifdef _MSC_BUILD
318357
WSADATA st_WSAData;
319358
WSAStartup(MAKEWORD(2, 2), &st_WSAData);
320359
#endif
321360
int nPort = 5300;
322-
LPCTSTR lpszAddr = _T("127.0.0.1");
361+
LPCXSTR lpszAddr = _T("127.0.0.1");
323362

324363
if (!XClient_TCPSelect_Create(&m_Socket, lpszAddr, nPort))
325364
{
@@ -330,18 +369,21 @@ int main()
330369

331370
AuthClient_Register();
332371
AuthClient_Pay();
372+
#ifdef _DYNAMIC_CODE
373+
AuthClient_DynamicCode();
374+
#endif
333375
AuthClient_Login();
334376
AuthClient_Notice();
335377
AuthClient_GetPass();
336378
AuthClient_GetTime();
337379
AuthClient_Delete();
338380
AuthClient_Try();
339381

340-
bRun = FALSE;
382+
bRun = false;
341383
XClient_TCPSelect_Close(m_Socket);
342384
pSTDThread.join();
343385

344-
#ifdef _WINDOWS
386+
#ifdef _MSC_BUILD
345387
WSACleanup();
346388
#endif
347389
return 0;

XEngine_Apps/Authorize_APPLocal/Authorize_APPLocal.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
//#define XENGINE_AUTHORIZE_CDKEY_CRYPTO
3333

34-
LPCTSTR lpszPasswd = _T("123123");
34+
LPCXSTR lpszPasswd = _T("123123");
3535

3636
int main()
3737
{
@@ -63,8 +63,8 @@ int main()
6363
st_JsonRoot["st_AuthRegInfo"] = st_JsonREGInfo;
6464
st_JsonRoot["st_AuthUserInfo"] = st_JsonUserInfo;
6565

66-
TCHAR* ptszCreateBuffer = NULL;
67-
LPCTSTR lpszCreateUrl = _T("http://192.168.1.10:5302/auth/cdkey/create");
66+
XCHAR* ptszCreateBuffer = NULL;
67+
LPCXSTR lpszCreateUrl = _T("http://192.168.1.10:5302/auth/cdkey/create");
6868
//1. 创建CDKEY
6969
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
7070
//加密
@@ -82,7 +82,7 @@ int main()
8282
return 0;
8383
}
8484

85-
TCHAR tszMsgBuffer[4096];
85+
XCHAR tszMsgBuffer[4096];
8686
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
8787
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
8888
//解密
@@ -98,8 +98,8 @@ int main()
9898
#endif
9999
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszCreateBuffer);
100100
//2. 授权CDKEY
101-
TCHAR* ptszAuthBuffer = NULL;
102-
LPCTSTR lpszAuthUrl = _T("http://192.168.1.10:5302/auth/cdkey/auth");
101+
XCHAR* ptszAuthBuffer = NULL;
102+
LPCXSTR lpszAuthUrl = _T("http://192.168.1.10:5302/auth/cdkey/auth");
103103
#ifdef XENGINE_AUTHORIZE_CDKEY_CRYPTO
104104
//加密
105105
memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer));
@@ -127,8 +127,8 @@ int main()
127127
#endif
128128
BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszAuthBuffer);
129129
//3. 验证CDKEY
130-
TCHAR* ptszVerBuffer = NULL;
131-
LPCTSTR lpszVerUrl = _T("http://192.168.1.10:5302/auth/cdkey/ver");
130+
XCHAR* ptszVerBuffer = NULL;
131+
LPCXSTR lpszVerUrl = _T("http://192.168.1.10:5302/auth/cdkey/ver");
132132

133133
XENGINE_AUTHORIZE_LOCAL st_Authorize;
134134
memset(&st_Authorize, '\0', sizeof(XENGINE_AUTHORIZE_LOCAL));

XEngine_Docment/Docment_en.docx

985 Bytes
Binary file not shown.

XEngine_Docment/Docment_zh.docx

1.09 KB
Binary file not shown.

0 commit comments

Comments
 (0)