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