From bec0b58967c3422716bae5e94913db169bc4df85 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 19 May 2025 14:42:13 +0800 Subject: [PATCH 01/24] update:read me --- README.en.md | 9 ++++----- README.md | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/README.en.md b/README.en.md index b57c461..faf176d 100644 --- a/README.en.md +++ b/README.en.md @@ -4,8 +4,8 @@ we have a development and a master branch. If you want to use it, please use the As long as the repository is not in suspended state, we will maintain and develop it all the time, please use it with confidence #### Description -c c++ SOCKS5代理服务,HTTP Tunnel隧道代理服务,tcp转发服务,负载代理转发 -c c++ Socks5 Proxy Service,HTTP Tunnel Proxy Service,tcp forward service,proxy forward service +c c++ SOCKS5代理服务,HTTP Tunnel隧道代理服务,tcp转发控制服务,负载均衡服务 +c c++ Socks5 Proxy Service,HTTP Tunnel Proxy Service,tcp forward control service,load balance forward service ## Notice the compiled release version will only be released on github. @@ -18,13 +18,12 @@ This software is a standard proxy server that supports Socks5 and HTTP tunnel pr this software support following features 1. SOCKS5 proxy 2. Tunnel proxy -3. TCP forward proxy(forward) +3. TCP forward control 4. operator log 5. encrypt Communication(planning) -6. load balanc(planning) +6. load balance 7. custom cert proxy protocol(planning) 8. multilevel proxy(planning) -9. lb proxy(proxy) ## install diff --git a/README.md b/README.md index 1296815..b1b063f 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ 编译发布版本将只在github上面发布. ## 介绍 -c c++ SOCKS5代理服务,HTTP Tunnel隧道代理服务,tcp转发服务,负载代理转发 -c c++ Socks5 Proxy Service,HTTP Tunnel Proxy Service,tcp forward service,proxy forward service +c c++ SOCKS5代理服务,HTTP Tunnel隧道代理服务,tcp转发控制服务,负载均衡服务 +c c++ Socks5 Proxy Service,HTTP Tunnel Proxy Service,tcp forward control service,load balance forward service ## 软件架构 此软件基于XEngine开发.采用C/C++作为开发语言 @@ -17,13 +17,12 @@ c c++ Socks5 Proxy Service,HTTP Tunnel Proxy Service,tcp forward service,proxy f 此软件支持以下特性 1. SOCKS5代理 2. Tunnel代理 -3. TCP数据转发服务(forward) +3. TCP数据转发控制 4. 操作日志 5. 加密通信(planning) -6. 负载均衡(planning) +6. 负载均衡 7. 自定义证书代理协议(planning) 8. 多级代理(planning) -9. 全负载代理(proxy) ## 安装教程 -- Gitee From 0e584cd9799cd11bdbeea45001cfb61305fb415e Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 20 May 2025 11:29:10 +0800 Subject: [PATCH 02/24] ci:update --- .github/workflows/codeql.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 1716d18..75bb2a8 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -40,6 +40,9 @@ jobs: git submodule init git submodule update + - name: Set TERM variable + run: echo "TERM=xterm" >> $GITHUB_ENV + - name: Set up Dependency Environment run: | cd libxengine -- Gitee From 1454f74246a9cf2c6fcf889e669e440886414658 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 29 May 2025 11:03:01 +0800 Subject: [PATCH 03/24] update:match xengine v9.20 update:depend library --- XEngine_Source/XEngine_Depend | 2 +- .../ModuleConfig_Define.h | 4 +-- .../XEngine_ForwardTask.cpp | 4 +-- .../XEngine_ServiceApp/XEngine_ForwardTask.h | 4 +-- .../XEngine_ServiceApp/XEngine_Network.cpp | 32 +++++++++---------- .../XEngine_ServiceApp/XEngine_Network.h | 32 +++++++++---------- .../XEngine_ServiceApp/XEngine_ProxyTask.cpp | 2 +- .../XEngine_ServiceApp/XEngine_ProxyTask.h | 2 +- .../XEngine_ServiceApp/XEngine_ServiceApp.cpp | 2 +- .../XEngine_ServiceApp/XEngine_SocksTask.cpp | 14 ++++---- .../XEngine_ServiceApp/XEngine_SocksTask.h | 2 +- .../XEngine_ServiceApp/XEngine_TunnelTask.cpp | 10 +++--- .../XEngine_ServiceApp/XEngine_TunnelTask.h | 2 +- 13 files changed, 56 insertions(+), 56 deletions(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 5bc8164..78d2ea2 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 5bc816462c2c1f04e282ecce6c4c12db0ec11029 +Subproject commit 78d2ea2cfcfa4701e122ee3e4ac536f712831f86 diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h index b4d1898..5abadc3 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h @@ -38,7 +38,7 @@ typedef struct tag_XEngine_ServiceConfig }st_XTime; //次数*时间=超时 struct { - XCHAR tszLogFile[MAX_PATH]; //日志保存路径 + XCHAR tszLogFile[XPATH_MAX]; //日志保存路径 int nMaxSize; //最大日志大小 int nMaxCount; //最大日志个数 int nLogLeave; //日志等级 @@ -47,7 +47,7 @@ typedef struct tag_XEngine_ServiceConfig struct { bool bEnable; - XCHAR tszAPIUrl[MAX_PATH]; + XCHAR tszAPIUrl[XPATH_MAX]; XCHAR tszServiceName[128]; }st_XReport; struct diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ForwardTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ForwardTask.cpp index 390d4ef..1b508d2 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ForwardTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ForwardTask.cpp @@ -10,7 +10,7 @@ // Purpose: 代理转发协议 // History: *********************************************************************/ -XHTHREAD CALLBACK XEngine_Forward_Thread(XPVOID lParam) +XHTHREAD XCALLBACK XEngine_Forward_Thread(XPVOID lParam) { int nPoolIndex = *(int*)lParam; int nThreadPos = nPoolIndex + 1; @@ -177,7 +177,7 @@ bool XEngine_Forward_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } return true; } -void CALLBACK XEngine_Forward_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam) +void XCALLBACK XEngine_Forward_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam) { int nListCount = 0; SESSION_FORWARD** ppSt_ClientList; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ForwardTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_ForwardTask.h index 092bdde..4c72b7b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ForwardTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ForwardTask.h @@ -11,6 +11,6 @@ // History: *********************************************************************/ //任务处理相关函数,处理包的内容 -XHTHREAD CALLBACK XEngine_Forward_Thread(XPVOID lParam); +XHTHREAD XCALLBACK XEngine_Forward_Thread(XPVOID lParam); bool XEngine_Forward_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_PROTOCOLHDR* pSt_ProtocolHdr); -void CALLBACK XEngine_Forward_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam); \ No newline at end of file +void XCALLBACK XEngine_Forward_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp index 47c41d6..70717bd 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp @@ -11,7 +11,7 @@ // History: *********************************************************************/ //////////////////////////////////////////////////////////////////////////下面是SOCKS网络IO相关代码处理函数 -bool CALLBACK Network_Callback_SocksLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +bool XCALLBACK Network_Callback_SocksLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { //客户端连接后要把客户端插入心跳管理器中才有效 ModuleSession_Socks_Create(lpszClientAddr); @@ -19,54 +19,54 @@ bool CALLBACK Network_Callback_SocksLogin(LPCXSTR lpszClientAddr, XSOCKET hSocke XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("SOCKS客户端:%s,连接到服务器"), lpszClientAddr); return true; } -void CALLBACK Network_Callback_SocksRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) +void XCALLBACK Network_Callback_SocksRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) { //需要激活一次 XEngine_SocksTask_Handle(lpszClientAddr, lpszRecvMsg, nMsgLen); SocketOpt_HeartBeat_ActiveAddrEx(xhSocksHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("SOCKS客户端:%s,投递数据包到组包队列成功,大小:%d"), lpszClientAddr, nMsgLen); } -void CALLBACK Network_Callback_SocksLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +void XCALLBACK Network_Callback_SocksLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { //交给指定函数来处理客户端离开消息 XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_SOCKS, XENGINE_CLIENT_CLOSE_NETWORK); } -void CALLBACK Network_Callback_SocksHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +void XCALLBACK Network_Callback_SocksHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) { //同上 XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_SOCKS, XENGINE_CLIENT_CLOSE_HEARTBEAT); } //////////////////////////////////////////////////////////////////////////下面是Tunnel网络IO相关代码处理函数 -bool CALLBACK Network_Callback_TunnelLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +bool XCALLBACK Network_Callback_TunnelLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { ModuleSession_Tunnel_Create(lpszClientAddr); SocketOpt_HeartBeat_InsertAddrEx(xhTunnelHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,连接到服务器"), lpszClientAddr); return true; } -void CALLBACK Network_Callback_TunnelRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) +void XCALLBACK Network_Callback_TunnelRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) { XEngine_TunnelTask_Handle(lpszClientAddr, lpszRecvMsg, nMsgLen); SocketOpt_HeartBeat_ActiveAddrEx(xhTunnelHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("Tunnel客户端:%s,投递数据包到组包队列成功,大小:%d"), lpszClientAddr, nMsgLen); } -void CALLBACK Network_Callback_TunnelLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +void XCALLBACK Network_Callback_TunnelLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_TUNNEL, XENGINE_CLIENT_CLOSE_NETWORK); } -void CALLBACK Network_Callback_TunnelHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +void XCALLBACK Network_Callback_TunnelHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) { XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_TUNNEL, XENGINE_CLIENT_CLOSE_HEARTBEAT); } //////////////////////////////////////////////////////////////////////////下面是Tunnel网络IO相关代码处理函数 -bool CALLBACK Network_Callback_ForwardLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +bool XCALLBACK Network_Callback_ForwardLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { HelpComponents_Datas_CreateEx(xhForwardPacket, lpszClientAddr); SocketOpt_HeartBeat_InsertAddrEx(xhForwardHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Forward客户端:%s,连接到服务器"), lpszClientAddr); return true; } -void CALLBACK Network_Callback_ForwardRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) +void XCALLBACK Network_Callback_ForwardRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) { SESSION_FORWARD st_ForwardClinet = {}; if (ModuleSession_Forward_Get(lpszClientAddr, &st_ForwardClinet)) @@ -111,28 +111,28 @@ void CALLBACK Network_Callback_ForwardRecv(LPCXSTR lpszClientAddr, XSOCKET hSock SocketOpt_HeartBeat_ActiveAddrEx(xhForwardHeart, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("Forward客户端:%s,投递数据包到组包队列成功,大小:%d"), lpszClientAddr, nMsgLen); } -void CALLBACK Network_Callback_ForwardLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +void XCALLBACK Network_Callback_ForwardLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_FORWARD, XENGINE_CLIENT_CLOSE_NETWORK); } -void CALLBACK Network_Callback_ForwardHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +void XCALLBACK Network_Callback_ForwardHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) { XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_FORWARD, XENGINE_CLIENT_CLOSE_HEARTBEAT); } //////////////////////////////////////////////////////////////////////////Forward相关 -bool CALLBACK Network_Callback_ProxyLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +bool XCALLBACK Network_Callback_ProxyLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { return XEngine_Proxy_Connect(lpszClientAddr); } -void CALLBACK Network_Callback_ProxyRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) +void XCALLBACK Network_Callback_ProxyRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) { XEngine_Proxy_Recvmsg(lpszClientAddr, lpszRecvMsg, nMsgLen); } -void CALLBACK Network_Callback_ProxyLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +void XCALLBACK Network_Callback_ProxyLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_PROXY, XENGINE_CLIENT_CLOSE_NETWORK); } -void CALLBACK Network_Callback_ProxyHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +void XCALLBACK Network_Callback_ProxyHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) { XEngine_Network_Close(lpszClientAddr, XENGINE_CLIENT_NETTYPE_PROXY, XENGINE_CLIENT_CLOSE_HEARTBEAT); } diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.h b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.h index 948aa06..c7f65e2 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.h @@ -11,25 +11,25 @@ // History: *********************************************************************/ //SOCKS相关 -bool CALLBACK Network_Callback_SocksLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); //用户连接 -void CALLBACK Network_Callback_SocksRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); //接受到数据 -void CALLBACK Network_Callback_SocksLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); //用户离开 -void CALLBACK Network_Callback_SocksHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); //心跳超时 +bool XCALLBACK Network_Callback_SocksLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); //用户连接 +void XCALLBACK Network_Callback_SocksRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); //接受到数据 +void XCALLBACK Network_Callback_SocksLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); //用户离开 +void XCALLBACK Network_Callback_SocksHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); //心跳超时 //Tunnel相关 -bool CALLBACK Network_Callback_TunnelLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); -void CALLBACK Network_Callback_TunnelRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); -void CALLBACK Network_Callback_TunnelLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); -void CALLBACK Network_Callback_TunnelHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); +bool XCALLBACK Network_Callback_TunnelLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK Network_Callback_TunnelRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); +void XCALLBACK Network_Callback_TunnelLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK Network_Callback_TunnelHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); //Forward相关 -bool CALLBACK Network_Callback_ForwardLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); -void CALLBACK Network_Callback_ForwardRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); -void CALLBACK Network_Callback_ForwardLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); -void CALLBACK Network_Callback_ForwardHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); +bool XCALLBACK Network_Callback_ForwardLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK Network_Callback_ForwardRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); +void XCALLBACK Network_Callback_ForwardLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK Network_Callback_ForwardHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); //Forward相关 -bool CALLBACK Network_Callback_ProxyLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); -void CALLBACK Network_Callback_ProxyRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); -void CALLBACK Network_Callback_ProxyLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); -void CALLBACK Network_Callback_ProxyHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); +bool XCALLBACK Network_Callback_ProxyLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK Network_Callback_ProxyRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); +void XCALLBACK Network_Callback_ProxyLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK Network_Callback_ProxyHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); //关闭与发送 void XEngine_Network_Close(LPCXSTR lpszClientAddr, int nIPProto, int nCloseType); bool XEngine_Network_Send(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nIPProto); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp index 91a3ee8..d2fff8c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.cpp @@ -90,7 +90,7 @@ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Proxy客户端:%s,连接到服务器:%s:%d 成功"), lpszClientAddr, tszDstIPAddr, nDstPort); return true; } -void CALLBACK XEngine_Proxy_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nMsgLen, XPVOID lParam) +void XCALLBACK XEngine_Proxy_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nMsgLen, XPVOID lParam) { SESSION_FORWARD st_ProxyInfo = {}; if (!ModuleSession_Proxy_GetForToken(xhClient, &st_ProxyInfo)) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.h index 29db250..bc0f25b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ProxyTask.h @@ -11,5 +11,5 @@ // History: *********************************************************************/ bool XEngine_Proxy_Connect(LPCXSTR lpszClientAddr); -void CALLBACK XEngine_Proxy_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nMsgLen, XPVOID lParam); +void XCALLBACK XEngine_Proxy_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nMsgLen, XPVOID lParam); bool XEngine_Proxy_Recvmsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index f3a3573..21e8cdc 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -90,7 +90,7 @@ static int ServiceApp_Deamon() LONG WINAPI Coredump_ExceptionFilter(EXCEPTION_POINTERS* pExceptionPointers) { static int i = 0; - XCHAR tszFileStr[MAX_PATH] = {}; + XCHAR tszFileStr[XPATH_MAX] = {}; XCHAR tszTimeStr[128] = {}; BaseLib_Time_TimeToStr(tszTimeStr); _xstprintf(tszFileStr, _X("./XEngine_Coredump/dumpfile_%s_%d.dmp"), tszTimeStr, i++); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index f857802..8fb117b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -36,8 +36,8 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int return false; } bool bFoundAuth = false; - XCHAR tszAuthBuffer[MAX_PATH]; - memset(tszAuthBuffer, '\0', MAX_PATH); + XCHAR tszAuthBuffer[XPATH_MAX]; + memset(tszAuthBuffer, '\0', XPATH_MAX); //客户端支持的验证类型 for (int i = 0; i < nListCount; i++) @@ -69,12 +69,12 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } else if (ENUM_PROXY_SESSION_SOCKS_STATUS_AUTH == enSocksStatus) { - XCHAR tszUserName[MAX_PATH]; - XCHAR tszUserPass[MAX_PATH]; + XCHAR tszUserName[XPATH_MAX]; + XCHAR tszUserPass[XPATH_MAX]; ENUM_RFCCOMPONENTS_PROXYSOCKS_AUTH enProxyAuth; - memset(tszUserName, '\0', MAX_PATH); - memset(tszUserPass, '\0', MAX_PATH); + memset(tszUserName, '\0', XPATH_MAX); + memset(tszUserPass, '\0', XPATH_MAX); if (!ProxyProtocol_SocksCore_ParseUser(lpszMsgBuffer, nMsgLen, &enProxyAuth, tszUserName, tszUserPass)) { @@ -187,7 +187,7 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int return true; } -void CALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam) +void XCALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam) { int nListCount = 0; PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.h index b3e52ba..81f235d 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.h @@ -12,4 +12,4 @@ *********************************************************************/ //任务处理相关函数,处理包的内容 bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen); -void CALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam); \ No newline at end of file +void XCALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index bd48d70..a613e7b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -23,12 +23,12 @@ bool XEngine_TunnelTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in int nIPPort = 0; bool bProxy = true; XCHAR tszIPAddr[1024]; - XCHAR tszAuthInfo[MAX_PATH]; - XCHAR tszMsgBuffer[MAX_PATH]; + XCHAR tszAuthInfo[XPATH_MAX]; + XCHAR tszMsgBuffer[XPATH_MAX]; memset(tszIPAddr, '\0', sizeof(tszIPAddr)); - memset(tszAuthInfo, '\0', MAX_PATH); - memset(tszMsgBuffer, '\0', MAX_PATH); + memset(tszAuthInfo, '\0', XPATH_MAX); + memset(tszMsgBuffer, '\0', XPATH_MAX); if (!ModuleSession_Tunnel_Packet(lpszClientAddr, lpszMsgBuffer, nMsgLen, tszMsgBuffer, &nLen)) { ProxyProtocol_TunnelCore_Packet(tszMsgBuffer, &nLen, ERROR_XENGINE_PROXY_PROTOCOL_FORMAT); @@ -114,7 +114,7 @@ bool XEngine_TunnelTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in return true; } -void CALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam) +void XCALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam) { int nListCount = 0; PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.h index 862503e..9afa6fb 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.h @@ -12,4 +12,4 @@ *********************************************************************/ //任务处理相关函数,处理包的内容 bool XEngine_TunnelTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen); -void CALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam); \ No newline at end of file +void XCALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam); \ No newline at end of file -- Gitee From 42b2b51dad9c63a8f0559d0affa43962b216bfbb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 4 Jul 2025 10:15:09 +0800 Subject: [PATCH 04/24] modify:depend library direction name --- .github/workflows/Rocky_build.yml | 2 +- .github/workflows/debian_build.yml | 2 +- .github/workflows/fedora_build.yml | 2 +- .gitmodules | 2 +- XEngine_Source/Makefile | 4 +-- XEngine_Source/VSClean.bat | 1 + XEngine_Source/XEngine.sln | 34 +++++++++---------- .../{XEngine_Depend => XEngine_DependLibrary} | 0 .../XEngine_ModuleConfigure/Makefile | 4 +-- .../XEngine_ModuleConfigure.vcxproj | 12 +++---- XEngine_Source/XEngine_ModuleHelp/Makefile | 2 +- .../XEngine_ModuleProtocol/Makefile | 4 +-- .../XEngine_ModuleProtocol.vcxproj | 12 +++---- XEngine_Source/XEngine_ModuleSession/Makefile | 2 +- XEngine_Source/XEngine_ServiceApp/Makefile | 4 +-- .../XEngine_ServiceApp/XEngine_Hdr.h | 4 +-- 16 files changed, 46 insertions(+), 45 deletions(-) rename XEngine_Source/{XEngine_Depend => XEngine_DependLibrary} (100%) diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 237ff4b..2e8d654 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -46,7 +46,7 @@ jobs: uses: actions/checkout@v4 with: repository: libxengine/XEngine_OPenSource - path: XEngine_Source/XEngine_Depend + path: XEngine_Source/XEngine_DependLibrary - name: Set TERM variable run: echo "TERM=xterm" >> $GITHUB_ENV diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index 6ffa2c1..c9c4073 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -42,7 +42,7 @@ jobs: uses: actions/checkout@v4 with: repository: libxengine/XEngine_OPenSource - path: XEngine_Source/XEngine_Depend + path: XEngine_Source/XEngine_DependLibrary - name: Set TERM variable run: echo "TERM=xterm" >> $GITHUB_ENV diff --git a/.github/workflows/fedora_build.yml b/.github/workflows/fedora_build.yml index fe1d161..6c1a12e 100644 --- a/.github/workflows/fedora_build.yml +++ b/.github/workflows/fedora_build.yml @@ -46,7 +46,7 @@ jobs: uses: actions/checkout@v4 with: repository: libxengine/XEngine_OPenSource - path: XEngine_Source/XEngine_Depend + path: XEngine_Source/XEngine_DependLibrary - name: install system package run: | diff --git a/.gitmodules b/.gitmodules index 1cc1974..3949a92 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "XEngine_Source/XEngine_Depend"] - path = XEngine_Source/XEngine_Depend + path = XEngine_Source/XEngine_DependLibrary url = https://github.com/libxengine/XEngine_OPenSource.git diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index c9cb526..051bac6 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -3,8 +3,8 @@ UNICODE = 0 PLATFORM=linux FLAGS= #要编译的模块 -THIRDPART_MODULE_JSONCPP = ./XEngine_Depend/XEngine_Module/jsoncpp -THIRDPART_MODULE_REPORT = ./XEngine_Depend/XEngine_Module/XEngine_InfoReport +THIRDPART_MODULE_JSONCPP = ./XEngine_DependLibrary/XEngine_Module/jsoncpp +THIRDPART_MODULE_REPORT = ./XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport MODULE_CONFIGURE_PATH = ./XEngine_ModuleConfigure MODULE_PROTOCOL_PATH = ./XEngine_ModuleProtocol diff --git a/XEngine_Source/VSClean.bat b/XEngine_Source/VSClean.bat index bf8eca3..1ca651d 100644 --- a/XEngine_Source/VSClean.bat +++ b/XEngine_Source/VSClean.bat @@ -5,6 +5,7 @@ FOR /R . %%d IN (.) DO rd /s /q "%%d\Release" 2>nul FOR /R . %%d IN (.) DO rd /s /q "%%d\x64" 2>nul FOR /R . %%d IN (.) DO rd /s /q "%%d\Debug" 2>nul FOR /R . %%d IN (.) DO rd /s /q "%%d\ipch" 2>nul +FOR /R . %%d IN (.) DO rd /s /q "%%d\ARM64" 2>nul rem If the Properties directory is empty, remove it FOR /R . %%d in (.) do rd /q "%%d\Properties" 2> nul diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index bc11684..8b87e47 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -30,17 +30,17 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModuleProtocol", "X {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_Depend", "XEngine_Depend", "{91EFAD20-FF05-4CA9-9472-7CEE32340749}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_DependLibrary", "XEngine_DependLibrary", "{91EFAD20-FF05-4CA9-9472-7CEE32340749}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsoncpp", "XEngine_Depend\XEngine_Module\jsoncpp\jsoncpp.vcxproj", "{F1736B3F-03A2-4FC7-B045-A12BA8D724FB}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModuleHelp", "XEngine_ModuleHelp\XEngine_ModuleHelp.vcxproj", "{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jsoncpp", "XEngine_DependLibrary\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", "{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngine_DependLibrary\XEngine_Module\XEngine_InfoReport\XEngine_InfoReport.vcxproj", "{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}" ProjectSection(ProjectDependencies) = postProject {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModuleHelp", "XEngine_ModuleHelp\XEngine_ModuleHelp.vcxproj", "{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM64 = Debug|ARM64 @@ -99,6 +99,18 @@ Global {9512A610-7197-4522-9AEF-1486619C99FE}.Release|x64.Build.0 = Release|x64 {9512A610-7197-4522-9AEF-1486619C99FE}.Release|x86.ActiveCfg = Release|Win32 {9512A610-7197-4522-9AEF-1486619C99FE}.Release|x86.Build.0 = Release|Win32 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.Build.0 = Debug|ARM64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.ActiveCfg = Debug|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.Build.0 = Debug|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.ActiveCfg = Debug|Win32 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.Build.0 = Debug|Win32 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.ActiveCfg = Release|ARM64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.Build.0 = Release|ARM64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.ActiveCfg = Release|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.Build.0 = Release|x64 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.ActiveCfg = Release|Win32 + {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.Build.0 = Release|Win32 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|ARM64.ActiveCfg = Debug|ARM64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|ARM64.Build.0 = Debug|ARM64 {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}.Debug|x64.ActiveCfg = Debug|x64 @@ -123,18 +135,6 @@ Global {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 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.Build.0 = Debug|ARM64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.ActiveCfg = Debug|x64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.Build.0 = Debug|x64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.ActiveCfg = Debug|Win32 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.Build.0 = Debug|Win32 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.ActiveCfg = Release|ARM64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.Build.0 = Release|ARM64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.ActiveCfg = Release|x64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.Build.0 = Release|x64 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.ActiveCfg = Release|Win32 - {7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_DependLibrary similarity index 100% rename from XEngine_Source/XEngine_Depend rename to XEngine_Source/XEngine_DependLibrary diff --git a/XEngine_Source/XEngine_ModuleConfigure/Makefile b/XEngine_Source/XEngine_ModuleConfigure/Makefile index 83b2067..5471e07 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/Makefile +++ b/XEngine_Source/XEngine_ModuleConfigure/Makefile @@ -2,8 +2,8 @@ CC = g++ -Wall -std=c++20 -fPIC PLATVER = FILEEXT = LIBFLAG = -LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp -LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp +LOADHDR = -I ./ -I ../XEngine_DependLibrary/XEngine_Module/jsoncpp +LOADSO = -L ../XEngine_DependLibrary/XEngine_Module/jsoncpp LIB = -ljsoncpp LIBEX = OBJECTS = ModuleConfigure_Json.o pch.o diff --git a/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.vcxproj b/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.vcxproj index a214de5..1e0aa03 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.vcxproj +++ b/XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.vcxproj @@ -99,32 +99,32 @@ true - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;..\XEngine_ModuleConfigure;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;..\XEngine_ModuleConfigure;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) false - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) true - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) true - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_LibArm64);$(LibraryPath) false - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) false - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_LibArm64);$(LibraryPath) diff --git a/XEngine_Source/XEngine_ModuleHelp/Makefile b/XEngine_Source/XEngine_ModuleHelp/Makefile index 6101972..fd20bee 100644 --- a/XEngine_Source/XEngine_ModuleHelp/Makefile +++ b/XEngine_Source/XEngine_ModuleHelp/Makefile @@ -2,7 +2,7 @@ CC = g++ -Wall -std=c++20 -fPIC PLATVER = FILEEXT = LIBFLAG = -LOADHDR = -I ./ -I ../XEngine_ThirdPart/jsoncpp +LOADHDR = -I ./ LOADSO = LIB = -lXEngine_BaseLib LIBEX = diff --git a/XEngine_Source/XEngine_ModuleProtocol/Makefile b/XEngine_Source/XEngine_ModuleProtocol/Makefile index ec96726..df4d4fe 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/Makefile +++ b/XEngine_Source/XEngine_ModuleProtocol/Makefile @@ -2,8 +2,8 @@ CC = g++ -Wall -std=c++20 -fPIC PLATVER = FILEEXT = LIBFLAG = -LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp -LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp +LOADHDR = -I ./ -I ../XEngine_DependLibrary/XEngine_Module/jsoncpp +LOADSO = -L ../XEngine_DependLibrary/XEngine_Module/jsoncpp LIB = -ljsoncpp LIBEX = OBJECTS = ModuleProtocol_Packet.o ModuleProtocol_Parse.o pch.o diff --git a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj index e69598e..9bdddab 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj +++ b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.vcxproj @@ -98,24 +98,24 @@ - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;..\XEngine_ModuleProtocol;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;..\XEngine_ModuleProtocol;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) - $(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) diff --git a/XEngine_Source/XEngine_ModuleSession/Makefile b/XEngine_Source/XEngine_ModuleSession/Makefile index 586321d..3e2dda9 100644 --- a/XEngine_Source/XEngine_ModuleSession/Makefile +++ b/XEngine_Source/XEngine_ModuleSession/Makefile @@ -2,7 +2,7 @@ CC = g++ -Wall -std=c++20 -fPIC PLATVER = FILEEXT = LIBFLAG = -LOADHDR = -I ./ -I ../XEngine_ThirdPart/jsoncpp +LOADHDR = -I ./ LOADSO = LIB = -lXEngine_BaseLib -lXEngine_Algorithm LIBEX = diff --git a/XEngine_Source/XEngine_ServiceApp/Makefile b/XEngine_Source/XEngine_ServiceApp/Makefile index 371417e..b324945 100644 --- a/XEngine_Source/XEngine_ServiceApp/Makefile +++ b/XEngine_Source/XEngine_ServiceApp/Makefile @@ -1,8 +1,8 @@ CC = g++ -Wall -std=c++20 PLATVER = -LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp +LOADHDR = -I ./ -I ../XEngine_DependLibrary/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_ModuleConfigure -L ../XEngine_ModuleSession -L ../XEngine_ModuleProtocol -L ../XEngine_ModuleHelp \ - -L ../XEngine_Depend/XEngine_Module/jsoncpp -L ../XEngine_Depend/XEngine_Module/XEngine_InfoReport + -L ../XEngine_DependLibrary/XEngine_Module/jsoncpp -L ../XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_Cryption -lXEngine_ManagePool -lXClient_Socket -lXClient_APIHelp -lHelpComponents_XLog -lHelpComponents_Packets -lRfcComponents_ProxyProtocol -lNetHelp_APIHelp -lNetHelp_APIAddr -lNetHelp_XSocket \ -lXEngine_ModuleConfigure -lXEngine_ModuleSession -lXEngine_ModuleProtocol -lXEngine_ModuleHelp \ -ljsoncpp -lXEngine_InfoReport diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h index 62e8a5b..acdf22c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h @@ -51,8 +51,8 @@ using namespace std; #include //加载项目相关头文件 #include "../XEngine_UserProtocol.h" -#include "../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Define.h" -#include "../XEngine_Depend/XEngine_Module/XEngine_InfoReport/InfoReport_Error.h" +#include "../XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport/InfoReport_Define.h" +#include "../XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport/InfoReport_Error.h" #include "../XEngine_ModuleConfigure/ModuleConfig_Define.h" #include "../XEngine_ModuleConfigure/ModuleConfig_Error.h" #include "../XEngine_ModuleSession/ModuleSession_Define.h" -- Gitee From 0d4d6fbddc763bb30d02cdc47add0278c655b68e Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 4 Jul 2025 10:15:30 +0800 Subject: [PATCH 05/24] update:depend library --- XEngine_Source/XEngine_DependLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_DependLibrary b/XEngine_Source/XEngine_DependLibrary index 78d2ea2..91c4b0c 160000 --- a/XEngine_Source/XEngine_DependLibrary +++ b/XEngine_Source/XEngine_DependLibrary @@ -1 +1 @@ -Subproject commit 78d2ea2cfcfa4701e122ee3e4ac536f712831f86 +Subproject commit 91c4b0cdf0d45775e0575f04ae9e13491bd3934a -- Gitee From ea43a3932f980c9d256d1bcdf7ce6b6bffd9fd5d Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 4 Jul 2025 10:16:23 +0800 Subject: [PATCH 06/24] update:vs copy file --- XEngine_Source/VSCopy_x86.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/VSCopy_x86.bat b/XEngine_Source/VSCopy_x86.bat index d65a0bd..3e304e9 100644 --- a/XEngine_Source/VSCopy_x86.bat +++ b/XEngine_Source/VSCopy_x86.bat @@ -7,8 +7,8 @@ copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_ManagePool.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Client\XClient_Socket.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Client\XClient_APIHelp.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_XSocket.dll" "./" -- Gitee From 887c38631913b78b0a3a8ce41e9841e88778232d Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 5 Jul 2025 09:52:22 +0800 Subject: [PATCH 07/24] ci:add rocky linux 10 support --- .github/workflows/Rocky_build.yml | 22 +++++++++++++++++----- .github/workflows/msbuild.yml | 1 + 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 2e8d654..5df3623 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -16,7 +16,7 @@ jobs: build: runs-on: ${{ matrix.runner }} container: - image: rockylinux/rockylinux:9.5 + image: rockylinux/rockylinux:${{ matrix.version }} options: --platform ${{ matrix.platform }} strategy: matrix: @@ -25,10 +25,22 @@ jobs: runner: ubuntu-24.04 platform: linux/amd64 artifact: x86-64 + version: 9 + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + artifact: x86-64 + version: 10 + - arch: arm64 + runner: ubuntu-24.04-arm + platform: linux/arm64 + artifact: Arm64 + version: 9 - arch: arm64 runner: ubuntu-24.04-arm platform: linux/arm64 artifact: Arm64 + version: 10 steps: - name: Checkout main repository code @@ -58,9 +70,9 @@ jobs: - name: install xengine library run: | latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) - wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_${{ matrix.artifact }}.zip - unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} - cd XEngine_RockyLinux_9_${{ matrix.artifact }} + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_${{ matrix.version }}_${{ matrix.artifact }}.zip + unzip ./XEngine_RockyLinux_${{ matrix.version }}_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_${{ matrix.version }}_${{ matrix.artifact }} + cd XEngine_RockyLinux_${{ matrix.version }}_${{ matrix.artifact }} chmod 777 * ./XEngine_LINEnv.sh -i 3 @@ -83,6 +95,6 @@ jobs: - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_ProxyServiceApp-RockyLinux_9_${{ matrix.artifact }} + name: XEngine_ProxyServiceApp-RockyLinux_${{ matrix.version }}_${{ matrix.artifact }} path: XEngine_Release/ retention-days: 1 diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index dd727db..ea41e76 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -98,6 +98,7 @@ jobs: cp -r XEngine_Source/VSCopy_x64.bat XEngine_Release/ cd XEngine_Release ./VSCopy_x64.bat + ./XEngine_ServiceApp.exe -t shell: pwsh - name: Conditional Step for ARM64 Release if: matrix.configuration == 'Release' && matrix.platform == 'ARM64' -- Gitee From a8729e72b161ea54844915204464c6d05f8e52fe Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 5 Jul 2025 09:53:10 +0800 Subject: [PATCH 08/24] modify:start parameter are not case sensitive and add log parameter --- .../XEngine_ServiceApp/XEngine_Configure.cpp | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp index f98dfdb..3d5ec88 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp @@ -28,49 +28,61 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS for (int i = 0; i < argc; i++) { - if ((0 == _tcsxcmp("-h", argv[i])) || (0 == _tcsxcmp("-H", argv[i]))) + if (0 == _tcsxicmp("-h", argv[i])) { XEngine_Configure_Help(); return false; } - else if (0 == _tcsxcmp("-d", argv[i])) + else if (0 == _tcsxicmp("-d", argv[i])) { pSt_Configure->bDeamon = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-ps", argv[i])) + else if (0 == _tcsxicmp("-ps", argv[i])) { st_ServiceConfig.nSocksPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-pt", argv[i])) + else if (0 == _tcsxicmp("-pt", argv[i])) { st_ServiceConfig.nTunnelPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-pf", argv[i])) + else if (0 == _tcsxicmp("-pf", argv[i])) { st_ServiceConfig.nForwardPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-pp", argv[i])) + else if (0 == _tcsxicmp("-pp", argv[i])) { st_ServiceConfig.nProxyPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-ll", argv[i])) - { - pSt_Configure->st_XLog.nLogLeave = _ttxoi(argv[++i]); - } - else if (0 == _tcsxcmp("-lt", argv[i])) - { - pSt_Configure->st_XLog.nLogType = _ttxoi(argv[++i]); - } - else if (0 == _tcsxcmp("-v", argv[i])) + else if (0 == _tcsxicmp("-v", argv[i])) { string m_StrVersion = st_ServiceConfig.st_XVer.pStl_ListVer->front(); printf("Version:%s\n", m_StrVersion.c_str()); return false; } - else if (0 == _tcsxcmp("-t", argv[i])) + else if (0 == _tcsxicmp("-t", argv[i])) { bIsTest = true; } + else if (0 == _tcsxicmp("-lt", argv[i])) + { + pSt_Configure->st_XLog.nLogType = _ttxoi(argv[++i]); + } + else if (0 == _tcsxcmp("-l", argv[i])) + { + LPCXSTR lpszLogLevel = argv[++i]; + if (0 == _tcsxcmp("debug", lpszLogLevel)) + { + pSt_Configure->st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DETAIL; + } + else if (0 == _tcsxcmp("detail", lpszLogLevel)) + { + pSt_Configure->st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DETAIL; + } + else if (0 == _tcsxcmp("info", lpszLogLevel)) + { + pSt_Configure->st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO; + } + } } return true; -- Gitee From 3c0d06c47715c38bf3839c8d68086c1157fd7142 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 5 Jul 2025 11:06:16 +0800 Subject: [PATCH 09/24] update:read me --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b1b063f..f016dea 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ macos执行:./XEngine_LINEnv.sh -i 3 由于依赖的子模块,在你checkout仓库后,在仓库目录下执行下面的命令拉取子模块 git submodule init git submodule update -如果github访问失败,你也可以clone该项目,在主目录下使用命令:git clone https://gitee.com/xengine/XEngine_OPenSource.git XEngine_Source/XEngine_Depend +如果github访问失败,你也可以clone该项目,在主目录下使用命令:git clone https://gitee.com/xengine/XEngine_OPenSource.git XEngine_Source/XEngine_DependLibrary #### Windows 使用VS打开并且编译,支持WINDOWS 7SP1以上系统 -- Gitee From 9535ddefae215a3554f56dc366701e38cb7276d2 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 8 Jul 2025 10:16:42 +0800 Subject: [PATCH 10/24] update:read me --- README.en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.en.md b/README.en.md index faf176d..0907c36 100644 --- a/README.en.md +++ b/README.en.md @@ -39,7 +39,7 @@ Linux Exection:sudo ./XEngine_LINEnv.sh -i 3 Macos Exection:./XEngine_LINEnv.sh -i 3 #### sub module -Due to the dependent sub-modules, after you checkout the warehouse, execute the following command in the warehouse directory to pull the sub-modules +Due to the dependent sub-modules, after you checkout the resprepository, execute the following command in the resprepository directory to pull the sub-modules git submodule init git submodule update -- Gitee From c642c3a06ae2bc60ad40da2f13e82ad48fd2455a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 14 Aug 2025 14:50:13 +0800 Subject: [PATCH 11/24] update:depend library --- XEngine_Source/XEngine_DependLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_DependLibrary b/XEngine_Source/XEngine_DependLibrary index 91c4b0c..8d4fe15 160000 --- a/XEngine_Source/XEngine_DependLibrary +++ b/XEngine_Source/XEngine_DependLibrary @@ -1 +1 @@ -Subproject commit 91c4b0cdf0d45775e0575f04ae9e13491bd3934a +Subproject commit 8d4fe1580afe4c02f4a13a3fe21c6e77a22b18cd -- Gitee From af8d9caa7e50ef24effe6fc29722ecf7fbc563c5 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 14 Aug 2025 14:51:44 +0800 Subject: [PATCH 12/24] modify:start parameter not case sensitive --- .../XEngine_ServiceApp/XEngine_Configure.cpp | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp index 3d5ec88..f6735af 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp @@ -28,42 +28,42 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS for (int i = 0; i < argc; i++) { - if (0 == _tcsxicmp("-h", argv[i])) + if (0 == _tcsxcmp("-h", argv[i])) { XEngine_Configure_Help(); return false; } - else if (0 == _tcsxicmp("-d", argv[i])) + else if (0 == _tcsxcmp("-d", argv[i])) { pSt_Configure->bDeamon = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-ps", argv[i])) + else if (0 == _tcsxcmp("-ps", argv[i])) { st_ServiceConfig.nSocksPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-pt", argv[i])) + else if (0 == _tcsxcmp("-pt", argv[i])) { st_ServiceConfig.nTunnelPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-pf", argv[i])) + else if (0 == _tcsxcmp("-pf", argv[i])) { st_ServiceConfig.nForwardPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-pp", argv[i])) + else if (0 == _tcsxcmp("-pp", argv[i])) { st_ServiceConfig.nProxyPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-v", argv[i])) + else if (0 == _tcsxcmp("-v", argv[i])) { string m_StrVersion = st_ServiceConfig.st_XVer.pStl_ListVer->front(); printf("Version:%s\n", m_StrVersion.c_str()); return false; } - else if (0 == _tcsxicmp("-t", argv[i])) + else if (0 == _tcsxcmp("-t", argv[i])) { bIsTest = true; } - else if (0 == _tcsxicmp("-lt", argv[i])) + else if (0 == _tcsxcmp("-lt", argv[i])) { pSt_Configure->st_XLog.nLogType = _ttxoi(argv[++i]); } @@ -72,7 +72,7 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS LPCXSTR lpszLogLevel = argv[++i]; if (0 == _tcsxcmp("debug", lpszLogLevel)) { - pSt_Configure->st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DETAIL; + pSt_Configure->st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG; } else if (0 == _tcsxcmp("detail", lpszLogLevel)) { -- Gitee From e25c4d8606c72e070efd67f7cbdec1b482a3dc41 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 21 Aug 2025 10:19:52 +0800 Subject: [PATCH 13/24] update:depend library --- XEngine_Source/XEngine_DependLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_DependLibrary b/XEngine_Source/XEngine_DependLibrary index 8d4fe15..6a2fd03 160000 --- a/XEngine_Source/XEngine_DependLibrary +++ b/XEngine_Source/XEngine_DependLibrary @@ -1 +1 @@ -Subproject commit 8d4fe1580afe4c02f4a13a3fe21c6e77a22b18cd +Subproject commit 6a2fd030257062f98b2a2751e9d5b6559901a53e -- Gitee From 86416a42fa72f01a2734697034975e47bd515e16 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 21 Aug 2025 10:21:50 +0800 Subject: [PATCH 14/24] modify:save and value away for socks --- .../ModuleSession_Define.h | 67 ++++--- .../ModuleSession_Socks.cpp | 169 +++++++++--------- .../ModuleSession_Socks/ModuleSession_Socks.h | 12 +- .../XEngine_ModuleSession.def | 3 +- XEngine_Source/XEngine_ModuleSession/pch.cpp | 16 +- .../XEngine_ServiceApp/XEngine_Network.cpp | 13 +- .../XEngine_ServiceApp/XEngine_SocksTask.cpp | 48 ++--- 7 files changed, 165 insertions(+), 163 deletions(-) diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h index 6c4fa59..a72dd0e 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h @@ -202,22 +202,22 @@ extern "C" bool ModuleSession_Socks_Delete(LPCXSTR lpszClientID); 类型:常量字符指针 可空:N 意思:输入要操作的客户端 - 参数.二:lParam + 参数.二:xhClient In/Out:In - 类型:无类型指针 + 类型:句柄 可空:N - 意思:输入设置的内容 - 参数.三:nLen + 意思:输入客户端网络句柄 + 参数.三:lpszClientAddr In/Out:In - 类型:整数型 + 类型:常量字符指针 可空:N - 意思:输入要设置内容大小 + 意思:绑定的客户端地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, int nLen); +extern "C" bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr); /******************************************************************** 函数名称:ModuleSession_Socks_GetInfo 函数功能:获取自定义信息 @@ -226,46 +226,55 @@ extern "C" bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, 类型:常量字符指针 可空:N 意思:输入要操作的客户端 - 参数.二:lParam + 参数.二:pxhClient In/Out:Out - 类型:无类型指针 + 类型:句柄 可空:N - 意思:输出获取到的内容 - 参数.三:pInt_Len - In/Out:Out - 类型:整数型指针 - 可空:Y - 意思:输出内容大小 + 意思:输出客户端网络句柄 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XPVOID lParam, int* pInt_Len = NULL); +extern "C" bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNETHANDLE* pxhClient); /******************************************************************** -函数名称:ModuleSession_Socks_GetList -函数功能:获取所有自定义数据 - 参数.一:xpppMem - In/Out:Out - 类型:三级指针 +函数名称:ModuleSession_Socks_GetHandleForAddr +函数功能:通过客户端地址获取句柄 + 参数.一:lpszClientAddr + In/Out:In + 类型:常量字符指针 可空:N - 意思:输出获取到的列表 - 参数.二:pInt_Count + 意思:输入要获取的客户端地址 + 参数.二:pxhClient In/Out:Out - 类型:整数型指针 + 类型:句柄 可空:N - 意思:输出列表个数 - 参数.三:nSize + 意思:输出句柄 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient); +/******************************************************************** +函数名称:ModuleSession_Socks_GetAddrForHandle +函数功能:通过客户端句柄来获得对应的IP地址 + 参数.一:pxhClient + In/Out:In + 类型:句柄 + 可空:N + 意思:输入句柄 + 参数.二:lpszClientAddr In/Out:Out - 类型:整数型 + 类型:字符指针 可空:N - 意思:输入每个成员的大小 + 意思:输出获取的客户端地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Socks_GetList(XPPPMEM xpppMem, int* pInt_Count, int nSize); +extern "C" bool ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* ptszClientAddr); /******************************************************************** 函数名称:ModuleSession_Socks_GetStatus 函数功能:获取客户端状态 diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp index a546625..622ec38 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp @@ -52,7 +52,6 @@ bool CModuleSession_Socks::ModuleSession_Socks_Create(LPCXSTR lpszClientID) } memset(pSt_SocksClinet, '\0', sizeof(RFCPROTOCOL_SOCKS5CLIENT)); - _tcsxcpy(pSt_SocksClinet->tszClientAddr, lpszClientID); pSt_SocksClinet->enProxyStatus = ENUM_PROXY_SESSION_SOCKS_STATUS_CREATE; st_Locker.lock(); @@ -81,11 +80,6 @@ bool CModuleSession_Socks::ModuleSession_Socks_Delete(LPCXSTR lpszClientID) unordered_map::const_iterator stl_MapIterator = stl_MapClients.find(lpszClientID); if (stl_MapIterator != stl_MapClients.end()) { - if (NULL != stl_MapIterator->second->lParam) - { - free(stl_MapIterator->second->lParam); - stl_MapIterator->second->lParam = NULL; - } stl_MapClients.erase(stl_MapIterator); } st_Locker.unlock(); @@ -99,26 +93,26 @@ bool CModuleSession_Socks::ModuleSession_Socks_Delete(LPCXSTR lpszClientID) 类型:常量字符指针 可空:N 意思:输入要操作的客户端 - 参数.二:lParam + 参数.二:xhClient In/Out:In - 类型:无类型指针 + 类型:句柄 可空:N - 意思:输入设置的内容 - 参数.三:nLen + 意思:输入客户端网络句柄 + 参数.三:lpszClientAddr In/Out:In - 类型:整数型 + 类型:常量字符指针 可空:N - 意思:输入要设置内容大小 + 意思:绑定的客户端地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_Socks::ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, int nLen) +bool CModuleSession_Socks::ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr) { Session_IsErrorOccur = false; - if ((NULL == lpszClientID) || (NULL == lParam)) + if ((NULL == lpszClientID)) { Session_IsErrorOccur = true; Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_PARAMENT; @@ -133,31 +127,8 @@ bool CModuleSession_Socks::ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XPV st_Locker.unlock(); return false; } - //内存是否已经申请 - if (NULL == stl_MapIterator->second->lParam) - { - stl_MapIterator->second->lParam = malloc(nLen); - if (NULL == stl_MapIterator->second->lParam) - { - Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_MALLOC; - st_Locker.unlock(); - return false; - } - } - else - { - stl_MapIterator->second->lParam = realloc(stl_MapIterator->second->lParam, nLen); - if (NULL == stl_MapIterator->second->lParam) - { - Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_MALLOC; - st_Locker.unlock(); - return false; - } - } - stl_MapIterator->second->nCTMLen = nLen; - memcpy(stl_MapIterator->second->lParam, lParam, nLen); + stl_MapIterator->second->xhClient = xhClient; + _tcsxcpy(stl_MapIterator->second->tszClientAddr, lpszClientAddr); st_Locker.unlock(); return true; } @@ -169,26 +140,21 @@ bool CModuleSession_Socks::ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XPV 类型:常量字符指针 可空:N 意思:输入要操作的客户端 - 参数.二:lParam + 参数.二:pxhClient In/Out:Out - 类型:无类型指针 + 类型:句柄 可空:N - 意思:输出获取到的内容 - 参数.三:pInt_Len - In/Out:Out - 类型:整数型指针 - 可空:Y - 意思:输出内容大小 + 意思:输出客户端网络句柄 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_Socks::ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XPVOID lParam, int* pInt_Len /* = NULL */) +bool CModuleSession_Socks::ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNETHANDLE *pxhClient) { Session_IsErrorOccur = false; - if ((NULL == lpszClientID) || (NULL == lParam)) + if ((NULL == lpszClientID)) { Session_IsErrorOccur = true; Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_PARAMENT; @@ -203,65 +169,108 @@ bool CModuleSession_Socks::ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XPV st_Locker.unlock_shared(); return false; } - if (NULL == stl_MapIterator->second->lParam) + *pxhClient = stl_MapIterator->second->xhClient; + st_Locker.unlock_shared(); + return true; +} +/******************************************************************** +函数名称:ModuleSession_Socks_GetHandleForAddr +函数功能:通过客户端地址获取句柄 + 参数.一:lpszClientAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要获取的客户端地址 + 参数.二:pxhClient + In/Out:Out + 类型:句柄 + 可空:N + 意思:输出句柄 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_Socks::ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient) +{ + Session_IsErrorOccur = false; + + if ((NULL == lpszClientAddr)) { Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_NOTSET; - st_Locker.unlock_shared(); + Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_PARAMENT; return false; } - memcpy(lParam, stl_MapIterator->second->lParam, stl_MapIterator->second->nCTMLen); - if (NULL != pInt_Len) + bool bFound = false; + + st_Locker.lock_shared(); + for (auto stl_MapIterator = stl_MapClients.begin(); stl_MapIterator != stl_MapClients.end(); stl_MapIterator++) { - *pInt_Len = stl_MapIterator->second->nCTMLen; + if (0 == _tcsxnicmp(lpszClientAddr, stl_MapIterator->second->tszClientAddr, _tcsxlen(lpszClientAddr))) + { + bFound = true; + *pxhClient = stl_MapIterator->second->xhClient; + break; + } } - st_Locker.unlock_shared(); + + if (!bFound) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_NOTFOUND; + return false; + } return true; } /******************************************************************** -函数名称:ModuleSession_Socks_GetList -函数功能:获取所有自定义数据 - 参数.一:xpppMem - In/Out:Out - 类型:三级指针 - 可空:N - 意思:输出获取到的列表 - 参数.二:pInt_Count - In/Out:Out - 类型:整数型指针 +函数名称:ModuleSession_Socks_GetAddrForHandle +函数功能:通过客户端句柄来获得对应的IP地址 + 参数.一:pxhClient + In/Out:In + 类型:句柄 可空:N - 意思:输出列表个数 - 参数.三:nSize + 意思:输入句柄 + 参数.二:lpszClientAddr In/Out:Out - 类型:整数型 + 类型:字符指针 可空:N - 意思:输入每个成员的大小 + 意思:输出获取的客户端地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_Socks::ModuleSession_Socks_GetList(XPPPMEM xpppMem, int* pInt_Count, int nSize) +bool CModuleSession_Socks::ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* ptszClientAddr) { Session_IsErrorOccur = false; - st_Locker.lock_shared(); - - *pInt_Count = stl_MapClients.size(); - BaseLib_Memory_Malloc(xpppMem, *pInt_Count, nSize); + if ((NULL == ptszClientAddr)) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_PARAMENT; + return false; + } + bool bFound = false; - unordered_map::const_iterator stl_MapIterator = stl_MapClients.begin(); - for (int i = 0; stl_MapIterator != stl_MapClients.end(); stl_MapIterator++, i++) + st_Locker.lock_shared(); + for (auto stl_MapIterator = stl_MapClients.begin(); stl_MapIterator != stl_MapClients.end(); stl_MapIterator++) { - //是否设置有值 - if ((NULL != stl_MapIterator->second->lParam) && (stl_MapIterator->second->nCTMLen > 0)) + if (xhClient == stl_MapIterator->second->xhClient) { - memcpy((*xpppMem)[i], stl_MapIterator->second->lParam, stl_MapIterator->second->nCTMLen); + _tcsxcpy(ptszClientAddr, stl_MapIterator->second->tszClientAddr); + bFound = true; + break; } } st_Locker.unlock_shared(); + if (!bFound) + { + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_NOTFOUND; + return false; + } return true; } /******************************************************************** diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h index 6c97be0..a59d1cc 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h @@ -16,11 +16,8 @@ typedef struct { XCHAR tszClientAddr[128]; //代理客户端地址 - XCHAR tszCMDBuffer[128]; //地址信息 - int nCMDLen; //CMD地址信息大小 - int nCTMLen; //自定义大小 + XNETHANDLE xhClient; //客户端句柄 ENUM_PROXY_SESSION_SOCKS_STATUS enProxyStatus; //客户端状态 - XPVOID lParam; }RFCPROTOCOL_SOCKS5CLIENT, * LPRFCPROTOCOL_SOCKS5CLIENT; @@ -32,9 +29,10 @@ public: public: bool ModuleSession_Socks_Create(LPCXSTR lpszClientID); bool ModuleSession_Socks_Delete(LPCXSTR lpszClientID); - bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, int nLen); - bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XPVOID lParam, int* pInt_Len = NULL); - bool ModuleSession_Socks_GetList(XPPPMEM xpppMem, int* pInt_Count, int nSize); + bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr); + bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNETHANDLE *pxhClient); + bool ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient); + bool ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR *ptszClientAddr); bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS* penSocks); bool ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS enStatus); bool ModuleSession_Socks_List(XCHAR*** ppptszClientList, int* pInt_ListCount); diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def index fc28f03..af3c0c3 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def @@ -7,7 +7,8 @@ EXPORTS ModuleSession_Socks_Delete ModuleSession_Socks_SetInfo ModuleSession_Socks_GetInfo - ModuleSession_Socks_GetList + ModuleSession_Socks_GetHandleForAddr + ModuleSession_Socks_GetAddrForHandle ModuleSession_Socks_GetStatus ModuleSession_Socks_SetStatus ModuleSession_Socks_List diff --git a/XEngine_Source/XEngine_ModuleSession/pch.cpp b/XEngine_Source/XEngine_ModuleSession/pch.cpp index abd7ebb..31379ed 100644 --- a/XEngine_Source/XEngine_ModuleSession/pch.cpp +++ b/XEngine_Source/XEngine_ModuleSession/pch.cpp @@ -72,17 +72,21 @@ extern "C" bool ModuleSession_Socks_Delete(LPCXSTR lpszClientID) { return m_Socks.ModuleSession_Socks_Delete(lpszClientID); } -extern "C" bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, int nLen) +extern "C" bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr) { - return m_Socks.ModuleSession_Socks_SetInfo(lpszClientID, lParam, nLen); + return m_Socks.ModuleSession_Socks_SetInfo(lpszClientID, xhClient, lpszClientAddr); } -extern "C" bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XPVOID lParam, int* pInt_Len) +extern "C" bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNETHANDLE* pxhClient) { - return m_Socks.ModuleSession_Socks_GetInfo(lpszClientID, lParam, pInt_Len); + return m_Socks.ModuleSession_Socks_GetInfo(lpszClientID, pxhClient); } -extern "C" bool ModuleSession_Socks_GetList(XPPPMEM xpppMem, int* pInt_Count, int nSize) +extern "C" bool ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient) { - return m_Socks.ModuleSession_Socks_GetList(xpppMem, pInt_Count, nSize); + return m_Socks.ModuleSession_Socks_GetHandleForAddr(lpszClientAddr, pxhClient); +} +extern "C" bool ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* ptszClientAddr) +{ + return m_Socks.ModuleSession_Socks_GetAddrForHandle(xhClient, ptszClientAddr); } extern "C" bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS* penSocks) { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp index 70717bd..a0bae0b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp @@ -158,18 +158,11 @@ void XEngine_Network_Close(LPCXSTR lpszClientAddr, int nIPProto, int nCloseType) NetCore_TCPXCore_CloseForClientEx(xhSocksSocket, lpszClientAddr); } //释放客户端 - int nListCount = 0; - PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; - ModuleSession_Socks_GetList((XPPPMEM)&ppSt_ClientList, &nListCount, sizeof(PROXYPROTOCOL_CLIENTINFO)); - for (int i = 0; i < nListCount; i++) + XNETHANDLE xhClient = 0; + if (ModuleSession_Socks_GetHandleForAddr(lpszClientAddr, &xhClient)) { - if (0 == _tcsxnicmp(lpszClientAddr, ppSt_ClientList[i]->tszIPAddr, _tcsxlen(lpszClientAddr))) - { - XClient_TCPSelect_DeleteEx(xhSocksClient, ppSt_ClientList[i]->xhClient); - break; - } + XClient_TCPSelect_DeleteEx(xhSocksClient, xhClient); } - BaseLib_Memory_Free((XPPPMEM)&ppSt_ClientList, nListCount); ModuleSession_Socks_Delete(lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("SOCKS客户端:%s,离开服务器,离开类型;%d"), lpszClientAddr, nCloseType); } diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index 8fb117b..a2d2003 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -98,13 +98,12 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int else if (ENUM_PROXY_SESSION_SOCKS_STATUS_USER == enSocksStatus) { int nPort = 0; + XNETHANDLE xhClient = 0; XCHAR tszClientAddr[1024]; - PROXYPROTOCOL_CLIENTINFO st_ProxyClient; ENUM_RFCCOMPONENTS_PROXYSOCKS_COMMAND enCommand; ENUM_RFCCOMPONENTS_PROXYSOCKS_IPADDR enIPType; memset(tszClientAddr, '\0', sizeof(tszClientAddr)); - memset(&st_ProxyClient, '\0', sizeof(PROXYPROTOCOL_CLIENTINFO)); if (!ProxyProtocol_SocksCore_ParseConnect(lpszMsgBuffer, nMsgLen, &enCommand, &enIPType, tszClientAddr, &nPort)) { ProxyProtocol_SocksCore_HdrPacket(tszMsgBuffer, &nLen, XENGINE_RFCCOMPONENT_PROXY_SOCKS_RESPONSE_NETWORK); @@ -118,7 +117,7 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int //连接类型,IP还是域名,没有IPV6环境.不好测试 if (ENUM_RFCCOMPONENTS_PROXYSOCKS_IPADDR_IPV4 == enIPType) { - if (!XClient_TCPSelect_InsertEx(xhSocksClient, &st_ProxyClient.xhClient, tszClientAddr, nPort)) + if (!XClient_TCPSelect_InsertEx(xhSocksClient, &xhClient, tszClientAddr, nPort)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("SOCKS客户端:%s,创建客户端连接失败,连接到服务器:%s:%d,错误:%lX"), lpszClientAddr, tszClientAddr, nPort, ProxyProtocol_GetLastError()); return false; @@ -152,7 +151,7 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int memset(tszClientAddr, '\0', sizeof(tszClientAddr)); _tcsxcpy(tszClientAddr, ppszListAddr[0]); //随便选择一个IP地址 BaseLib_Memory_Free((XPPPMEM)&ppszListAddr, nListCount); - if (!XClient_TCPSelect_InsertEx(xhSocksClient, &st_ProxyClient.xhClient, tszClientAddr, nPort)) + if (!XClient_TCPSelect_InsertEx(xhSocksClient, &xhClient, tszClientAddr, nPort)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("SOCKS客户端:%s,创建客户端连接失败,连接到服务器:%s:%d,错误:%lX"), lpszClientAddr, tszClientAddr, nPort, XClient_GetLastError()); return false; @@ -160,11 +159,8 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } } //配置客户端信息 - st_ProxyClient.enStatus = ENUM_PROXY_SESSION_SOCKS_STATUS_FORWARD; - _tcsxcpy(st_ProxyClient.tszIPAddr, lpszClientAddr); - ModuleSession_Socks_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_SOCKS_STATUS_FORWARD); - ModuleSession_Socks_SetInfo(lpszClientAddr, &st_ProxyClient, sizeof(PROXYPROTOCOL_CLIENTINFO)); + ModuleSession_Socks_SetInfo(lpszClientAddr, xhClient, lpszClientAddr); //回复结果 ProxyProtocol_SocksCore_PacketConnect(tszMsgBuffer, &nLen, tszClientAddr, nPort, enIPType, XENGINE_RFCCOMPONENT_PROXY_SOCKS_RESPONSE_SUCCESS); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_SOCKS); @@ -173,11 +169,10 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int else { //ENUM_PROXY_SESSION_SOCKS_STATUS_FORWARD 转发 - PROXYPROTOCOL_CLIENTINFO st_ProxyClient; - memset(&st_ProxyClient, '\0', sizeof(PROXYPROTOCOL_CLIENTINFO)); - if (ModuleSession_Socks_GetInfo(lpszClientAddr, &st_ProxyClient)) + XNETHANDLE xhClient = 0; + if (ModuleSession_Socks_GetInfo(lpszClientAddr, &xhClient)) { - XClient_TCPSelect_SendEx(xhSocksClient, st_ProxyClient.xhClient, lpszMsgBuffer, nMsgLen); + XClient_TCPSelect_SendEx(xhSocksClient, xhClient, lpszMsgBuffer, nMsgLen); } else { @@ -189,28 +184,21 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int void XCALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam) { - int nListCount = 0; - PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; - ModuleSession_Socks_GetList((XPPPMEM)&ppSt_ClientList, &nListCount, sizeof(PROXYPROTOCOL_CLIENTINFO)); - for (int i = 0; i < nListCount; i++) + XCHAR tszClientAddr[XPATH_MIN] = {}; + if (ModuleSession_Socks_GetAddrForHandle(xhClient, tszClientAddr)) { - if (xhClient == ppSt_ClientList[i]->xhClient) + if (ENUM_XCLIENT_SOCKET_EVENT_RECV == enTCPClientEvents) { - if (ENUM_XCLIENT_SOCKET_EVENT_RECV == enTCPClientEvents) + if (!XEngine_Network_Send(tszClientAddr, lpszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_SOCKS)) { - if (!XEngine_Network_Send(ppSt_ClientList[i]->tszIPAddr, lpszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_SOCKS)) - { - SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, ppSt_ClientList[i]->tszIPAddr); - } + SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, tszClientAddr); } - else if (ENUM_XCLIENT_SOCKET_EVENT_CLOSE == enTCPClientEvents) - { - //退出处理 - SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, ppSt_ClientList[i]->tszIPAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Socks客户端:%s,离开服务器,客户端主动断开"), ppSt_ClientList[i]->tszIPAddr); - } - break; + } + else if (ENUM_XCLIENT_SOCKET_EVENT_CLOSE == enTCPClientEvents) + { + //退出处理 + SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, tszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Socks客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); } } - BaseLib_Memory_Free((XPPPMEM)&ppSt_ClientList, nListCount); } \ No newline at end of file -- Gitee From 183f5fca5b3d31e10a6518ac46f21db51c0c5c7d Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 21 Aug 2025 10:34:37 +0800 Subject: [PATCH 15/24] fixed:client insert incorrect --- .../ModuleSession_Socks/ModuleSession_Socks.cpp | 2 +- XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp index 622ec38..64e3b7d 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp @@ -258,7 +258,7 @@ bool CModuleSession_Socks::ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhCli { if (xhClient == stl_MapIterator->second->xhClient) { - _tcsxcpy(ptszClientAddr, stl_MapIterator->second->tszClientAddr); + _tcsxcpy(ptszClientAddr, stl_MapIterator->first.c_str()); bFound = true; break; } diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index a2d2003..071aa5a 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -160,7 +160,7 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } //配置客户端信息 ModuleSession_Socks_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_SOCKS_STATUS_FORWARD); - ModuleSession_Socks_SetInfo(lpszClientAddr, xhClient, lpszClientAddr); + ModuleSession_Socks_SetInfo(lpszClientAddr, xhClient, tszClientAddr); //回复结果 ProxyProtocol_SocksCore_PacketConnect(tszMsgBuffer, &nLen, tszClientAddr, nPort, enIPType, XENGINE_RFCCOMPONENT_PROXY_SOCKS_RESPONSE_SUCCESS); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_SOCKS); -- Gitee From 54138bf9501f96e53e8f636af2b0d06635a640dd Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 21 Aug 2025 11:09:36 +0800 Subject: [PATCH 16/24] modify:set and get info for socks proxy --- .../ModuleSession_Define.h | 98 +++++---- .../ModuleSession_Socks.cpp | 6 +- .../ModuleSession_Socks/ModuleSession_Socks.h | 6 +- .../ModuleSession_Tunnel.cpp | 194 ++++++++++-------- .../ModuleSession_Tunnel.h | 13 +- .../XEngine_ModuleSession.def | 4 +- XEngine_Source/XEngine_ModuleSession/pch.cpp | 24 ++- .../XEngine_ServiceApp/XEngine_Hdr.h | 2 +- .../XEngine_ServiceApp/XEngine_Network.cpp | 13 +- .../XEngine_ServiceApp/XEngine_SocksTask.cpp | 18 +- .../XEngine_ServiceApp/XEngine_TunnelTask.cpp | 59 +++--- 11 files changed, 248 insertions(+), 189 deletions(-) diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h index a72dd0e..c07d96a 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h @@ -13,11 +13,11 @@ ///当前客户端状态 typedef enum { - ENUM_PROXY_SESSION_SOCKS_STATUS_CREATE = 0, //创建已完毕 - ENUM_PROXY_SESSION_SOCKS_STATUS_AUTH = 1, //请求验证协议协商 - ENUM_PROXY_SESSION_SOCKS_STATUS_USER = 2, //用户验证请求 - ENUM_PROXY_SESSION_SOCKS_STATUS_FORWARD = 3 //数据转发请求 -}ENUM_PROXY_SESSION_SOCKS_STATUS; + ENUM_PROXY_SESSION_CLIENT_CREATE = 0, //创建已完毕 + ENUM_PROXY_SESSION_CLIENT_AUTH = 1, //请求验证协议协商 + ENUM_PROXY_SESSION_CLIENT_USER = 2, //用户验证请求 + ENUM_PROXY_SESSION_CLIENT_FORWARD = 3 //数据转发请求 +}ENUM_PROXY_SESSION_CLIENT_STATUS; typedef struct { XENGINE_PROTOCOL_USERAUTH st_UserAuth; @@ -293,7 +293,7 @@ extern "C" bool ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS* penSocks); +extern "C" bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penSocks); /******************************************************************** 函数名称:ModuleSession_Socks_SetStatus 函数功能:设置客户端状态 @@ -312,7 +312,7 @@ extern "C" bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_S 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS enStatus); +extern "C" bool ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus); /******************************************************************** 函数名称:ModuleSession_Socks_List 函数功能:获取客户端列表 @@ -371,22 +371,22 @@ extern "C" bool ModuleSession_Tunnel_Delete(LPCXSTR lpszClientID); 类型:常量字符指针 可空:N 意思:输入要操作的客户端 - 参数.二:lParam + 参数.二:xhClient In/Out:In - 类型:无类型指针 + 类型:句柄 可空:N - 意思:输入要设置的内容 - 参数.三:nLen + 意思:输入要设置的客户端句柄 + 参数.三:lpszClientAddr In/Out:In - 类型:整数型 + 类型:常量字符指针 可空:N - 意思:输入自定义内容大小 + 意思:输入绑定的句柄客户端地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, int nLen); +extern "C" bool ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr); /******************************************************************** 函数名称:ModuleSession_Tunnel_GetInfo 函数功能:获取客户端信息 @@ -395,46 +395,74 @@ extern "C" bool ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XPVOID lParam 类型:常量字符指针 可空:N 意思:输入要操作的客户端 - 参数.二:lParam + 参数.二:pxhClient In/Out:Out - 类型:无类型指针 + 类型:句柄 可空:N 意思:输出获取到的内容 - 参数.三:pInt_Len - In/Out:Out - 类型:整数型指针 - 可空:Y - 意思:输出自定义内容大小 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, XPVOID lParam, int* pInt_Len = NULL); +extern "C" bool ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, XNETHANDLE* pxhClient); /******************************************************************** -函数名称:ModuleSession_Tunnel_GetList -函数功能:获取所有自定义数据 - 参数.一:xpppMem - In/Out:Out - 类型:三级指针 +函数名称:ModuleSession_Tunnel_SetStatus +函数功能:设置客户端状态 + 参数.一:lpszClientID + In/Out:In + 类型:常量字符指针 可空:N - 意思:输出获取到的列表 - 参数.二:pInt_Count + 意思:输入要操作的客户端 + 参数.二:enStatus + In/Out:In + 类型:枚举型 + 可空:N + 意思:输入设置的状态 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_Tunnel_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penStatus); +/******************************************************************** +函数名称:ModuleSession_Tunnel_GetStatus +函数功能:获取客户端状态 + 参数.一:lpszClientID + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的客户端 + 参数.二:penStatus In/Out:Out - 类型:整数型指针 + 类型:枚举型 可空:N - 意思:输出列表个数 - 参数.三:nSize + 意思:输出客户端的状态 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleSession_Tunnel_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus); +/******************************************************************** +函数名称:ModuleSession_Tunnel_GetAddrForHandle +函数功能:通过句柄获取ID + 参数.一:xhClient + In/Out:In + 类型:句柄 + 可空:N + 意思:输入要获取的客户端句柄 + 参数.二:ptszClientAddr In/Out:Out - 类型:整数型 + 类型:字符指针 可空:N - 意思:输入每个成员的大小 + 意思:输出获取的客户端地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleSession_Tunnel_GetList(XPPPMEM xpppMem, int* pInt_Count, int nSize); +extern "C" bool ModuleSession_Tunnel_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* ptszClientAddr); /******************************************************************** 函数名称:ModuleSession_Tunnel_Packet 函数功能:解析客户端的隧道代理协议 diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp index 64e3b7d..a40f95f 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp @@ -52,7 +52,7 @@ bool CModuleSession_Socks::ModuleSession_Socks_Create(LPCXSTR lpszClientID) } memset(pSt_SocksClinet, '\0', sizeof(RFCPROTOCOL_SOCKS5CLIENT)); - pSt_SocksClinet->enProxyStatus = ENUM_PROXY_SESSION_SOCKS_STATUS_CREATE; + pSt_SocksClinet->enProxyStatus = ENUM_PROXY_SESSION_CLIENT_CREATE; st_Locker.lock(); stl_MapClients.insert(make_pair(lpszClientID, pSt_SocksClinet)); @@ -291,7 +291,7 @@ bool CModuleSession_Socks::ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhCli 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_Socks::ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS* penSocks) +bool CModuleSession_Socks::ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penSocks) { Session_IsErrorOccur = false; @@ -332,7 +332,7 @@ bool CModuleSession_Socks::ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, E 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_Socks::ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS enStatus) +bool CModuleSession_Socks::ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus) { Session_IsErrorOccur = false; diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h index a59d1cc..eb3e42d 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h @@ -17,7 +17,7 @@ typedef struct { XCHAR tszClientAddr[128]; //代理客户端地址 XNETHANDLE xhClient; //客户端句柄 - ENUM_PROXY_SESSION_SOCKS_STATUS enProxyStatus; //客户端状态 + ENUM_PROXY_SESSION_CLIENT_STATUS enProxyStatus; //客户端状态 }RFCPROTOCOL_SOCKS5CLIENT, * LPRFCPROTOCOL_SOCKS5CLIENT; @@ -33,8 +33,8 @@ public: bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNETHANDLE *pxhClient); bool ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient); bool ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR *ptszClientAddr); - bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS* penSocks); - bool ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS enStatus); + bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penSocks); + bool ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus); bool ModuleSession_Socks_List(XCHAR*** ppptszClientList, int* pInt_ListCount); private: shared_mutex st_Locker; diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Tunnel/ModuleSession_Tunnel.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Tunnel/ModuleSession_Tunnel.cpp index 718d401..5f6d239 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Tunnel/ModuleSession_Tunnel.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Tunnel/ModuleSession_Tunnel.cpp @@ -88,11 +88,6 @@ bool CModuleSession_Tunnel::ModuleSession_Tunnel_Delete(LPCXSTR lpszClientID) unordered_map::const_iterator stl_MapIterator = stl_MapClient.find(lpszClientID); if (stl_MapIterator != stl_MapClient.end()) { - if (NULL != stl_MapIterator->second->lParam) - { - free(stl_MapIterator->second->lParam); - stl_MapIterator->second->lParam = NULL; - } if (NULL != stl_MapIterator->second->pStl_ListField) { delete stl_MapIterator->second->pStl_ListField; @@ -111,26 +106,26 @@ bool CModuleSession_Tunnel::ModuleSession_Tunnel_Delete(LPCXSTR lpszClientID) 类型:常量字符指针 可空:N 意思:输入要操作的客户端 - 参数.二:lParam + 参数.二:xhClient In/Out:In - 类型:无类型指针 + 类型:句柄 可空:N - 意思:输入要设置的内容 - 参数.三:nLen + 意思:输入要设置的客户端句柄 + 参数.三:lpszClientAddr In/Out:In - 类型:整数型 + 类型:常量字符指针 可空:N - 意思:输入自定义内容大小 + 意思:输入绑定的句柄客户端地址 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_Tunnel::ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, int nLen) +bool CModuleSession_Tunnel::ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr) { Session_IsErrorOccur = false; - if ((NULL == lpszClientID) || (NULL == lParam)) + if ((NULL == lpszClientID) || (NULL == lpszClientAddr)) { Session_IsErrorOccur = true; Session_dwErrorCode = ERROR_MODULE_SESSION_TUNNEL_PARAMENT; @@ -145,30 +140,8 @@ bool CModuleSession_Tunnel::ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, X st_Locker.unlock_shared(); return false; } - if (NULL == stl_MapIterator->second->lParam) - { - stl_MapIterator->second->lParam = malloc(nLen); - if (NULL == stl_MapIterator->second->lParam) - { - Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_TUNNEL_MALLOC; - st_Locker.unlock_shared(); - return false; - } - } - else - { - stl_MapIterator->second->lParam = realloc(stl_MapIterator->second->lParam, nLen); - if (NULL == stl_MapIterator->second->lParam) - { - Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_TUNNEL_MALLOC; - st_Locker.unlock_shared(); - return false; - } - } - stl_MapIterator->second->nCtmLen = nLen; - memcpy(stl_MapIterator->second->lParam, lParam, nLen); + stl_MapIterator->second->xhClient = xhClient; + _tcsxcpy(stl_MapIterator->second->tszClientAddr, lpszClientAddr); st_Locker.unlock_shared(); return true; } @@ -180,26 +153,21 @@ bool CModuleSession_Tunnel::ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, X 类型:常量字符指针 可空:N 意思:输入要操作的客户端 - 参数.二:lParam + 参数.二:pxhClient In/Out:Out - 类型:无类型指针 + 类型:句柄 可空:N 意思:输出获取到的内容 - 参数.三:pInt_Len - In/Out:Out - 类型:整数型指针 - 可空:Y - 意思:输出自定义内容大小 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_Tunnel::ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, XPVOID lParam, int* pInt_Len /* = NULL */) +bool CModuleSession_Tunnel::ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, XNETHANDLE *pxhClient) { Session_IsErrorOccur = false; - if ((NULL == lpszClientID) || (NULL == lParam)) + if ((NULL == lpszClientID) || (NULL == pxhClient)) { Session_IsErrorOccur = true; Session_dwErrorCode = ERROR_MODULE_SESSION_TUNNEL_PARAMENT; @@ -214,67 +182,125 @@ bool CModuleSession_Tunnel::ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, X st_Locker.unlock_shared(); return false; } - //是否设置有值 - if (NULL == stl_MapIterator->second->lParam) - { + *pxhClient = stl_MapIterator->second->xhClient; + st_Locker.unlock_shared(); + + return true; +} +/******************************************************************** +函数名称:ModuleSession_Tunnel_GetAddrForHandle +函数功能:通过句柄获取ID + 参数.一:xhClient + In/Out:In + 类型:句柄 + 可空:N + 意思:输入要获取的客户端句柄 + 参数.二:ptszClientAddr + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出获取的客户端地址 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_Tunnel::ModuleSession_Tunnel_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* ptszClientAddr) +{ + Session_IsErrorOccur = false; + + bool bFound = false; + + st_Locker.lock_shared(); + unordered_map::const_iterator stl_MapIterator = stl_MapClient.begin(); + for (; stl_MapIterator != stl_MapClient.end(); stl_MapIterator++) + { + if (xhClient == stl_MapIterator->second->xhClient) + { + bFound = true; + _tcsxcpy(ptszClientAddr, stl_MapIterator->first.c_str()); + break; + } + } + st_Locker.unlock_shared(); + + if (!bFound) + { Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_TUNNEL_NOTSET; - st_Locker.unlock_shared(); + Session_dwErrorCode = ERROR_MODULE_SESSION_TUNNEL_NOTFOUND; return false; - } - if (NULL != pInt_Len) + } + + return true; +} +/******************************************************************** +函数名称:ModuleSession_Tunnel_SetStatus +函数功能:设置客户端状态 + 参数.一:lpszClientID + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要操作的客户端 + 参数.二:enStatus + In/Out:In + 类型:枚举型 + 可空:N + 意思:输入设置的状态 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleSession_Tunnel::ModuleSession_Tunnel_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus) +{ + Session_IsErrorOccur = false; + + st_Locker.lock_shared(); + auto stl_MapIterator = stl_MapClient.find(lpszClientID); + if (stl_MapIterator == stl_MapClient.end()) { - *pInt_Len = stl_MapIterator->second->nCtmLen; + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_TUNNEL_NOTFOUND; + st_Locker.unlock_shared(); + return false; } - memcpy(lParam, stl_MapIterator->second->lParam, stl_MapIterator->second->nCtmLen); + stl_MapIterator->second->enClientStatus = enStatus; st_Locker.unlock_shared(); return true; } /******************************************************************** -函数名称:ModuleSession_Tunnel_GetList -函数功能:获取所有自定义数据 - 参数.一:xpppMem - In/Out:Out - 类型:三级指针 - 可空:N - 意思:输出获取到的列表 - 参数.二:pInt_Count - In/Out:Out - 类型:整数型指针 +函数名称:ModuleSession_Tunnel_GetStatus +函数功能:获取客户端状态 + 参数.一:lpszClientID + In/Out:In + 类型:常量字符指针 可空:N - 意思:输出列表个数 - 参数.三:nSize + 意思:输入要操作的客户端 + 参数.二:penStatus In/Out:Out - 类型:整数型 + 类型:枚举型 可空:N - 意思:输入每个成员的大小 + 意思:输出客户端的状态 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CModuleSession_Tunnel::ModuleSession_Tunnel_GetList(XPPPMEM xpppMem, int* pInt_Count, int nSize) +bool CModuleSession_Tunnel::ModuleSession_Tunnel_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penStatus) { Session_IsErrorOccur = false; st_Locker.lock_shared(); - - *pInt_Count = stl_MapClient.size(); - BaseLib_Memory_Malloc(xpppMem, *pInt_Count, nSize); - unordered_map::const_iterator stl_MapIterator = stl_MapClient.begin(); - for (int i = 0; stl_MapIterator != stl_MapClient.end(); stl_MapIterator++, i++) + auto stl_MapIterator = stl_MapClient.find(lpszClientID); + if (stl_MapIterator == stl_MapClient.end()) { - //是否设置有值 - if ((NULL != stl_MapIterator->second->lParam) && (stl_MapIterator->second->nCtmLen > 0)) - { - memcpy((*xpppMem)[i], stl_MapIterator->second->lParam, stl_MapIterator->second->nCtmLen); - } - else - { - memset((*xpppMem)[i], '\0', nSize); - } + Session_IsErrorOccur = true; + Session_dwErrorCode = ERROR_MODULE_SESSION_TUNNEL_NOTFOUND; + st_Locker.unlock_shared(); + return false; } + *penStatus = stl_MapIterator->second->enClientStatus; st_Locker.unlock_shared(); return true; diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Tunnel/ModuleSession_Tunnel.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Tunnel/ModuleSession_Tunnel.h index bb5eeaa..b9ef4e7 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Tunnel/ModuleSession_Tunnel.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Tunnel/ModuleSession_Tunnel.h @@ -14,11 +14,12 @@ typedef struct { XCHAR tszMsgBuffer[4096]; //只需要取得头 XCHAR tszClientAddr[128]; + XNETHANDLE xhClient; //客户端句柄 int nHdrLen; //HTTP头大小 int nPosLen; //HTTP当前大小 - int nCtmLen; //自定义内容大小 + + ENUM_PROXY_SESSION_CLIENT_STATUS enClientStatus; list* pStl_ListField; //HTTP字段 - XPVOID lParam; }PROXYTUNNEL_CLIENTINFO,*LPPROXYTUNNEL_CLIENTINFO; @@ -30,9 +31,11 @@ public: public: bool ModuleSession_Tunnel_Create(LPCXSTR lpszClientID); bool ModuleSession_Tunnel_Delete(LPCXSTR lpszClientID); - bool ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, int nLen); - bool ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, XPVOID lParam, int* pInt_Len = NULL); - bool ModuleSession_Tunnel_GetList(XPPPMEM xpppMem, int* pInt_Count, int nSize); + bool ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr); + bool ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, XNETHANDLE *pxhClient); + bool ModuleSession_Tunnel_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* ptszClientAddr); + bool ModuleSession_Tunnel_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penStatus); + bool ModuleSession_Tunnel_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus); bool ModuleSession_Tunnel_Packet(LPCXSTR lpszClientID, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszMSGBuffer, int* pInt_MSGLen); bool ModuleSession_Tunnel_List(XCHAR*** ppptszClientList, int* pInt_ListCount); private: diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def index af3c0c3..d8ef029 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def @@ -24,7 +24,9 @@ EXPORTS ModuleSession_Tunnel_Delete ModuleSession_Tunnel_SetInfo ModuleSession_Tunnel_GetInfo - ModuleSession_Tunnel_GetList + ModuleSession_Tunnel_GetStatus + ModuleSession_Tunnel_SetStatus + ModuleSession_Tunnel_GetAddrForHandle ModuleSession_Tunnel_Packet ModuleSession_Tunnel_List diff --git a/XEngine_Source/XEngine_ModuleSession/pch.cpp b/XEngine_Source/XEngine_ModuleSession/pch.cpp index 31379ed..102b4b5 100644 --- a/XEngine_Source/XEngine_ModuleSession/pch.cpp +++ b/XEngine_Source/XEngine_ModuleSession/pch.cpp @@ -88,11 +88,11 @@ extern "C" bool ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* { return m_Socks.ModuleSession_Socks_GetAddrForHandle(xhClient, ptszClientAddr); } -extern "C" bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS* penSocks) +extern "C" bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penSocks) { return m_Socks.ModuleSession_Socks_GetStatus(lpszClientID, penSocks); } -extern "C" bool ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_SOCKS_STATUS enStatus) +extern "C" bool ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus) { return m_Socks.ModuleSession_Socks_SetStatus(lpszClientID, enStatus); } @@ -111,17 +111,25 @@ extern "C" bool ModuleSession_Tunnel_Delete(LPCXSTR lpszClientID) { return m_Tunnel.ModuleSession_Tunnel_Delete(lpszClientID); } -extern "C" bool ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XPVOID lParam, int nLen) +extern "C" bool ModuleSession_Tunnel_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr) { - return m_Tunnel.ModuleSession_Tunnel_SetInfo(lpszClientID, lParam, nLen); + return m_Tunnel.ModuleSession_Tunnel_SetInfo(lpszClientID, xhClient, lpszClientAddr); } -extern "C" bool ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, XPVOID lParam, int* pInt_Len) +extern "C" bool ModuleSession_Tunnel_GetInfo(LPCXSTR lpszClientID, XNETHANDLE* pxhClient) { - return m_Tunnel.ModuleSession_Tunnel_GetInfo(lpszClientID, lParam, pInt_Len); + return m_Tunnel.ModuleSession_Tunnel_GetInfo(lpszClientID, pxhClient); } -extern "C" bool ModuleSession_Tunnel_GetList(XPPPMEM xpppMem, int* pInt_Count, int nSize) +extern "C" bool ModuleSession_Tunnel_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penStatus) { - return m_Tunnel.ModuleSession_Tunnel_GetList(xpppMem, pInt_Count, nSize); + return m_Tunnel.ModuleSession_Tunnel_GetStatus(lpszClientID, penStatus); +} +extern "C" bool ModuleSession_Tunnel_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus) +{ + return m_Tunnel.ModuleSession_Tunnel_SetStatus(lpszClientID, enStatus); +} +extern "C" bool ModuleSession_Tunnel_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* ptszClientAddr) +{ + return m_Tunnel.ModuleSession_Tunnel_GetAddrForHandle(xhClient, ptszClientAddr); } extern "C" bool ModuleSession_Tunnel_Packet(LPCXSTR lpszClientID, LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszMSGBuffer, int* pInt_MSGLen) { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h index acdf22c..06b4b25 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h @@ -116,7 +116,7 @@ extern XENGINE_SERVICECONFIG st_ServiceConfig; typedef struct { XCHAR tszIPAddr[128]; - ENUM_PROXY_SESSION_SOCKS_STATUS enStatus; + ENUM_PROXY_SESSION_CLIENT_STATUS enStatus; XNETHANDLE xhClient; }PROXYPROTOCOL_CLIENTINFO; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp index a0bae0b..71283d0 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp @@ -182,18 +182,11 @@ void XEngine_Network_Close(LPCXSTR lpszClientAddr, int nIPProto, int nCloseType) SocketOpt_HeartBeat_DeleteAddrEx(xhTunnelHeart, lpszClientAddr); } //释放客户端 - int nListCount = 0; - PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; - ModuleSession_Tunnel_GetList((XPPPMEM)&ppSt_ClientList, &nListCount, sizeof(PROXYPROTOCOL_CLIENTINFO)); - for (int i = 0; i < nListCount; i++) + XNETHANDLE xhClient = 0; + if (ModuleSession_Tunnel_GetInfo(lpszClientAddr, &xhClient)) { - if (0 == _tcsxnicmp(lpszClientAddr, ppSt_ClientList[i]->tszIPAddr, _tcsxlen(lpszClientAddr))) - { - XClient_TCPSelect_DeleteEx(xhTunnelClient, ppSt_ClientList[i]->xhClient); - break; - } + XClient_TCPSelect_DeleteEx(xhTunnelClient, xhClient); } - BaseLib_Memory_Free((XPPPMEM)&ppSt_ClientList, nListCount); ModuleSession_Tunnel_Delete(lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,离开类型;%d"), lpszClientAddr, nCloseType); } diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index 071aa5a..754b410 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -16,7 +16,7 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XCHAR tszMsgBuffer[4096]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - ENUM_PROXY_SESSION_SOCKS_STATUS enSocksStatus; + ENUM_PROXY_SESSION_CLIENT_STATUS enSocksStatus; if (!ModuleSession_Socks_GetStatus(lpszClientAddr, &enSocksStatus)) { SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, lpszClientAddr); @@ -24,7 +24,7 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int return false; } //获取到的状态来处理相对应的事件 - if (ENUM_PROXY_SESSION_SOCKS_STATUS_CREATE == enSocksStatus) + if (ENUM_PROXY_SESSION_CLIENT_CREATE == enSocksStatus) { int nListCount = 0; ENUM_RFCCOMPONENTS_PROXYSOCKS_AUTH enListAuths[6]; @@ -63,11 +63,11 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } ProxyProtocol_SocksCore_HdrPacket(tszMsgBuffer, &nLen, ENUM_RFCCOMPONENTS_PROXYSOCKS_AUTH_ANONYMOUS); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_SOCKS); - //如果是匿名,不会有ENUM_PROXY_SESSION_SOCKS_STATUS_AUTH步骤 - ModuleSession_Socks_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_SOCKS_STATUS_USER); + //如果是匿名,不会有ENUM_PROXY_SESSION_CLIENT_AUTH步骤 + ModuleSession_Socks_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_CLIENT_USER); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("SOCKS客户端:%s,解析验证协议成功,支持的验证类型:%s"), lpszClientAddr, tszAuthBuffer); } - else if (ENUM_PROXY_SESSION_SOCKS_STATUS_AUTH == enSocksStatus) + else if (ENUM_PROXY_SESSION_CLIENT_AUTH == enSocksStatus) { XCHAR tszUserName[XPATH_MAX]; XCHAR tszUserPass[XPATH_MAX]; @@ -90,12 +90,12 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("SOCKS客户端:%s,用户登录验证失败,客户端发送的验证类型不支持"), lpszClientAddr); return false; } - ModuleSession_Socks_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_SOCKS_STATUS_USER); + ModuleSession_Socks_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_CLIENT_USER); ProxyProtocol_SocksCore_HdrPacket(tszMsgBuffer, &nLen, XENGINE_RFCCOMPONENT_PROXY_SOCKS_RESPONSE_SUCCESS); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_SOCKS); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("SOCKS客户端:%s,用户登录验证成功,使用的验证类型:%d,用户名:%s"), lpszClientAddr, enProxyAuth, tszUserName); } - else if (ENUM_PROXY_SESSION_SOCKS_STATUS_USER == enSocksStatus) + else if (ENUM_PROXY_SESSION_CLIENT_USER == enSocksStatus) { int nPort = 0; XNETHANDLE xhClient = 0; @@ -159,7 +159,7 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } } //配置客户端信息 - ModuleSession_Socks_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_SOCKS_STATUS_FORWARD); + ModuleSession_Socks_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_CLIENT_FORWARD); ModuleSession_Socks_SetInfo(lpszClientAddr, xhClient, tszClientAddr); //回复结果 ProxyProtocol_SocksCore_PacketConnect(tszMsgBuffer, &nLen, tszClientAddr, nPort, enIPType, XENGINE_RFCCOMPONENT_PROXY_SOCKS_RESPONSE_SUCCESS); @@ -168,7 +168,7 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } else { - //ENUM_PROXY_SESSION_SOCKS_STATUS_FORWARD 转发 + //ENUM_PROXY_SESSION_CLIENT_FORWARD 转发 XNETHANDLE xhClient = 0; if (ModuleSession_Socks_GetInfo(lpszClientAddr, &xhClient)) { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index a613e7b..b83a5a1 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -12,12 +12,10 @@ *********************************************************************/ bool XEngine_TunnelTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen) { - PROXYPROTOCOL_CLIENTINFO st_ProxyClient; - memset(&st_ProxyClient, '\0', sizeof(PROXYPROTOCOL_CLIENTINFO)); - - ModuleSession_Tunnel_GetInfo(lpszClientAddr, &st_ProxyClient); + ENUM_PROXY_SESSION_CLIENT_STATUS enClientStatus; + ModuleSession_Tunnel_GetStatus(lpszClientAddr, &enClientStatus); //创建成功就只需要转发 - if (ENUM_PROXY_SESSION_SOCKS_STATUS_CREATE == st_ProxyClient.enStatus) + if (ENUM_PROXY_SESSION_CLIENT_CREATE == enClientStatus) { int nLen = 0; int nIPPort = 0; @@ -81,7 +79,8 @@ bool XEngine_TunnelTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in _tcsxcpy(tszConnectAddr, ppszListAddr[0]); //随便选择一个IP地址 BaseLib_Memory_Free((XPPPMEM)&ppszListAddr, nListCount); } - if (!XClient_TCPSelect_InsertEx(xhTunnelClient, &st_ProxyClient.xhClient, tszConnectAddr, nIPPort)) + XNETHANDLE xhClient = 0; + if (!XClient_TCPSelect_InsertEx(xhTunnelClient, &xhClient, tszConnectAddr, nIPPort)) { ProxyProtocol_TunnelCore_Packet(tszMsgBuffer, &nLen, ERROR_XENGINE_PROXY_PROTOCOL_SERVER); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_TUNNEL); @@ -89,9 +88,8 @@ bool XEngine_TunnelTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in return false; } //设置属于 - st_ProxyClient.enStatus = ENUM_PROXY_SESSION_SOCKS_STATUS_FORWARD; - _tcsxcpy(st_ProxyClient.tszIPAddr, lpszClientAddr); - ModuleSession_Tunnel_SetInfo(lpszClientAddr, &st_ProxyClient, sizeof(PROXYPROTOCOL_CLIENTINFO)); + ModuleSession_Tunnel_SetStatus(lpszClientAddr, ENUM_PROXY_SESSION_CLIENT_FORWARD); + ModuleSession_Tunnel_SetInfo(lpszClientAddr, xhClient, tszConnectAddr); //判断是代理还是非代理协议 if (bProxy) { @@ -102,42 +100,43 @@ bool XEngine_TunnelTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in else { //非代理协议直接发送数据,客户端->代理服务->服务器 - XClient_TCPSelect_SendEx(xhTunnelClient, st_ProxyClient.xhClient, lpszMsgBuffer, nMsgLen); + XClient_TCPSelect_SendEx(xhTunnelClient, xhClient, lpszMsgBuffer, nMsgLen); } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,创建隧道代理服务成功,连接到服务器:%s:%d,代理模式:%s"), lpszClientAddr, tszConnectAddr, nIPPort, bProxy ? "代理" : "直连"); } else { - //转发数据 - XClient_TCPSelect_SendEx(xhTunnelClient, st_ProxyClient.xhClient, lpszMsgBuffer, nMsgLen); + XNETHANDLE xhClient = 0; + if (ModuleSession_Tunnel_GetInfo(lpszClientAddr, &xhClient)) + { + //转发数据 + XClient_TCPSelect_SendEx(xhTunnelClient, xhClient, lpszMsgBuffer, nMsgLen); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("Tunnel客户端:%s,转发数据失败,可能与服务器的连接已经关闭,错误:%lX"), lpszClientAddr, ProxyProtocol_GetLastError()); + } } return true; } void XCALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKET hSocket, ENUM_XCLIENT_SOCKET_EVENTS enTCPClientEvents, LPCXSTR lpszMsgBuffer, int nLen, XPVOID lParam) { - int nListCount = 0; - PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; - ModuleSession_Tunnel_GetList((XPPPMEM)&ppSt_ClientList, &nListCount, sizeof(PROXYPROTOCOL_CLIENTINFO)); - for (int i = 0; i < nListCount; i++) + XCHAR tszClientAddr[XPATH_MIN] = {}; + if (ModuleSession_Tunnel_GetAddrForHandle(xhClient, tszClientAddr)) { - if (xhClient == ppSt_ClientList[i]->xhClient) + if (ENUM_XCLIENT_SOCKET_EVENT_RECV == enTCPClientEvents) { - if (ENUM_XCLIENT_SOCKET_EVENT_RECV == enTCPClientEvents) - { - if (!XEngine_Network_Send(ppSt_ClientList[i]->tszIPAddr, lpszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_TUNNEL)) - { - SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, ppSt_ClientList[i]->tszIPAddr); - } - } - else if (ENUM_XCLIENT_SOCKET_EVENT_CLOSE == enTCPClientEvents) + if (!XEngine_Network_Send(tszClientAddr, lpszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_TUNNEL)) { - //退出处理 - SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, ppSt_ClientList[i]->tszIPAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,客户端主动断开"), ppSt_ClientList[i]->tszIPAddr); + SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, tszClientAddr); } - break; + } + else if (ENUM_XCLIENT_SOCKET_EVENT_CLOSE == enTCPClientEvents) + { + //退出处理 + SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, tszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); } } - BaseLib_Memory_Free((XPPPMEM)&ppSt_ClientList, nListCount); } \ No newline at end of file -- Gitee From f7b5d60be899571c45eb2e3862a58ee2e87b3279 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 21 Aug 2025 11:42:22 +0800 Subject: [PATCH 17/24] modify:delete proxy client when not found --- XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp | 3 ++- XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index 754b410..008692c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -176,7 +176,8 @@ bool XEngine_SocksTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("Socks客户端:%s,转发数据失败,可能与服务器的连接已经关闭,错误:%lX"), lpszClientAddr, ProxyProtocol_GetLastError()); + SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, lpszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("Socks客户端:%s,转发数据失败,可能与服务器的连接已经关闭,错误:%lX"), lpszClientAddr, ModuleSession_GetLastError()); } } return true; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index b83a5a1..d9ff69a 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -114,7 +114,8 @@ bool XEngine_TunnelTask_Handle(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("Tunnel客户端:%s,转发数据失败,可能与服务器的连接已经关闭,错误:%lX"), lpszClientAddr, ProxyProtocol_GetLastError()); + SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, lpszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("Tunnel客户端:%s,转发数据失败,可能与服务器的连接已经关闭,错误:%lX"), lpszClientAddr, ModuleSession_GetLastError()); } } return true; -- Gitee From 8065fee7b4b86d1f7d8b730e1609720c29fe8e3f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 21 Aug 2025 13:38:04 +0800 Subject: [PATCH 18/24] delete:repeat code --- .../ModuleSession_Define.h | 19 ------- .../ModuleSession_Socks.cpp | 50 ------------------- .../ModuleSession_Socks/ModuleSession_Socks.h | 1 - .../XEngine_ModuleSession.def | 1 - XEngine_Source/XEngine_ModuleSession/pch.cpp | 4 -- .../XEngine_ServiceApp/XEngine_Network.cpp | 2 +- 6 files changed, 1 insertion(+), 76 deletions(-) diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h index c07d96a..f11be1f 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h @@ -238,25 +238,6 @@ extern "C" bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhC *********************************************************************/ extern "C" bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNETHANDLE* pxhClient); /******************************************************************** -函数名称:ModuleSession_Socks_GetHandleForAddr -函数功能:通过客户端地址获取句柄 - 参数.一:lpszClientAddr - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要获取的客户端地址 - 参数.二:pxhClient - In/Out:Out - 类型:句柄 - 可空:N - 意思:输出句柄 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient); -/******************************************************************** 函数名称:ModuleSession_Socks_GetAddrForHandle 函数功能:通过客户端句柄来获得对应的IP地址 参数.一:pxhClient diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp index a40f95f..76af6f3 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.cpp @@ -174,56 +174,6 @@ bool CModuleSession_Socks::ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNE return true; } /******************************************************************** -函数名称:ModuleSession_Socks_GetHandleForAddr -函数功能:通过客户端地址获取句柄 - 参数.一:lpszClientAddr - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要获取的客户端地址 - 参数.二:pxhClient - In/Out:Out - 类型:句柄 - 可空:N - 意思:输出句柄 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModuleSession_Socks::ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient) -{ - Session_IsErrorOccur = false; - - if ((NULL == lpszClientAddr)) - { - Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_PARAMENT; - return false; - } - bool bFound = false; - - st_Locker.lock_shared(); - for (auto stl_MapIterator = stl_MapClients.begin(); stl_MapIterator != stl_MapClients.end(); stl_MapIterator++) - { - if (0 == _tcsxnicmp(lpszClientAddr, stl_MapIterator->second->tszClientAddr, _tcsxlen(lpszClientAddr))) - { - bFound = true; - *pxhClient = stl_MapIterator->second->xhClient; - break; - } - } - st_Locker.unlock_shared(); - - if (!bFound) - { - Session_IsErrorOccur = true; - Session_dwErrorCode = ERROR_MODULE_SESSION_SOCKS_NOTFOUND; - return false; - } - return true; -} -/******************************************************************** 函数名称:ModuleSession_Socks_GetAddrForHandle 函数功能:通过客户端句柄来获得对应的IP地址 参数.一:pxhClient diff --git a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h index eb3e42d..4868f72 100644 --- a/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h +++ b/XEngine_Source/XEngine_ModuleSession/ModuleSession_Socks/ModuleSession_Socks.h @@ -31,7 +31,6 @@ public: bool ModuleSession_Socks_Delete(LPCXSTR lpszClientID); bool ModuleSession_Socks_SetInfo(LPCXSTR lpszClientID, XNETHANDLE xhClient, LPCXSTR lpszClientAddr); bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNETHANDLE *pxhClient); - bool ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient); bool ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR *ptszClientAddr); bool ModuleSession_Socks_GetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS* penSocks); bool ModuleSession_Socks_SetStatus(LPCXSTR lpszClientID, ENUM_PROXY_SESSION_CLIENT_STATUS enStatus); diff --git a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def index d8ef029..7fdf047 100644 --- a/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def +++ b/XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def @@ -7,7 +7,6 @@ EXPORTS ModuleSession_Socks_Delete ModuleSession_Socks_SetInfo ModuleSession_Socks_GetInfo - ModuleSession_Socks_GetHandleForAddr ModuleSession_Socks_GetAddrForHandle ModuleSession_Socks_GetStatus ModuleSession_Socks_SetStatus diff --git a/XEngine_Source/XEngine_ModuleSession/pch.cpp b/XEngine_Source/XEngine_ModuleSession/pch.cpp index 102b4b5..2b16320 100644 --- a/XEngine_Source/XEngine_ModuleSession/pch.cpp +++ b/XEngine_Source/XEngine_ModuleSession/pch.cpp @@ -80,10 +80,6 @@ extern "C" bool ModuleSession_Socks_GetInfo(LPCXSTR lpszClientID, XNETHANDLE* px { return m_Socks.ModuleSession_Socks_GetInfo(lpszClientID, pxhClient); } -extern "C" bool ModuleSession_Socks_GetHandleForAddr(LPCXSTR lpszClientAddr, XNETHANDLE* pxhClient) -{ - return m_Socks.ModuleSession_Socks_GetHandleForAddr(lpszClientAddr, pxhClient); -} extern "C" bool ModuleSession_Socks_GetAddrForHandle(XNETHANDLE xhClient, XCHAR* ptszClientAddr) { return m_Socks.ModuleSession_Socks_GetAddrForHandle(xhClient, ptszClientAddr); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp index 71283d0..ea2da0c 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp @@ -159,7 +159,7 @@ void XEngine_Network_Close(LPCXSTR lpszClientAddr, int nIPProto, int nCloseType) } //释放客户端 XNETHANDLE xhClient = 0; - if (ModuleSession_Socks_GetHandleForAddr(lpszClientAddr, &xhClient)) + if (ModuleSession_Socks_GetInfo(lpszClientAddr, &xhClient)) { XClient_TCPSelect_DeleteEx(xhSocksClient, xhClient); } -- Gitee From df2413311c7608d34013fc2f90693930592cd71e Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 21 Aug 2025 15:17:08 +0800 Subject: [PATCH 19/24] improved:code and not use code --- XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h | 7 ------- XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp | 2 +- XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp | 2 +- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h index 06b4b25..e961ca0 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h @@ -113,13 +113,6 @@ extern XENGINE_SERVICECONFIG st_ServiceConfig; #define XENGINE_CLIENT_CLOSE_HEARTBEAT 2 #define XENGINE_CLIENT_CLOSE_SERVICE 3 -typedef struct -{ - XCHAR tszIPAddr[128]; - ENUM_PROXY_SESSION_CLIENT_STATUS enStatus; - XNETHANDLE xhClient; -}PROXYPROTOCOL_CLIENTINFO; - //连接库 #ifdef _MSC_BUILD #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib") diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index 008692c..df65453 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -199,7 +199,7 @@ void XCALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKE { //退出处理 SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, tszClientAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Socks客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); + //XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Socks客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); } } } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index d9ff69a..d479ace 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -137,7 +137,7 @@ void XCALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCK { //退出处理 SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, tszClientAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); + //XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); } } } \ No newline at end of file -- Gitee From 0606690930d1a9183a7291c78f3f0ae25fc06fca Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 22 Aug 2025 09:39:48 +0800 Subject: [PATCH 20/24] modify:start parameter are case sensitive --- .../XEngine_ServiceApp/XEngine_Configure.cpp | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp index f6735af..1dcc115 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp @@ -28,57 +28,57 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS for (int i = 0; i < argc; i++) { - if (0 == _tcsxcmp("-h", argv[i])) + if (0 == _tcsxicmp("-h", argv[i])) { XEngine_Configure_Help(); return false; } - else if (0 == _tcsxcmp("-d", argv[i])) + else if (0 == _tcsxicmp("-d", argv[i])) { pSt_Configure->bDeamon = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-ps", argv[i])) + else if (0 == _tcsxicmp("-ps", argv[i])) { st_ServiceConfig.nSocksPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-pt", argv[i])) + else if (0 == _tcsxicmp("-pt", argv[i])) { st_ServiceConfig.nTunnelPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-pf", argv[i])) + else if (0 == _tcsxicmp("-pf", argv[i])) { st_ServiceConfig.nForwardPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-pp", argv[i])) + else if (0 == _tcsxicmp("-pp", argv[i])) { st_ServiceConfig.nProxyPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-v", argv[i])) + else if (0 == _tcsxicmp("-v", argv[i])) { string m_StrVersion = st_ServiceConfig.st_XVer.pStl_ListVer->front(); printf("Version:%s\n", m_StrVersion.c_str()); return false; } - else if (0 == _tcsxcmp("-t", argv[i])) + else if (0 == _tcsxicmp("-t", argv[i])) { bIsTest = true; } - else if (0 == _tcsxcmp("-lt", argv[i])) + else if (0 == _tcsxicmp("-lt", argv[i])) { pSt_Configure->st_XLog.nLogType = _ttxoi(argv[++i]); } - else if (0 == _tcsxcmp("-l", argv[i])) + else if (0 == _tcsxicmp("-l", argv[i])) { LPCXSTR lpszLogLevel = argv[++i]; - if (0 == _tcsxcmp("debug", lpszLogLevel)) + if (0 == _tcsxicmp("debug", lpszLogLevel)) { pSt_Configure->st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG; } - else if (0 == _tcsxcmp("detail", lpszLogLevel)) + else if (0 == _tcsxicmp("detail", lpszLogLevel)) { pSt_Configure->st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DETAIL; } - else if (0 == _tcsxcmp("info", lpszLogLevel)) + else if (0 == _tcsxicmp("info", lpszLogLevel)) { pSt_Configure->st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO; } -- Gitee From 2fe48f8d9adc9a17532fefd25e7fef4d471e55ed Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 27 Aug 2025 11:07:13 +0800 Subject: [PATCH 21/24] modify:delete request client when not found send to recv proxy client for socks and tunnel --- XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp | 7 +++++++ XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index df65453..59f25fd 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -202,4 +202,11 @@ void XCALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCKE //XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Socks客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); } } + else + { +#if XENGINE_VERSION_KERNEL >= 9 && XENGINE_VERSION_MAIN >= 27 + XClient_TCPSelect_DeletePostEx(xhToken, xhClient); +#endif + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("Socks客户端:未知,句柄:%lld 没有找到映射的客户端"), xhClient); + } } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index d479ace..70aa93e 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -137,7 +137,14 @@ void XCALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCK { //退出处理 SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, tszClientAddr); - //XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); } } + else + { +#if XENGINE_VERSION_KERNEL >= 9 && XENGINE_VERSION_MAIN >= 27 + XClient_TCPSelect_DeletePostEx(xhToken, xhClient); +#endif + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("Tunnel客户端:未知,句柄:%lld 没有找到映射的客户端"), xhClient); + } } \ No newline at end of file -- Gitee From 4f84a277cb8f800f80852ec275d2b1d3520f12aa Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 27 Aug 2025 15:31:16 +0800 Subject: [PATCH 22/24] update:vs copy file --- XEngine_APPClient/VSCopy_x64.bat | 1 + XEngine_APPClient/VSCopy_x86.bat | 1 + 2 files changed, 2 insertions(+) diff --git a/XEngine_APPClient/VSCopy_x64.bat b/XEngine_APPClient/VSCopy_x64.bat index 80d6a7a..9172bd3 100644 --- a/XEngine_APPClient/VSCopy_x64.bat +++ b/XEngine_APPClient/VSCopy_x64.bat @@ -1,4 +1,5 @@ copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" copy /y "%XEngine_Lib64%\XEngine_Client\XClient_Socket.dll" "./" copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_ProxyProtocol.dll" "./" \ No newline at end of file diff --git a/XEngine_APPClient/VSCopy_x86.bat b/XEngine_APPClient/VSCopy_x86.bat index 2c11177..8d4ff0f 100644 --- a/XEngine_APPClient/VSCopy_x86.bat +++ b/XEngine_APPClient/VSCopy_x86.bat @@ -1,4 +1,5 @@ copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Client\XClient_Socket.dll" "./" copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_ProxyProtocol.dll" "./" \ No newline at end of file -- Gitee From b8899024bab2d952aa2313db6f92b8a501e1e402 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 28 Aug 2025 09:44:04 +0800 Subject: [PATCH 23/24] modify:log print for tunnel --- XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index 70aa93e..62775b2 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -137,7 +137,7 @@ void XCALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, XSOCK { //退出处理 SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, tszClientAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); + //XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("Tunnel客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); } } else -- Gitee From 6a273c7659363d9044b193b752bbba30ff58a3a5 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 28 Aug 2025 10:10:00 +0800 Subject: [PATCH 24/24] update:CHANGELOG --- CHANGELOG | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index fcda20d..16f2dd2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,29 @@ +XEngine_ProxyServer V1.14.0.1001 + +增加:rocky linux 10 支持 +更新:匹配最新xengine 版本 +更新:依赖库并且修改依赖库目录 +修改:启动参数不区分大小写了并且增加了日志参数 +修改:始终为socks代理保存变量信息 +修改:删除客户端当转发没有找到 +修改:socks代理设置和获取信息支持 +修改:删除请求客户端当接受数据没有找到转发的对端用户 +优化:代码结构 +修正:客户端插入问题 +删除:重复代码 + +add:ci rocky linux 10 support +update:match xengine +update:depend library and modify depend library direction name +modify:start parameter are not case sensitive and add log parameter +modify:save and value away for socks +modify:delete proxy client when not found +modify:set and get info for socks proxy +modify:delete request client when not found send to recv proxy client for socks and tunnel +improved:code and not use code +fixed:client insert incorrect +delete:repeat code +====================================================================================== XEngine_ProxyServer V1.13.0.1001 增加:帮助模块 -- Gitee