Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 25 additions & 18 deletions openvpn/omi/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
option(CLI_OVPNDCOWIN "Build ovpncli with ovpn-dco-win driver support" OFF)
if (APPLE)

add_executable(omicliagent_macos openvpn.cpp)
add_core_dependencies(omicliagent_macos)
add_json_library(omicliagent_macos)
target_compile_options(omicliagent_macos PRIVATE -Wno-deprecated-declarations)
target_compile_definitions(omicliagent_macos PRIVATE -DOPENVPN_COMMAND_AGENT)
return()
endif()
if (NOT WIN32)
return()
endif()

option(CLI_OVPNDCOWIN "Build ovpncli with ovpn-dco-win driver support" OFF)

add_executable(omicliagent openvpn.cpp)
add_core_dependencies(omicliagent)
add_json_library(omicliagent)
target_compile_definitions(omicliagent PRIVATE -DOPENVPN_COMMAND_AGENT -DOVPNAGENT_DISABLE_PATH_CHECK)

add_executable(omicli openvpn.cpp)
add_core_dependencies(omicli)

if (CLI_OVPNDCOWIN)
target_compile_definitions(omicliagent PRIVATE ENABLE_OVPNDCOWIN)
target_compile_definitions(omicli PRIVATE ENABLE_OVPNDCOWIN)
target_link_libraries(omicliagent "bcrypt.lib")
target_link_libraries(omicli "bcrypt.lib")
return()
endif()
add_executable(omicliagent openvpn.cpp)
add_core_dependencies(omicliagent)
add_json_library(omicliagent)
target_compile_definitions(omicliagent PRIVATE -DOPENVPN_COMMAND_AGENT -DOVPNAGENT_DISABLE_PATH_CHECK)

add_executable(omicli openvpn.cpp)
add_core_dependencies(omicli)

if (CLI_OVPNDCOWIN)
target_compile_definitions(omicliagent PRIVATE ENABLE_OVPNDCOWIN)
target_compile_definitions(omicli PRIVATE ENABLE_OVPNDCOWIN)
target_link_libraries(omicliagent "bcrypt.lib")
target_link_libraries(omicli "bcrypt.lib")
endif ()
11 changes: 11 additions & 0 deletions openvpn/omi/openvpn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ class OMI : public OMICore, public ClientAPI::LogReceiver
opt(std::move(opt_arg)),
reconnect_timer(io_context),
bytecount_timer(io_context),

#ifdef OPENVPN_PLATFORM_WIN
exit_event(io_context),
#endif
log_context(this)
{
signals.reset(new ASIOSignals(io_context));
Expand All @@ -112,6 +115,7 @@ class OMI : public OMICore, public ClientAPI::LogReceiver
management_query_remote = opt.exists("management-query-remote");
exit_event_name = opt.get_optional("exit-event-name", 1, 256);

#ifdef OPENVPN_PLATFORM_WIN
// passed by OpenVPN GUI to trigger exit
if (!exit_event_name.empty())
{
Expand All @@ -122,6 +126,7 @@ class OMI : public OMICore, public ClientAPI::LogReceiver
return;
self->stop(); });
}
#endif

// http-proxy-override
{
Expand Down Expand Up @@ -653,8 +658,10 @@ class OMI : public OMICore, public ClientAPI::LogReceiver
async_stop.stop();

// cancel wait on exit_event
#ifdef OPENVPN_PLATFORM_WIN
if (exit_event.is_open())
exit_event.cancel();
#endif

// stop timers
reconnect_timer.cancel();
Expand Down Expand Up @@ -1001,8 +1008,10 @@ class OMI : public OMICore, public ClientAPI::LogReceiver
// signals
ASIOSignals::Ptr signals;

#ifdef OPENVPN_PLATFORM_WIN
typedef openvpn_io::windows::object_handle AsioEvent;
AsioEvent exit_event;
#endif
std::string exit_event_name;

Log::Context log_context; // should be initialized last
Expand Down Expand Up @@ -1049,7 +1058,9 @@ int run(OptionList opt)

try
{
#ifdef OPENVPN_PLATFORM_WIN
TunWin::NRPT::delete_rules(0); // delete stale NRPT rules
#endif
omi.reset(new OMI(io_context, std::move(opt)));
omi->start();
io_context_run_called = true;
Expand Down