Skip to content

Commit f13af2a

Browse files
committed
added:full proxy forward support
1 parent 9774ea5 commit f13af2a

File tree

16 files changed

+495
-20
lines changed

16 files changed

+495
-20
lines changed

XEngine_Release/XEngine_Config/XEngine_Config.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"nSocksPort": 5400,
55
"nTunnelPort": 5401,
66
"nForwardPort": 5402,
7+
"nProxyPort": 5403,
78
"XMax": {
89
"nMaxClient": 10000,
910
"nMaxQueue": 10000,
@@ -30,8 +31,6 @@
3031
},
3132
"XProxy": {
3233
"bEnable": false,
33-
"nSrcPort": 5410,
34-
"nDstPort": 5411,
35-
"tszDstIPAddr": "10.0.1.89"
34+
"tszIPAddr": "10.0.1.89:5411"
3635
}
3736
}

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ typedef struct tag_XEngine_ServiceConfig
2020
int nSocksPort; //Socks端口,<=0不启用
2121
int nTunnelPort; //Tunnel服务端口
2222
int nForwardPort; //数据转发端口
23+
int nProxyPort; //全代理转发
2324
struct
2425
{
2526
int nMaxClient; //最大客户端个数
@@ -50,9 +51,7 @@ typedef struct tag_XEngine_ServiceConfig
5051
}st_XReport;
5152
struct
5253
{
53-
XCHAR tszDstIPAddr[128];
54-
int nSrcPort;
55-
int nDstPort;
54+
XCHAR tszIPAddr[128];
5655
bool bEnable;
5756
}st_XProxy;
5857
struct

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
8686
pSt_ServerConfig->nSocksPort = st_JsonRoot["nSocksPort"].asInt();
8787
pSt_ServerConfig->nTunnelPort = st_JsonRoot["nTunnelPort"].asInt();
8888
pSt_ServerConfig->nForwardPort = st_JsonRoot["nForwardPort"].asInt();
89+
pSt_ServerConfig->nProxyPort = st_JsonRoot["nProxyPort"].asInt();
8990

9091
if (st_JsonRoot["XMax"].empty() || (4 != st_JsonRoot["XMax"].size()))
9192
{
@@ -136,17 +137,15 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
136137
_tcsxcpy(pSt_ServerConfig->st_XReport.tszAPIUrl, st_JsonXReport["tszAPIUrl"].asCString());
137138
_tcsxcpy(pSt_ServerConfig->st_XReport.tszServiceName, st_JsonXReport["tszServiceName"].asCString());
138139

139-
if (st_JsonRoot["XProxy"].empty() || (4 != st_JsonRoot["XProxy"].size()))
140+
if (st_JsonRoot["XProxy"].empty() || (2 != st_JsonRoot["XProxy"].size()))
140141
{
141142
Config_IsErrorOccur = true;
142143
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XPROXY;
143144
return false;
144145
}
145146
Json::Value st_JsonXProxy = st_JsonRoot["XProxy"];
146147
pSt_ServerConfig->st_XProxy.bEnable = st_JsonXProxy["bEnable"].asBool();
147-
pSt_ServerConfig->st_XProxy.nSrcPort = st_JsonXProxy["nSrcPort"].asInt();
148-
pSt_ServerConfig->st_XProxy.nDstPort = st_JsonXProxy["nDstPort"].asInt();
149-
_tcsxcpy(pSt_ServerConfig->st_XProxy.tszDstIPAddr, st_JsonXProxy["tszDstIPAddr"].asCString());
148+
_tcsxcpy(pSt_ServerConfig->st_XProxy.tszIPAddr, st_JsonXProxy["tszIPAddr"].asCString());
150149

151150
return true;
152151
}

XEngine_Source/XEngine_ModuleSession/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ LOADHDR = -I ./ -I ../XEngine_ThirdPart/jsoncpp
1010
LOADSO =
1111
LIB = -lXEngine_BaseLib -lXEngine_Algorithm
1212
LIBEX =
13-
OBJECTS = ModuleSession_Forward.o ModuleSession_Socks.o ModuleSession_Tunnel.o pch.o
13+
OBJECTS = ModuleSession_Forward.o ModuleSession_Socks.o ModuleSession_Tunnel.o ModuleSession_Proxy.o pch.o
1414

1515
ifeq ($(RELEASE),1)
1616
FLAGS = -c
@@ -63,6 +63,8 @@ ModuleSession_Socks.o:./ModuleSession_Socks/ModuleSession_Socks.cpp
6363
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleSession_Socks/ModuleSession_Socks.cpp
6464
ModuleSession_Tunnel.o:./ModuleSession_Tunnel/ModuleSession_Tunnel.cpp
6565
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleSession_Tunnel/ModuleSession_Tunnel.cpp
66+
ModuleSession_Proxy.o:./ModuleSession_Proxy/ModuleSession_Proxy.cpp
67+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleSession_Proxy/ModuleSession_Proxy.cpp
6668

6769
pch.o:./pch.cpp
6870
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./pch.cpp

XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h

