From dbea1afbed48852515750c39800f390e3a7a85ac Mon Sep 17 00:00:00 2001 From: Milahee Date: Sun, 20 Apr 2025 21:54:37 -0700 Subject: [PATCH 1/7] Adding separate ovpncli lib --- test/ovpncli/CMakeLists.txt | 32 ++++++++++++++++++-------------- test/ovpncli/cli.cpp | 27 --------------------------- test/ovpncli/cli.hpp | 4 ++++ test/ovpncli/main.cpp | 30 ++++++++++++++++++++++++++++++ 4 files changed, 52 insertions(+), 41 deletions(-) create mode 100644 test/ovpncli/cli.hpp create mode 100644 test/ovpncli/main.cpp diff --git a/test/ovpncli/CMakeLists.txt b/test/ovpncli/CMakeLists.txt index e1f2d199c..156cbe205 100644 --- a/test/ovpncli/CMakeLists.txt +++ b/test/ovpncli/CMakeLists.txt @@ -15,23 +15,27 @@ add_library( target_compile_definitions(xkey INTERFACE -DENABLE_EXTERNAL_PKI) add_ssl_library(xkey) +add_library(ovpncli cli.cpp) +target_link_libraries(ovpncli xkey) +target_include_directories(ovpncli PRIVATE ${CORE_DIR}) -add_executable(ovpncli cli.cpp) -target_compile_definitions(ovpncli PRIVATE) -target_link_libraries(ovpncli xkey) -add_core_dependencies(ovpncli) +add_executable(ovpnclibin main.cpp) +target_compile_definitions(ovpnclibin PRIVATE) +target_link_libraries(ovpnclibin ovpncli xkey) + +add_core_dependencies(ovpnclibin) if (${CLI_NULLTUN}) - add_executable(ovpnclinull cli.cpp) + add_executable(ovpnclinull main.cpp) add_core_dependencies(ovpnclinull) target_compile_definitions(ovpnclinull PRIVATE -DOPENVPN_FORCE_TUN_NULL) target_link_libraries(ovpnclinull xkey) endif () if (${CLI_KOVPN}) - add_executable(ovpnclikovpn cli.cpp) + add_executable(ovpnclikovpn main.cpp) add_core_dependencies(ovpnclikovpn) target_link_libraries(ovpnclikovpn xkey) @@ -45,17 +49,17 @@ if (${CLI_KOVPN}) endif() if (${CLI_OVPNDCO}) - target_compile_definitions(ovpncli PRIVATE -DENABLE_OVPNDCO ) + target_compile_definitions(ovpnclibin PRIVATE -DENABLE_OVPNDCO ) find_package(PkgConfig) pkg_search_module(LIBNL REQUIRED libnl-genl-3.0) - target_include_directories(ovpncli PRIVATE ${LIBNL_INCLUDE_DIRS}) - target_link_libraries(ovpncli ${LIBNL_LIBRARIES}) + target_include_directories(ovpnclibin PRIVATE ${LIBNL_INCLUDE_DIRS}) + target_link_libraries(ovpnclibin ${LIBNL_LIBRARIES}) endif() if (WIN32) - add_executable(ovpncliagent cli.cpp) + add_executable(ovpncliagent main.cpp) add_core_dependencies(ovpncliagent) add_json_library(ovpncliagent) target_link_libraries(ovpncliagent xkey) @@ -64,14 +68,14 @@ if (WIN32) if (${CLI_OVPNDCOWIN}) target_compile_definitions(ovpncliagent PRIVATE ENABLE_OVPNDCOWIN) - target_compile_definitions(ovpncli PRIVATE ENABLE_OVPNDCOWIN) - target_link_libraries(ovpncli "bcrypt.lib") + target_compile_definitions(ovpnclibin PRIVATE ENABLE_OVPNDCOWIN) + target_link_libraries(ovpnclibin "bcrypt.lib") target_link_libraries(ovpncliagent "bcrypt.lib") endif() endif () if (APPLE) - add_executable(ovpncliagent cli.cpp) + add_executable(ovpncliagent main.cpp) target_link_libraries(xkey) add_core_dependencies(ovpncliagent) add_json_library(ovpncliagent) @@ -79,5 +83,5 @@ if (APPLE) endif () if (${CLI_TUNBUILDER}) - target_compile_definitions(ovpncli PRIVATE USE_TUN_BUILDER) + target_compile_definitions(ovpnclibin PRIVATE USE_TUN_BUILDER) endif () diff --git a/test/ovpncli/cli.cpp b/test/ovpncli/cli.cpp index ae04e2916..b86868dcb 100644 --- a/test/ovpncli/cli.cpp +++ b/test/ovpncli/cli.cpp @@ -1634,30 +1634,3 @@ int openvpn_client(int argc, char *argv[], const std::string *profile_content) return ret; } -#ifndef OPENVPN_OVPNCLI_OMIT_MAIN - -int main(int argc, char *argv[]) -{ - int ret = 0; - -#ifdef OPENVPN_LOG_LOGBASE_H - LogBaseSimple log; -#endif - -#if defined(OPENVPN_PLATFORM_WIN) - SetConsoleOutputCP(CP_UTF8); -#endif - - try - { - ret = openvpn_client(argc, argv, nullptr); - } - catch (const std::exception &e) - { - std::cout << "Main thread exception: " << e.what() << std::endl; - ret = 1; - } - return ret; -} - -#endif diff --git a/test/ovpncli/cli.hpp b/test/ovpncli/cli.hpp new file mode 100644 index 000000000..49ecc49b3 --- /dev/null +++ b/test/ovpncli/cli.hpp @@ -0,0 +1,4 @@ +#pragma once +#include + +int openvpn_client(int argc, char *argv[], const std::string *profile_content); diff --git a/test/ovpncli/main.cpp b/test/ovpncli/main.cpp new file mode 100644 index 000000000..5765ef917 --- /dev/null +++ b/test/ovpncli/main.cpp @@ -0,0 +1,30 @@ +#include "cli.hpp" +#include + +#ifndef OPENVPN_OVPNCLI_OMIT_MAIN + +int main(int argc, char *argv[]) +{ + int ret = 0; + +#ifdef OPENVPN_LOG_LOGBASE_H + LogBaseSimple log; +#endif + +#if defined(OPENVPN_PLATFORM_WIN) + SetConsoleOutputCP(CP_UTF8); +#endif + + try + { + ret = openvpn_client(argc, argv, nullptr); + } + catch (const std::exception &e) + { + std::cout << "Main thread exception: " << e.what() << std::endl; + ret = 1; + } + return ret; +} + +#endif \ No newline at end of file From e3ece9e77b2e01d2a2bf2f766c31ad508e6a372c Mon Sep 17 00:00:00 2001 From: Milahee Date: Sun, 20 Apr 2025 23:08:18 -0700 Subject: [PATCH 2/7] Saving worK --- test/ovpncli/CMakeLists.txt | 26 +++++++++++++------------- test/ovpncli/cli.cpp | 2 ++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/test/ovpncli/CMakeLists.txt b/test/ovpncli/CMakeLists.txt index 156cbe205..793db0724 100644 --- a/test/ovpncli/CMakeLists.txt +++ b/test/ovpncli/CMakeLists.txt @@ -15,17 +15,17 @@ add_library( target_compile_definitions(xkey INTERFACE -DENABLE_EXTERNAL_PKI) add_ssl_library(xkey) -add_library(ovpncli cli.cpp) -target_link_libraries(ovpncli xkey) -target_include_directories(ovpncli PRIVATE ${CORE_DIR}) +# add_library(ovpncliwrapper STATIC cli.cpp) +# target_link_libraries(ovpncliwrapper xkey) +# target_include_directories(ovpncliwrapper PUBLIC ${CORE_DIR}) -add_executable(ovpnclibin main.cpp) -target_compile_definitions(ovpnclibin PRIVATE) -target_link_libraries(ovpnclibin ovpncli xkey) +add_executable(ovpncli main.cpp cli.cpp) +target_compile_definitions(ovpncli PRIVATE) +target_link_libraries(ovpncli xkey) -add_core_dependencies(ovpnclibin) +add_core_dependencies(ovpncli) if (${CLI_NULLTUN}) add_executable(ovpnclinull main.cpp) @@ -49,13 +49,13 @@ if (${CLI_KOVPN}) endif() if (${CLI_OVPNDCO}) - target_compile_definitions(ovpnclibin PRIVATE -DENABLE_OVPNDCO ) + target_compile_definitions(ovpncli PRIVATE -DENABLE_OVPNDCO ) find_package(PkgConfig) pkg_search_module(LIBNL REQUIRED libnl-genl-3.0) - target_include_directories(ovpnclibin PRIVATE ${LIBNL_INCLUDE_DIRS}) - target_link_libraries(ovpnclibin ${LIBNL_LIBRARIES}) + target_include_directories(ovpncli PRIVATE ${LIBNL_INCLUDE_DIRS}) + target_link_libraries(ovpncli ${LIBNL_LIBRARIES}) endif() if (WIN32) @@ -68,8 +68,8 @@ if (WIN32) if (${CLI_OVPNDCOWIN}) target_compile_definitions(ovpncliagent PRIVATE ENABLE_OVPNDCOWIN) - target_compile_definitions(ovpnclibin PRIVATE ENABLE_OVPNDCOWIN) - target_link_libraries(ovpnclibin "bcrypt.lib") + target_compile_definitions(ovpncli PRIVATE ENABLE_OVPNDCOWIN) + target_link_libraries(ovpncli "bcrypt.lib") target_link_libraries(ovpncliagent "bcrypt.lib") endif() endif () @@ -83,5 +83,5 @@ if (APPLE) endif () if (${CLI_TUNBUILDER}) - target_compile_definitions(ovpnclibin PRIVATE USE_TUN_BUILDER) + target_compile_definitions(ovpncli PRIVATE USE_TUN_BUILDER) endif () diff --git a/test/ovpncli/cli.cpp b/test/ovpncli/cli.cpp index b86868dcb..a2669fc63 100644 --- a/test/ovpncli/cli.cpp +++ b/test/ovpncli/cli.cpp @@ -65,6 +65,8 @@ #include #include +#include "cli.hpp" + #ifdef OPENVPN_REMOTE_OVERRIDE #include #endif From dbe59df0ff1d0e2d200c3f245cd74274e54f4b3f Mon Sep 17 00:00:00 2001 From: Milahee Date: Mon, 21 Apr 2025 16:23:19 -0700 Subject: [PATCH 3/7] Saving work --- test/ovpncli/CMakeLists.txt | 29 ++++++++++++++++------------- test/ovpncli/cli.cpp | 2 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/test/ovpncli/CMakeLists.txt b/test/ovpncli/CMakeLists.txt index 793db0724..1ae82918d 100644 --- a/test/ovpncli/CMakeLists.txt +++ b/test/ovpncli/CMakeLists.txt @@ -13,31 +13,34 @@ add_library( ${CORE_DIR}/openvpn/openssl/xkey/xkey_provider.c ) +set(OVPNCLI_SOURCES main.cpp) +set(OVPNCLI_LIBS xkey ovpncliwrapper) + target_compile_definitions(xkey INTERFACE -DENABLE_EXTERNAL_PKI) add_ssl_library(xkey) -# add_library(ovpncliwrapper STATIC cli.cpp) -# target_link_libraries(ovpncliwrapper xkey) -# target_include_directories(ovpncliwrapper PUBLIC ${CORE_DIR}) +add_library(ovpncliwrapper STATIC cli.cpp) +target_compile_definitions(ovpncliwrapper PRIVATE) +add_core_dependencies(ovpncliwrapper) -add_executable(ovpncli main.cpp cli.cpp) +add_executable(ovpncli ${OVPNCLI_SOURCES}) target_compile_definitions(ovpncli PRIVATE) -target_link_libraries(ovpncli xkey) +target_link_libraries(ovpncli ${OVPNCLI_LIBS}) add_core_dependencies(ovpncli) if (${CLI_NULLTUN}) - add_executable(ovpnclinull main.cpp) + add_executable(ovpnclinull ${OVPNCLI_SOURCES}) add_core_dependencies(ovpnclinull) target_compile_definitions(ovpnclinull PRIVATE -DOPENVPN_FORCE_TUN_NULL) - target_link_libraries(ovpnclinull xkey) + target_link_libraries(ovpnclinull ${OVPNCLI_LIBS}) endif () if (${CLI_KOVPN}) - add_executable(ovpnclikovpn main.cpp) + add_executable(ovpnclikovpn ${OVPNCLI_SOURCES}) add_core_dependencies(ovpnclikovpn) - target_link_libraries(ovpnclikovpn xkey) + target_link_libraries(ovpnclikovpn ${OVPNCLI_LIBS}) target_compile_definitions(ovpnclikovpn PRIVATE -DENABLE_KOVPN -DOPENVPN_REMOTE_OVERRIDE -DPRIVATE_TUNNEL_PROXY) @@ -59,10 +62,10 @@ if (${CLI_OVPNDCO}) endif() if (WIN32) - add_executable(ovpncliagent main.cpp) + add_executable(ovpncliagent ${OVPNCLI_SOURCES}) add_core_dependencies(ovpncliagent) add_json_library(ovpncliagent) - target_link_libraries(ovpncliagent xkey) + target_link_libraries(ovpncliagent ${OVPNCLI_LIBS}) target_compile_definitions(ovpncliagent PRIVATE OPENVPN_COMMAND_AGENT OVPNAGENT_DISABLE_PATH_CHECK) @@ -75,8 +78,8 @@ if (WIN32) endif () if (APPLE) - add_executable(ovpncliagent main.cpp) - target_link_libraries(xkey) + add_executable(ovpncliagent ${OVPNCLI_SOURCES}) + target_link_libraries(ovpncliagent ${OVPNCLI_LIBS}) add_core_dependencies(ovpncliagent) add_json_library(ovpncliagent) target_compile_definitions(ovpncliagent PRIVATE -DOPENVPN_COMMAND_AGENT) diff --git a/test/ovpncli/cli.cpp b/test/ovpncli/cli.cpp index a2669fc63..cab9d1b34 100644 --- a/test/ovpncli/cli.cpp +++ b/test/ovpncli/cli.cpp @@ -41,7 +41,7 @@ #endif // don't export core symbols -#define OPENVPN_CORE_API_VISIBILITY_HIDDEN +// #define OPENVPN_CORE_API_VISIBILITY_HIDDEN // use SITNL on Linux by default #if defined(OPENVPN_PLATFORM_LINUX) && !defined(OPENVPN_USE_IPROUTE2) && !defined(OPENVPN_USE_SITNL) From c6bcc1cedff8d760bfff3da13432c5852730cdd5 Mon Sep 17 00:00:00 2001 From: Milahee Date: Mon, 21 Apr 2025 16:35:05 -0700 Subject: [PATCH 4/7] Creating alias --- test/ovpncli/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/ovpncli/CMakeLists.txt b/test/ovpncli/CMakeLists.txt index 1ae82918d..6ee86ad5a 100644 --- a/test/ovpncli/CMakeLists.txt +++ b/test/ovpncli/CMakeLists.txt @@ -16,12 +16,15 @@ add_library( set(OVPNCLI_SOURCES main.cpp) set(OVPNCLI_LIBS xkey ovpncliwrapper) + target_compile_definitions(xkey INTERFACE -DENABLE_EXTERNAL_PKI) add_ssl_library(xkey) add_library(ovpncliwrapper STATIC cli.cpp) target_compile_definitions(ovpncliwrapper PRIVATE) add_core_dependencies(ovpncliwrapper) +add_library(openvpn3::ovpncliwrapper ALIAS ovpncliwrapper) + add_executable(ovpncli ${OVPNCLI_SOURCES}) From 09e86e9614bfb36b0816f1666d555be97730a7b3 Mon Sep 17 00:00:00 2001 From: Milahee Date: Mon, 21 Apr 2025 17:06:27 -0700 Subject: [PATCH 5/7] Adding include dirs --- test/ovpncli/CMakeLists.txt | 13 ++++++++++--- test/ovpncli/{cli.hpp => include/ovpncli.hpp} | 0 test/ovpncli/{ => src}/main.cpp | 2 +- test/ovpncli/{cli.cpp => src/ovpncli.cpp} | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) rename test/ovpncli/{cli.hpp => include/ovpncli.hpp} (100%) rename test/ovpncli/{ => src}/main.cpp (95%) rename test/ovpncli/{cli.cpp => src/ovpncli.cpp} (99%) diff --git a/test/ovpncli/CMakeLists.txt b/test/ovpncli/CMakeLists.txt index 6ee86ad5a..c81608056 100644 --- a/test/ovpncli/CMakeLists.txt +++ b/test/ovpncli/CMakeLists.txt @@ -13,17 +13,24 @@ add_library( ${CORE_DIR}/openvpn/openssl/xkey/xkey_provider.c ) -set(OVPNCLI_SOURCES main.cpp) +set(OVPNCLI_SOURCES src/main.cpp) set(OVPNCLI_LIBS xkey ovpncliwrapper) target_compile_definitions(xkey INTERFACE -DENABLE_EXTERNAL_PKI) add_ssl_library(xkey) -add_library(ovpncliwrapper STATIC cli.cpp) -target_compile_definitions(ovpncliwrapper PRIVATE) +add_library(openvpn_headers INTERFACE) +target_include_directories(openvpn_headers INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + + +add_library(ovpncliwrapper STATIC src/ovpncli.cpp) +target_compile_definitions(ovpncliwrapper PUBLIC) add_core_dependencies(ovpncliwrapper) add_library(openvpn3::ovpncliwrapper ALIAS ovpncliwrapper) +target_link_libraries(ovpncliwrapper openvpn_headers) diff --git a/test/ovpncli/cli.hpp b/test/ovpncli/include/ovpncli.hpp similarity index 100% rename from test/ovpncli/cli.hpp rename to test/ovpncli/include/ovpncli.hpp diff --git a/test/ovpncli/main.cpp b/test/ovpncli/src/main.cpp similarity index 95% rename from test/ovpncli/main.cpp rename to test/ovpncli/src/main.cpp index 5765ef917..bcf4597e1 100644 --- a/test/ovpncli/main.cpp +++ b/test/ovpncli/src/main.cpp @@ -1,4 +1,4 @@ -#include "cli.hpp" +#include "ovpncli.hpp" #include #ifndef OPENVPN_OVPNCLI_OMIT_MAIN diff --git a/test/ovpncli/cli.cpp b/test/ovpncli/src/ovpncli.cpp similarity index 99% rename from test/ovpncli/cli.cpp rename to test/ovpncli/src/ovpncli.cpp index cab9d1b34..dfa15d7af 100644 --- a/test/ovpncli/cli.cpp +++ b/test/ovpncli/src/ovpncli.cpp @@ -65,7 +65,7 @@ #include #include -#include "cli.hpp" +#include "ovpncli.hpp" #ifdef OPENVPN_REMOTE_OVERRIDE #include From 4b457541972e9be839eb58b1cb6b1513ca44a5a2 Mon Sep 17 00:00:00 2001 From: Milahee Date: Sat, 10 May 2025 17:13:57 -0700 Subject: [PATCH 6/7] Single thread --- test/ovpncli/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/ovpncli/CMakeLists.txt b/test/ovpncli/CMakeLists.txt index c81608056..8b1e4ffc7 100644 --- a/test/ovpncli/CMakeLists.txt +++ b/test/ovpncli/CMakeLists.txt @@ -4,6 +4,7 @@ option(CLI_KOVPN "Build ovpncli variant with kovpn kernel module support" OFF) option(CLI_OVPNDCO "Build ovpncli with ovpn-dco kernel module support" OFF) option(CLI_OVPNDCOWIN "Build ovpncli with ovpn-dco-win driver support" OFF) option(CLI_TUNBUILDER "Build ovpncli with tunbuilder interface support" OFF) +option(CLI_SINGLETHREAD "Build ovpncli with single thread support" ON) set(KOVPN_SOURCE "${CORE_DIR}/../kovpn" CACHE PATH "ovpn-dco kernel module source tree") @@ -28,6 +29,9 @@ target_include_directories(openvpn_headers INTERFACE add_library(ovpncliwrapper STATIC src/ovpncli.cpp) target_compile_definitions(ovpncliwrapper PUBLIC) +if (${CLI_SINGLETHREAD}) + target_compile_definitions(ovpncliwrapper PRIVATE -DOPENVPN_SINGLE_THREAD) +endif () add_core_dependencies(ovpncliwrapper) add_library(openvpn3::ovpncliwrapper ALIAS ovpncliwrapper) target_link_libraries(ovpncliwrapper openvpn_headers) From cd376168be89374dbe7605e78fec506b0679be58 Mon Sep 17 00:00:00 2001 From: Milahee Date: Sat, 10 May 2025 17:13:57 -0700 Subject: [PATCH 7/7] Single thread --- test/ovpncli/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ovpncli/CMakeLists.txt b/test/ovpncli/CMakeLists.txt index 8b1e4ffc7..7d50b70f4 100644 --- a/test/ovpncli/CMakeLists.txt +++ b/test/ovpncli/CMakeLists.txt @@ -30,7 +30,7 @@ target_include_directories(openvpn_headers INTERFACE add_library(ovpncliwrapper STATIC src/ovpncli.cpp) target_compile_definitions(ovpncliwrapper PUBLIC) if (${CLI_SINGLETHREAD}) - target_compile_definitions(ovpncliwrapper PRIVATE -DOPENVPN_SINGLE_THREAD) + target_compile_definitions(ovpncliwrapper PRIVATE -DOPENVPN_OVPNCLI_SINGLE_THREAD) endif () add_core_dependencies(ovpncliwrapper) add_library(openvpn3::ovpncliwrapper ALIAS ovpncliwrapper)