Skip to content

Commit ef3078b

Browse files
committed
Refactor CMake configuration and enhance VPN client architecture
- Updated CMakeLists.txt to support multiple build options for drivers and cores, including HevSocks5, Tun2Socks, SingBox, LibXray, and V2Ray. - Introduced a modular architecture with separate driver and core configurations. - Enhanced README.md to reflect new architecture and usage examples. - Renamed Android project to 'flutter_vpn_engine' for consistency. - Updated header files to define new enums and structures for driver and core configurations. - Implemented factory methods for creating drivers and cores in the VPN client engine.
1 parent d0e5480 commit ef3078b

28 files changed

Lines changed: 2181 additions & 392 deletions

CMakeLists.txt

Lines changed: 111 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,122 @@
11
cmake_minimum_required(VERSION 3.15)
2-
project(vpnclient_engine)
2+
project(vpnclient_engine VERSION 1.0.0 LANGUAGES CXX C)
33

44
set(CMAKE_CXX_STANDARD 17)
5+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
57

6-
# Подключаем зависимости
7-
find_package(OpenSSL REQUIRED)
8-
find_package(VPNclientXRAY REQUIRED)
9-
find_package(XRay REQUIRED)
10-
find_package(SingBox REQUIRED)
11-
find_package(WireGuard REQUIRED)
8+
# Опции сборки
9+
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
10+
option(ENABLE_HEV_SOCKS5 "Enable HevSocks5 driver" ON)
11+
option(ENABLE_TUN2SOCKS "Enable Tun2Socks driver" ON)
12+
option(ENABLE_SINGBOX "Enable SingBox core" ON)
13+
option(ENABLE_LIBXRAY "Enable LibXray core" ON)
14+
option(ENABLE_V2RAY "Enable V2Ray core" ON)
1215

13-
# Основная библиотека
14-
add_library(vpnclient_engine STATIC
16+
# Исходные файлы
17+
set(CORE_SOURCES
1518
src/core/vpnclient_engine.cpp
16-
src/engines/wireguard_engine.cpp
17-
src/engines/singbox_engine.cpp
18-
src/engines/xray_engine.cpp
19-
src/proxies/tun2socks.cpp
20-
src/proxies/hev_socks5.cpp
21-
src/proxies/approxy.cpp
2219
)
2320

24-
target_include_directories(vpnclient_engine PUBLIC include)
25-
target_link_libraries(vpnclient_engine
26-
OpenSSL::SSL
27-
VPNclientXRAY::VPNclientXRAY
28-
XRay::XRay
29-
SingBox::SingBox
30-
WireGuard::WireGuard
21+
set(DRIVER_SOURCES
22+
src/drivers/driver_base.cpp
3123
)
3224

25+
set(CORE_IMPL_SOURCES
26+
src/cores/core_base.cpp
27+
)
28+
29+
# Драйверы
30+
if(ENABLE_HEV_SOCKS5)
31+
list(APPEND DRIVER_SOURCES src/drivers/hev_socks5_driver.cpp)
32+
add_compile_definitions(ENABLE_HEV_SOCKS5)
33+
endif()
34+
35+
if(ENABLE_TUN2SOCKS)
36+
list(APPEND DRIVER_SOURCES src/drivers/tun2socks_driver.cpp)
37+
add_compile_definitions(ENABLE_TUN2SOCKS)
38+
endif()
39+
40+
# Ядра
41+
if(ENABLE_SINGBOX)
42+
list(APPEND CORE_IMPL_SOURCES src/cores/singbox_core.cpp)
43+
add_compile_definitions(ENABLE_SINGBOX)
44+
endif()
45+
46+
if(ENABLE_LIBXRAY)
47+
list(APPEND CORE_IMPL_SOURCES src/cores/libxray_core.cpp)
48+
add_compile_definitions(ENABLE_LIBXRAY)
49+
endif()
50+
51+
if(ENABLE_V2RAY)
52+
list(APPEND CORE_IMPL_SOURCES src/cores/v2ray_core.cpp)
53+
add_compile_definitions(ENABLE_V2RAY)
54+
endif()
55+
56+
# Создание библиотеки
57+
add_library(${PROJECT_NAME}
58+
${CORE_SOURCES}
59+
${DRIVER_SOURCES}
60+
${CORE_IMPL_SOURCES}
61+
)
62+
63+
# Заголовочные файлы
64+
target_include_directories(${PROJECT_NAME}
65+
PUBLIC
66+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
67+
$<INSTALL_INTERFACE:include>
68+
PRIVATE
69+
${CMAKE_CURRENT_SOURCE_DIR}/src
70+
)
71+
72+
# Внешние зависимости
73+
# TODO: Добавить пути к библиотекам драйверов и ядер
74+
75+
if(ENABLE_HEV_SOCKS5)
76+
# Подключение flutter_vpn_hev5socks
77+
# target_include_directories(${PROJECT_NAME} PRIVATE ../flutter_vpn_hev5socks/include)
78+
# target_link_libraries(${PROJECT_NAME} PRIVATE hev_socks5_tunnel)
79+
endif()
80+
81+
if(ENABLE_TUN2SOCKS)
82+
# Подключение flutter_vpn_tun2socks
83+
# target_include_directories(${PROJECT_NAME} PRIVATE ../flutter_vpn_tun2socks/include)
84+
# target_link_libraries(${PROJECT_NAME} PRIVATE tun2socks)
85+
endif()
86+
87+
if(ENABLE_SINGBOX)
88+
# Подключение flutter_vpn_singbox
89+
# target_include_directories(${PROJECT_NAME} PRIVATE ../flutter_vpn_singbox/include)
90+
# target_link_libraries(${PROJECT_NAME} PRIVATE singbox)
91+
endif()
92+
93+
if(ENABLE_LIBXRAY)
94+
# Подключение fork_vpn_libxray
95+
# target_include_directories(${PROJECT_NAME} PRIVATE ../fork_vpn_libxray/include)
96+
# target_link_libraries(${PROJECT_NAME} PRIVATE xray)
97+
endif()
98+
99+
if(ENABLE_V2RAY)
100+
# Подключение flutter_v2ray
101+
# target_include_directories(${PROJECT_NAME} PRIVATE ../flutter_v2ray/include)
102+
# target_link_libraries(${PROJECT_NAME} PRIVATE v2ray)
103+
endif()
104+
105+
# Установка
106+
install(TARGETS ${PROJECT_NAME}
107+
ARCHIVE DESTINATION lib
108+
LIBRARY DESTINATION lib
109+
RUNTIME DESTINATION bin
110+
)
111+
112+
install(DIRECTORY include/
113+
DESTINATION include
114+
FILES_MATCHING PATTERN "*.h"
115+
)
33116

34-
# Пример
35-
add_executable(test_vpnclient_engine tests/test_vpnclient_engine.cpp)
36-
target_link_libraries(test_vpnclient_engine vpnclient_engine)
117+
# Тесты (опционально)
118+
option(BUILD_TESTS "Build tests" OFF)
119+
if(BUILD_TESTS)
120+
enable_testing()
121+
add_subdirectory(tests)
122+
endif()

0 commit comments

Comments
 (0)