Lines changed: 104 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,4 +473,107 @@ extern "C" bool ModuleSession_Tunnel_Packet(LPCXSTR lpszClientID, LPCXSTR lpszMs
473473
意思:是否成功
474474
备注:
475475
*********************************************************************/
476-
extern "C" bool ModuleSession_Tunnel_List(XCHAR*** ppptszClientList, int* pInt_ListCount);
476+
extern "C" bool ModuleSession_Tunnel_List(XCHAR*** ppptszClientList, int* pInt_ListCount);
477+
/************************************************************************/
478+
/* 全转发代理服务 */
479+
/************************************************************************/
480+
/********************************************************************
481+
函数名称:ModuleSession_Proxy_Insert
482+
函数功能:插入一条记录到会话中
483+
参数.一:lpszSrcIPAddr
484+
In/Out:In
485+
类型:常量字符指针
486+
可空:N
487+
意思:输入要插入的源客户端
488+
参数.二:lpszDstIPAddr
489+
In/Out:In
490+
类型:常量字符指针
491+
可空:N
492+
意思:输入要插入的目标客户端
493+
参数.三:xhClient
494+
In/Out:In
495+
类型:句柄
496+
可空:N
497+
意思:输入客户端句柄
498+
返回值
499+
类型:逻辑型
500+
意思:是否成功
501+
备注:
502+
*********************************************************************/
503+
extern "C" bool ModuleSession_Proxy_Insert(LPCXSTR lpszSrcIPAddr, LPCXSTR lpszDstIPAddr, XNETHANDLE xhClient);
504+
/********************************************************************
505+
函数名称:ModuleSession_Proxy_GetForAddr
506+
函数功能:通过地址获取客户端信息
507+
参数.一:lpszIPAddr
508+
In/Out:In
509+
类型:常量字符指针
510+
可空:N
511+
意思:输入要获取的客户端
512+
参数.二:pSt_ProxyInfo
513+
In/Out:Out
514+
类型:数据结构指针
515+
可空:N
516+
意思:输出获取到的信息
517+
返回值
518+
类型:逻辑型
519+
意思:是否成功
520+
备注:
521+
*********************************************************************/
522+
extern "C" bool ModuleSession_Proxy_GetForAddr(LPCXSTR lpszIPAddr, SESSION_FORWARD* pSt_ProxyInfo);
523+
/********************************************************************
524+
函数名称:ModuleSession_Proxy_GetForToken
525+
函数功能:通过TOKEN获取客户端信息
526+
参数.一:xhToken
527+
In/Out:In
528+
类型:句柄
529+
可空:N
530+
意思:输入要获取的客户端
531+
参数.二:pSt_ProxyInfo
532+
In/Out:Out
533+
类型:数据结构指针
534+
可空:N
535+
意思:输出获取到的信息
536+
返回值
537+
类型:逻辑型
538+
意思:是否成功
539+
备注:
540+
*********************************************************************/
541+
extern "C" bool ModuleSession_Proxy_GetForToken(XNETHANDLE xhToken, SESSION_FORWARD* pSt_ProxyInfo);
542+
/********************************************************************
543+
函数名称:ModuleSession_Proxy_List
544+
函数功能:获取列表
545+
参数.一:pppSt_ListUser
546+
In/Out:Out
547+
类型:三级指针
548+
可空:N
549+
意思:输出列表
550+
参数.二:pInt_Count
551+
In/Out:Out
552+
类型:整数型指针
553+
可空:N
554+
意思:输出列表个数
555+
参数.三:lpszAddr
556+
In/Out:In
557+
类型:常量字符指针
558+
可空:Y
559+
意思:输入忽略地址
560+
返回值
561+
类型:逻辑型
562+
意思:是否成功
563+
备注:
564+
*********************************************************************/
565+
extern "C" bool ModuleSession_Proxy_List(SESSION_FORWARD*** pppSt_ListUser, int* pInt_Count, LPCXSTR lpszAddr = NULL);
566+
/********************************************************************
567+
函数名称:ModuleSession_Proxy_Delete
568+
函数功能:删除用户
569+
参数.一:lpszAddr
570+
In/Out:In
571+
类型:常量字符指针
572+
可空:N
573+
意思:输入要删除的客户端
574+
返回值
575+
类型:逻辑型
576+
意思:是否成功
577+
备注:
578+
*********************************************************************/
579+
extern "C" bool ModuleSession_Proxy_Delete(LPCXSTR lpszIPAddr);

XEngine_Source/XEngine_ModuleSession/ModuleSession_Error.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,9 @@
3232
#define ERROR_MODULE_SESSION_TUNNEL_PARAMENT 0xC2001 //参数错误
3333
#define ERROR_MODULE_SESSION_TUNNEL_MALLOC 0xC2002 //申请内存失败
3434
#define ERROR_MODULE_SESSION_TUNNEL_NOTFOUND 0xC2003 //没有找到
35-
#define ERROR_MODULE_SESSION_TUNNEL_NOTSET 0xC2004 //没有设置内容
35+
#define ERROR_MODULE_SESSION_TUNNEL_NOTSET 0xC2004 //没有设置内容
36+
/************************************************************************/
37+
/* 全转发代理服务错误 */
38+
/************************************************************************/
39+
#define ERROR_MODULE_SESSION_PROXY_PARAMENT 0xC3001 //参数错误
40+
#define ERROR_MODULE_SESSION_PROXY_NOTFOUND 0xC3002 //没有找到

0 commit comments

Comments
 (0)