Skip to content

Commit ffc60a7

Browse files
committed
added:module help
added:proxy forward dest list support
1 parent 7463d6b commit ffc60a7

24 files changed

+782
-26
lines changed

XEngine_Release/XEngine_Config/XEngine_Config.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@
3131
"tszServiceName":"XEngine_ProxyServer"
3232
},
3333
"XProxy": {
34-
"tszDefaultAddr": "10.0.4.69:5403",
34+
"nRuleMode": 0,
35+
"tszDestIPAddr": [
36+
"10.0.4.69:5403",
37+
"10.0.4.69:5404"
38+
],
3539
"tszRuleIPAddr": [
3640
"10.0.0.1-10.0.4.69:5403",
37-
"5000-10.0.4.69:5403"
41+
"10.0.0.2-10.0.4.69:5403"
3842
]
3943
}
4044
}

XEngine_Source/XEngine.sln

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngi
3838
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}
3939
EndProjectSection
4040
EndProject
41+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModuleHelp", "XEngine_ModuleHelp\XEngine_ModuleHelp.vcxproj", "{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}"
42+
EndProject
4143
Global
4244
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4345
Debug|ARM64 = Debug|ARM64
@@ -120,6 +122,18 @@ Global
120122
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x64.Build.0 = Release|x64
121123
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.ActiveCfg = Release|Win32
122124
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89}.Release|x86.Build.0 = Release|Win32
125+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.ActiveCfg = Debug|x64
126+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|ARM64.Build.0 = Debug|x64
127+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.ActiveCfg = Debug|x64
128+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x64.Build.0 = Debug|x64
129+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.ActiveCfg = Debug|Win32
130+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Debug|x86.Build.0 = Debug|Win32
131+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.ActiveCfg = Release|x64
132+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|ARM64.Build.0 = Release|x64
133+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.ActiveCfg = Release|x64
134+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x64.Build.0 = Release|x64
135+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.ActiveCfg = Release|Win32
136+
{7A864141-B878-4A5E-B2A1-D5BB4CF58FCB}.Release|x86.Build.0 = Release|Win32
123137
EndGlobalSection
124138
GlobalSection(SolutionProperties) = preSolution
125139
HideSolutionNode = FALSE

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ typedef struct tag_XEngine_ServiceConfig
5252
}st_XReport;
5353
struct
5454
{
55-
XCHAR tszDefaultAddr[128];
55+
int nRuleMode; //模式
56+
std::list<xstring>* pStl_ListDestAddr;
5657
std::list<xstring>* pStl_ListRuleAddr;
5758
}st_XProxy;
5859
struct

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,17 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
145145
return false;
146146
}
147147
Json::Value st_JsonXProxy = st_JsonRoot["XProxy"];
148-
149148
pSt_ServerConfig->st_XProxy.pStl_ListRuleAddr = new list<xstring>;
150-
_tcsxcpy(pSt_ServerConfig->st_XProxy.tszDefaultAddr, st_JsonXProxy["tszDefaultAddr"].asCString());
149+
pSt_ServerConfig->st_XProxy.pStl_ListDestAddr = new list<xstring>;
150+
151+
pSt_ServerConfig->st_XProxy.nRuleMode = st_JsonXProxy["nRuleMode"].asInt();
152+
if (!st_JsonXProxy["tszDestIPAddr"].isNull())
153+
{
154+
for (unsigned int i = 0; i < st_JsonXProxy["tszDestIPAddr"].size(); i++)
155+
{
156+
pSt_ServerConfig->st_XProxy.pStl_ListDestAddr->push_back(st_JsonXProxy["tszDestIPAddr"][i].asCString());
157+
}
158+
}
151159
if (!st_JsonXProxy["tszRuleIPAddr"].isNull())
152160
{
153161
for (unsigned int i = 0; i < st_JsonXProxy["tszRuleIPAddr"].size(); i++)
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
CC = g++ -Wall -std=c++20 -fPIC
2+
PLATVER =
3+
FILEEXT =
4+
LIBFLAG =
5+
LOADHDR = -I ./ -I ../XEngine_ThirdPart/jsoncpp
6+
LOADSO =
7+
LIB = -lXEngine_BaseLib -lXEngine_Algorithm
8+
LIBEX =
9+
OBJECTS = ModuleHelp_APIHelp.o pch.o
10+
11+
ifeq ($(RELEASE),1)
12+
FLAGS = -c -D _RELEASE
13+
DEBUG = -O2
14+
else
15+
ifeq ($(PLATFORM),mac)
16+
FLAGS = -c
17+
DEBUG = -g -D _DEBUG
18+
else
19+
FLAGS = -c -lc_p
20+
DEBUG = -g -pg -D _DEBUG
21+
endif
22+
endif
23+
24+
ifeq ($(UNICODE),1)
25+
override UNICODE := -D __UNICODE__
26+
else
27+
override UNICODE := -D __ANSI__
28+
endif
29+
30+
ifeq ($(PLATFORM),linux)
31+
ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release))
32+
PLATVER = -D __CENTOS__
33+
else
34+
PLATVER = -D __UBUNTU__
35+
endif
36+
FILEEXT = so
37+
LIBFLAG = -shared
38+
LIBEX = -lpthread -lrt -ldl
39+
LOADBIN = -Wl,-rpath=./,--disable-new-dtags
40+
else ifeq ($(PLATFORM),mac)
41+
CC += -Wno-deprecated-declarations
42+
PLATVER = -D __MACOS__
43+
FILEEXT = dylib
44+
LIBFLAG = -dynamiclib
45+
LIBEX = -lpthread -ldl
46+
LOADBIN = -Wl,-rpath,@loader_path/./
47+
endif
48+
49+
50+
all:$(OBJECTS)
51+
$(CC) $(DEBUG) $(OBJECTS) -o libXEngine_ModuleHelp.$(FILEEXT) $(LIBFLAG) $(LIB) $(LIBEX) $(LOADSO) $(LOADBIN)
52+
53+
ModuleHelp_APIHelp.o:./ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp
54+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleHelp_APIHelp/ModuleHelp_APIHelp.cpp
55+
56+
pch.o:./pch.cpp
57+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./pch.cpp
58+
59+
60+
InstallAll:InstallSo
61+
InstallSo:./libXEngine_ModuleHelp.$(FILEEXT)
62+
cp ./libXEngine_ModuleHelp.$(FILEEXT) ../../XEngine_Release/libXEngine_ModuleHelp.$(FILEEXT)
63+
64+
65+
CleanAll:CleanObj CleanMk
66+
CleanObj:
67+
rm *.o
68+
CleanMk:
69+
rm *.$(FILEEXT)
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#include "pch.h"
2+
#include "ModuleHelp_APIHelp.h"
3+
/********************************************************************
4+
// Created: 2025/05/14 15:11:37
5+
// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_APIHelp\ModuleHelp_APIHelp.cpp
6+
// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_APIHelp
7+
// File Base: ModuleHelp_APIHelp
8+
// File Ext: cpp
9+
// Project: XEngine
10+
// Author: qyt
11+
// Purpose: 帮助函数
12+
// History:
13+
*********************************************************************/
14+
CModuleHelp_APIHelp::CModuleHelp_APIHelp()
15+
{
16+
17+
}
18+
CModuleHelp_APIHelp::~CModuleHelp_APIHelp()
19+
{
20+
21+
}
22+
//////////////////////////////////////////////////////////////////////////
23+
// 公用函数
24+
//////////////////////////////////////////////////////////////////////////
25+
/********************************************************************
26+
函数名称:ModuleSession_Forward_Insert
27+
函数功能:插入一条记录到会话中
28+
参数.一:lpszAddr
29+
In/Out:In
30+
类型:常量字符指针
31+
可空:N
32+
意思:输入要插入的客户端
33+
参数.二:pSt_UserAuth
34+
In/Out:In
35+
类型:数据结构指针
36+
可空:N
37+
意思:输入要保存的客户端附加数据
38+
返回值
39+
类型:逻辑型
40+
意思:是否成功
41+
备注:
42+
*********************************************************************/
43+
bool CModuleHelp_APIHelp::ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount)
44+
{
45+
APIHelp_IsErrorOccur = false;
46+
47+
ModuleHelp_APIHelp_QSort(pppSt_IPCount, nIPCount, sizeof(SESSION_IPCONUT));
48+
for (int i = 0; i < nIPCount; i++)
49+
{
50+
51+
}
52+
return true;
53+
}
54+
/********************************************************************
55+
函数名称:ModuleHelp_APIHelp_QSort
56+
函数功能:快速排序算法
57+
参数.一:lPBase
58+
In/Out:In/Out
59+
类型:五类型指针
60+
可空:N
61+
意思:输入:要排序的结构,输出:排序好的
62+
参数.二:nNumber
63+
In/Out:In
64+
类型:整数型
65+
可空:N
66+
意思:输入要排序的个数
67+
参数.三:nSize
68+
In/Out:In
69+
类型:整数型
70+
可空:N
71+
意思:输入要排序的结构大小
72+
返回值
73+
类型:逻辑型
74+
意思:是否排序成功
75+
备注:
76+
*********************************************************************/
77+
bool CModuleHelp_APIHelp::ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize)
78+
{
79+
APIHelp_IsErrorOccur = false;
80+
81+
qsort(lPBase, nNumber, nSize, ModuleHelp_APIHelp_QSortCmp);
82+
83+
return true;
84+
}
85+
//////////////////////////////////////////////////////////////////////////
86+
// 保护函数
87+
//////////////////////////////////////////////////////////////////////////
88+
int CModuleHelp_APIHelp::ModuleHelp_APIHelp_QSortCmp(const void* lParam, const void* WParam)
89+
{
90+
int nAValue = *(const int*)lParam;
91+
int nBValue = *(const int*)WParam;
92+
93+
return nAValue - nBValue;
94+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#pragma once
2+
/********************************************************************
3+
// Created: 2025/05/14 15:11:29
4+
// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_APIHelp\ModuleHelp_APIHelp.h
5+
// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_APIHelp
6+
// File Base: ModuleHelp_APIHelp
7+
// File Ext: h
8+
// Project: XEngine
9+
// Author: qyt
10+
// Purpose: 帮助函数
11+
// History:
12+
*********************************************************************/
13+
14+
class CModuleHelp_APIHelp
15+
{
16+
public:
17+
CModuleHelp_APIHelp();
18+
~CModuleHelp_APIHelp();
19+
public:
20+
bool ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount);
21+
bool ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize);
22+
private:
23+
static int ModuleHelp_APIHelp_QSortCmp(const void* lParam, const void* WParam);
24+
};
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#pragma once
2+
/********************************************************************
3+
// Created: 2025/05/14 14:29:52
4+
// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp\ModuleHelp_Define.h
5+
// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleHelp
6+
// File Base: ModuleHelp_Define
7+
// File Ext: h
8+
// Project: XEngine
9+
// Author: qyt
10+
// Purpose: 导出定义
11+
// History:
12+
*********************************************************************/
13+
//////////////////////////////////////////////////////////////////////////
14+
// 导出函数
15+
//////////////////////////////////////////////////////////////////////////
16+
extern "C" XLONG ModuleHelp_GetLastError(int* pInt_SysError = NULL);
17+
/************************************************************************/
18+
/* 帮助函数 */
19+
/************************************************************************/
20+
extern "C" bool ModuleHelp_APIHelp_RuleIPSelect(SESSION_IPCONUT*** pppSt_IPCount, int nIPCount);
21+
/********************************************************************
22+
函数名称:ModuleHelp_APIHelp_QSort
23+
函数功能:快速排序算法
24+
参数.一:lPBase
25+
In/Out:In/Out
26+
类型:五类型指针
27+
可空:N
28+
意思:输入:要排序的结构,输出:排序好的
29+
参数.二:nNumber
30+
In/Out:In
31+
类型:整数型
32+
可空:N
33+
意思:输入要排序的个数
34+
参数.三:nSize
35+
In/Out:In
36+
类型:整数型
37+
可空:N
38+
意思:输入要排序的结构大小
39+
返回值
40+
类型:逻辑型
41+
意思:是否排序成功
42+
备注:
43+
*********************************************************************/
44+
extern "C" bool ModuleHelp_APIHelp_QSort(XPVOID lPBase, int nNumber, int nSize);
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#pragma once
2+
/********************************************************************
3+
// Created: 2021/12/29 10:29:54
4+
// File Name: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleAuthorize\ModuleAuth_Error.h
5+
// File Path: D:\XEngine_ProxyServer\XEngine_Source\XEngine_ModuleAuthorize
6+
// File Base: ModuleAuth_Error
7+
// File Ext: h
8+
// Project: XEngine(网络通信引擎)
9+
// Author: qyt
10+
// Purpose: 导出错误
11+
// History:
12+
*********************************************************************/
13+
/************************************************************************/
14+
/* 转发代理服务器错误 */
15+
/************************************************************************/
16+
#define ERROR_MODULE_SESSION_FORWARD_PARAMENT 0xC0001 //参数错误
17+
#define ERROR_MODULE_SESSION_FORWARD_NOTFOUND 0xC0002 //没有找到
18+
#define ERROR_MODULE_SESSION_FORWARD_BIND 0xC0003 //已经绑定
19+
#define ERROR_MODULE_SESSION_FORWARD_NOTFORWARD 0xC0004 //没有转发
20+
#define ERROR_MODULE_SESSION_FORWARD_EXIST 0xC0005 //已经存在
21+
/************************************************************************/
22+
/* SOCKS5服务器错误 */
23+
/************************************************************************/
24+
#define ERROR_MODULE_SESSION_SOCKS_PARAMENT 0xC1001 //参数错误
25+
#define ERROR_MODULE_SESSION_SOCKS_MALLOC 0xC1002 //申请内存失败
26+
#define ERROR_MODULE_SESSION_SOCKS_NOTFOUND 0xC1003 //没有找到
27+
#define ERROR_MODULE_SESSION_SOCKS_VERSION 0xC1004 //协议错误
28+
#define ERROR_MODULE_SESSION_SOCKS_NOTSET 0xC1005 //没有设置客户端数据
29+
/************************************************************************/
30+
/* 隧道代理服务错误 */
31+
/************************************************************************/
32+
#define ERROR_MODULE_SESSION_TUNNEL_PARAMENT 0xC2001 //参数错误
33+
#define ERROR_MODULE_SESSION_TUNNEL_MALLOC 0xC2002 //申请内存失败
34+
#define ERROR_MODULE_SESSION_TUNNEL_NOTFOUND 0xC2003 //没有找到
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 //没有找到
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
LIBRARY
2+
3+
EXPORTS
4+
ModuleHelp_GetLastError
5+
6+
ModuleHelp_APIHelp_RuleIPSelect
7+
ModuleHelp_APIHelp_QSort

0 commit comments

Comments
 (0)