Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
XEngine
XEngine ProxyServer
提交
cc0bf40a
X
XEngine ProxyServer
项目概览
XEngine
/
XEngine ProxyServer
10 个月 前同步成功
通知
0
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
XEngine ProxyServer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
cc0bf40a
编写于
11月 11, 2022
作者:
xengine-qyt
提交者:
Gitee
11月 11, 2022
浏览文件
操作
浏览文件
下载
差异文件
!7 V1.4.0.1001 Merge
Merge pull request !7 from qyt/develop
上级
4bf03571
4c3a6279
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
58 addition
and
58 deletion
+58
-58
CHANGELOG
CHANGELOG
+10
-0
README.md
README.md
+3
-0
XEngine_APPClient/APPClient_ForwardExample/APPClient_ForwardExample.cpp
...ent/APPClient_ForwardExample/APPClient_ForwardExample.cpp
+1
-1
XEngine_APPClient/APPClient_SocksExample/APPClient_SocksExample.cpp
...PClient/APPClient_SocksExample/APPClient_SocksExample.cpp
+4
-4
XEngine_APPClient/APPClient_TunnelExample/APPClient_TunnelExample.cpp
...lient/APPClient_TunnelExample/APPClient_TunnelExample.cpp
+3
-2
XEngine_Release/XEngine_Config/XEngine_Config.json
XEngine_Release/XEngine_Config/XEngine_Config.json
+5
-4
XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h
XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h
+1
-1
XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp
XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp
+3
-15
XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp
XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp
+3
-2
XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp
XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp
+12
-14
XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp
XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp
+13
-15
未找到文件。
CHANGELOG
浏览文件 @
cc0bf40a
XEngine_ProxyServer V1.4.0.1001
更新:匹配XEngine 7.43版本
修改:使用新的方式来关闭客户端
修正:当客户端关闭某些时候回崩溃的问题
update:match xengine v7.43
modify:use the new way to close the client
fixed:crashed when client is closed
======================================================================================
XEngine_ProxyServer V1.3.1.1001
更新:匹配XEngine 7.38版本
...
...
README.md
浏览文件 @
cc0bf40a
...
...
@@ -81,6 +81,9 @@ make FLAGS=CleanAll 清理编译
3.
提交代码
4.
新建 Pull Request
## 开发计划
使用线程池转发数据而不是一对一的线程
## 关注我们
如果你觉得这个软件对你有帮助,请你给我们一个START吧
...
...
XEngine_APPClient/APPClient_ForwardExample/APPClient_ForwardExample.cpp
浏览文件 @
cc0bf40a
...
...
@@ -150,7 +150,7 @@ int main(int argc, char** argv)
memset
(
tszMsgBuffer
,
'\0'
,
sizeof
(
tszMsgBuffer
));
if
(
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
))
{
printf
(
"%s
\n
"
,
tszMsgBuffer
);
}
...
...
XEngine_APPClient/APPClient_SocksExample/APPClient_SocksExample.cpp
浏览文件 @
cc0bf40a
...
...
@@ -54,7 +54,7 @@ int main(int argc, char** argv)
nMsgLen
=
2048
;
memset
(
tszMsgBuffer
,
'\0'
,
sizeof
(
tszMsgBuffer
));
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
))
{
printf
(
"接受数据失败!
\n
"
);
return
0
;
...
...
@@ -72,7 +72,7 @@ int main(int argc, char** argv)
nMsgLen
=
2048
;
memset
(
tszMsgBuffer
,
'\0'
,
sizeof
(
tszMsgBuffer
));
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
))
{
printf
(
"接受数据失败!
\n
"
);
return
0
;
...
...
@@ -94,7 +94,7 @@ int main(int argc, char** argv)
}
nMsgLen
=
2048
;
memset
(
tszMsgBuffer
,
'\0'
,
sizeof
(
tszMsgBuffer
));
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
))
{
printf
(
"接受数据失败!
\n
"
);
return
0
;
...
...
@@ -112,7 +112,7 @@ int main(int argc, char** argv)
{
nMsgLen
=
2048
;
memset
(
tszMsgBuffer
,
'\0'
,
sizeof
(
tszMsgBuffer
));
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
))
{
break
;
}
...
...
XEngine_APPClient/APPClient_TunnelExample/APPClient_TunnelExample.cpp
浏览文件 @
cc0bf40a
...
...
@@ -31,6 +31,7 @@ int main(int argc, char** argv)
#endif
SOCKET
m_Socket
;
LPCTSTR
lpszServiceAddr
=
_T
(
"127.0.0.1"
);
if
(
!
XClient_TCPSelect_Create
(
&
m_Socket
,
lpszServiceAddr
,
5401
))
{
printf
(
"连接失败!错误:%lX
\n
"
,
XClient_GetLastError
());
...
...
@@ -50,7 +51,7 @@ int main(int argc, char** argv)
nMsgLen
=
2048
;
memset
(
tszMsgBuffer
,
'\0'
,
sizeof
(
tszMsgBuffer
));
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
))
{
printf
(
"接受数据失败!
\n
"
);
return
0
;
...
...
@@ -68,7 +69,7 @@ int main(int argc, char** argv)
{
nMsgLen
=
2048
;
memset
(
tszMsgBuffer
,
'\0'
,
sizeof
(
tszMsgBuffer
));
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
!
XClient_TCPSelect_RecvMsg
(
m_Socket
,
tszMsgBuffer
,
&
nMsgLen
))
{
break
;
}
...
...
XEngine_Release/XEngine_Config/XEngine_Config.json
浏览文件 @
cc0bf40a
...
...
@@ -12,9 +12,9 @@
},
"XTime"
:
{
"nTimeCheck"
:
3
,
"nSocksTimeOut"
:
0
,
"nTunnelTimeOut"
:
0
,
"nForwardTimeOut"
:
0
"nSocksTimeOut"
:
5
,
"nTunnelTimeOut"
:
5
,
"nForwardTimeOut"
:
5
},
"XLog"
:
{
"MaxSize"
:
1024000
,
...
...
@@ -23,10 +23,11 @@
"tszLogFile"
:
"./XEngine_Log/XEngine_ServiceApp.log"
},
"XAuth"
:
{
"bAuth"
:
2
,
"bAuth"
:
0
,
"tszAuthFile"
:
"./XEngine_Config/UserList.txt"
},
"XVer"
:
[
"1.4.0.1001 Build20221111"
,
"1.3.1.1001 Build20220804"
,
"1.3.0.1001 Build20220617"
,
"1.2.0.1001 Build20220413"
,
...
...
XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h
浏览文件 @
cc0bf40a
...
...
@@ -83,7 +83,7 @@ extern XHANDLE xhTunnelHeart;
extern
XHANDLE
xhForwardSocket
;
extern
XHANDLE
xhForwardHeart
;
extern
XHANDLE
xhForwardPacket
;
extern
X
NET
HANDLE
xhForwardPool
;
extern
XHANDLE
xhForwardPool
;
//配置文件
extern
XENGINE_SERVICECONFIG
st_ServiceConfig
;
...
...
XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp
浏览文件 @
cc0bf40a
...
...
@@ -115,13 +115,7 @@ void XEngine_Network_Close(LPCTSTR lpszClientAddr, int nIPProto, int nCloseType)
SocketOpt_HeartBeat_DeleteAddrEx
(
xhSocksHeart
,
lpszClientAddr
);
NetCore_TCPXCore_CloseForClientEx
(
xhSocksSocket
,
lpszClientAddr
);
}
PROXYPROTOCOL_CLIENTINFO
st_ProxyClient
;
memset
(
&
st_ProxyClient
,
'\0'
,
sizeof
(
PROXYPROTOCOL_CLIENTINFO
));
if
(
ProxyProtocol_SocksCore_GetInfo
(
lpszClientAddr
,
&
st_ProxyClient
))
{
st_ProxyClient
.
bClose
=
TRUE
;
ProxyProtocol_SocksCore_SetInfo
(
lpszClientAddr
,
&
st_ProxyClient
,
sizeof
(
PROXYPROTOCOL_CLIENTINFO
));
}
ProxyProtocol_SocksCore_Delete
(
lpszClientAddr
);
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO
,
_T
(
"SOCKS客户端:%s,离开服务器,离开类型;%d"
),
lpszClientAddr
,
nCloseType
);
}
else
if
(
XENGINE_CLIENT_NETTYPE_TUNNEL
==
nIPProto
)
...
...
@@ -136,16 +130,10 @@ void XEngine_Network_Close(LPCTSTR lpszClientAddr, int nIPProto, int nCloseType)
}
else
{
SocketOpt_HeartBeat_DeleteAddrEx
(
xhTunnelHeart
,
lpszClientAddr
);
NetCore_TCPXCore_CloseForClientEx
(
xhTunnelSocket
,
lpszClientAddr
);
SocketOpt_HeartBeat_DeleteAddrEx
(
xhTunnelHeart
,
lpszClientAddr
);
}
PROXYPROTOCOL_CLIENTINFO
st_ProxyClient
;
memset
(
&
st_ProxyClient
,
'\0'
,
sizeof
(
PROXYPROTOCOL_CLIENTINFO
));
if
(
ProxyProtocol_TunnelCore_GetInfo
(
lpszClientAddr
,
&
st_ProxyClient
))
{
st_ProxyClient
.
bClose
=
TRUE
;
ProxyProtocol_TunnelCore_SetInfo
(
lpszClientAddr
,
&
st_ProxyClient
,
sizeof
(
PROXYPROTOCOL_CLIENTINFO
));
}
ProxyProtocol_TunnelCore_Delete
(
lpszClientAddr
);
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO
,
_T
(
"Tunnel客户端:%s,离开服务器,离开类型;%d"
),
lpszClientAddr
,
nCloseType
);
}
else
if
(
XENGINE_CLIENT_NETTYPE_FORWARD
==
nIPProto
)
...
...
XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp
浏览文件 @
cc0bf40a
...
...
@@ -12,7 +12,7 @@ XHANDLE xhTunnelHeart = NULL;
XHANDLE
xhForwardSocket
=
NULL
;
XHANDLE
xhForwardHeart
=
NULL
;
XHANDLE
xhForwardPacket
=
NULL
;
X
NETHANDLE
xhForwardPool
=
0
;
X
HANDLE
xhForwardPool
=
NULL
;
//配置文件
XENGINE_SERVICECONFIG
st_ServiceConfig
;
...
...
@@ -245,7 +245,8 @@ int main(int argc, char** argv)
ppSt_ListParam
[
i
]
->
lParam
=
pInt_Pos
;
ppSt_ListParam
[
i
]
->
fpCall_ThreadsTask
=
XEngine_Forward_Thread
;
}
if
(
!
ManagePool_Thread_NQCreate
(
&
xhForwardPool
,
&
ppSt_ListParam
,
st_ServiceConfig
.
st_XMax
.
nForwardThread
))
xhForwardPool
=
ManagePool_Thread_NQCreate
(
&
ppSt_ListParam
,
st_ServiceConfig
.
st_XMax
.
nForwardThread
);
if
(
NULL
==
xhForwardPool
)
{
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR
,
_T
(
"启动Forward线程池服务失败,错误:%lX"
),
ManagePool_GetLastError
());
goto
XENGINE_SERVICEAPP_EXIT
;
...
...
XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp
浏览文件 @
cc0bf40a
...
...
@@ -199,28 +199,26 @@ BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
XHTHREAD
CALLBACK
XEngine_SocksTask_Thread
(
LPCTSTR
lpszClientAddr
,
SOCKET
hSocket
)
{
TCHAR
tszMsgBuffer
[
4096
];
TCHAR
tszClientAddr
[
128
];
memset
(
tszClientAddr
,
'\0'
,
sizeof
(
tszClientAddr
));
_tcscpy
(
tszClientAddr
,
lpszClientAddr
);
while
(
1
)
{
int
nMsgLen
=
4096
;
if
(
!
XClient_TCPSelect_RecvMsg
(
hSocket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
!
XClient_TCPSelect_RecvMsg
(
hSocket
,
tszMsgBuffer
,
&
nMsgLen
))
{
break
;
}
XEngine_Network_Send
(
lpszClientAddr
,
tszMsgBuffer
,
nMsgLen
,
XENGINE_CLIENT_NETTYPE_SOCKS
);
}
//退出处理
PROXYPROTOCOL_CLIENTINFO
st_ProxyClient
;
memset
(
&
st_ProxyClient
,
'\0'
,
sizeof
(
PROXYPROTOCOL_CLIENTINFO
));
if
(
ProxyProtocol_SocksCore_GetInfo
(
lpszClientAddr
,
&
st_ProxyClient
))
{
ProxyProtocol_SocksCore_Delete
(
lpszClientAddr
);
//是主动关闭的还是被动触发的
if
(
!
st_ProxyClient
.
bClose
)
if
(
!
XEngine_Network_Send
(
tszClientAddr
,
tszMsgBuffer
,
nMsgLen
,
XENGINE_CLIENT_NETTYPE_SOCKS
))
{
//主动关闭,需要调用
XClient_TCPSelect_Close
(
st_ProxyClient
.
hSocket
);
XEngine_Network_Close
(
lpszClientAddr
,
XENGINE_CLIENT_NETTYPE_SOCKS
,
XENGINE_CLIENT_CLOSE_SERVICE
);
break
;
}
}
//退出处理
XClient_TCPSelect_Close
(
hSocket
);
SocketOpt_HeartBeat_ForceOutAddrEx
(
xhSocksHeart
,
tszClientAddr
);
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO
,
_T
(
"Socks客户端:%s,离开服务器,客户端主动断开"
),
tszClientAddr
);
return
0
;
}
\ No newline at end of file
XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp
浏览文件 @
cc0bf40a
...
...
@@ -120,7 +120,7 @@ BOOL XEngine_TunnelTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
//非代理协议直接发送数据
XClient_TCPSelect_SendMsg
(
st_ProxyClient
.
hSocket
,
lpszMsgBuffer
,
nMsgLen
);
}
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO
,
_T
(
"Tunnel客户端:%s,创建隧道代理服务成功,连接到服务器:%s:%d
"
),
lpszClientAddr
,
tszConnectAddr
,
nIPPort
);
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO
,
_T
(
"Tunnel客户端:%s,创建隧道代理服务成功,连接到服务器:%s:%d
,代理模式:%s"
),
lpszClientAddr
,
tszConnectAddr
,
nIPPort
,
bProxy
?
"代理"
:
"直连"
);
}
else
{
...
...
@@ -132,28 +132,26 @@ BOOL XEngine_TunnelTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
XHTHREAD
CALLBACK
XEngine_TunnelTask_Thread
(
LPCTSTR
lpszClientAddr
,
SOCKET
hSocket
)
{
TCHAR
tszMsgBuffer
[
4096
];
TCHAR
tszClientAddr
[
128
];
memset
(
tszClientAddr
,
'\0'
,
sizeof
(
tszClientAddr
));
_tcscpy
(
tszClientAddr
,
lpszClientAddr
);
while
(
1
)
{
int
nMsgLen
=
4096
;
if
(
!
XClient_TCPSelect_RecvMsg
(
hSocket
,
tszMsgBuffer
,
&
nMsgLen
,
FALSE
))
if
(
!
XClient_TCPSelect_RecvMsg
(
hSocket
,
tszMsgBuffer
,
&
nMsgLen
))
{
break
;
}
XEngine_Network_Send
(
lpszClientAddr
,
tszMsgBuffer
,
nMsgLen
,
XENGINE_CLIENT_NETTYPE_TUNNEL
);
}
//退出处理
PROXYPROTOCOL_CLIENTINFO
st_ProxyClient
;
memset
(
&
st_ProxyClient
,
'\0'
,
sizeof
(
PROXYPROTOCOL_CLIENTINFO
));
if
(
ProxyProtocol_TunnelCore_GetInfo
(
lpszClientAddr
,
&
st_ProxyClient
))
{
ProxyProtocol_TunnelCore_Delete
(
lpszClientAddr
);
//是主动关闭的还是被动触发的
if
(
!
st_ProxyClient
.
bClose
)
if
(
!
XEngine_Network_Send
(
tszClientAddr
,
tszMsgBuffer
,
nMsgLen
,
XENGINE_CLIENT_NETTYPE_TUNNEL
))
{
//主动关闭,需要调用
XClient_TCPSelect_Close
(
hSocket
);
XEngine_Network_Close
(
lpszClientAddr
,
XENGINE_CLIENT_NETTYPE_TUNNEL
,
XENGINE_CLIENT_CLOSE_SERVICE
);
break
;
}
}
//退出处理
XClient_TCPSelect_Close
(
hSocket
);
SocketOpt_HeartBeat_ForceOutAddrEx
(
xhTunnelHeart
,
tszClientAddr
);
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO
,
_T
(
"Tunnel客户端:%s,离开服务器,客户端主动断开"
),
tszClientAddr
);
return
0
;
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录