From ef6dfe0469c19578ee0817ea40917be825a0791e Mon Sep 17 00:00:00 2001 From: Knightly <55611098+Knightly1@users.noreply.github.com> Date: Thu, 7 May 2026 17:25:01 -1000 Subject: [PATCH] Load openssl libs from executable directory and update logging (#5078) --- loginserver/CMakeLists.txt | 10 ++++++++++ loginserver/encryption.cpp | 12 ++++++++++++ loginserver/main.cpp | 7 +------ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/loginserver/CMakeLists.txt b/loginserver/CMakeLists.txt index 71466df1b..67d0658c2 100644 --- a/loginserver/CMakeLists.txt +++ b/loginserver/CMakeLists.txt @@ -37,3 +37,13 @@ target_include_directories(loginserver PRIVATE ..) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) set_property(TARGET loginserver PROPERTY FOLDER executables/servers) + +# vcpkg doesn't copy legacy.dll automatically because it is loaded at runtime, not via the import table. +if(WIN32 AND DEFINED VCPKG_INSTALLED_DIR AND DEFINED VCPKG_TARGET_TRIPLET) + add_custom_command(TARGET loginserver POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "$,${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/bin/legacy.dll,${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin/legacy.dll>" + "$/legacy.dll" + VERBATIM + ) +endif() diff --git a/loginserver/encryption.cpp b/loginserver/encryption.cpp index 3fa140768..db8142394 100644 --- a/loginserver/encryption.cpp +++ b/loginserver/encryption.cpp @@ -182,6 +182,18 @@ static OSSL_PROVIDER *s_default_provider = nullptr; bool eqcrypt_init() { #ifdef EQEMU_USE_OPENSSL +#ifdef _WIN32 + // Set OpenSSL default provider search path to the executable directory. + char* exe_path = nullptr; + if (_get_pgmptr(&exe_path) == 0 && exe_path != nullptr && *exe_path != '\0') { + std::string exe_dir{exe_path}; + if (auto sep = exe_dir.find_last_of("\\/"); sep != std::string::npos) { + exe_dir.resize(sep); + OSSL_PROVIDER_set_default_search_path(nullptr, exe_dir.c_str()); + } + } +#endif + if (!s_default_provider) { s_default_provider = OSSL_PROVIDER_load(nullptr, "default"); } diff --git a/loginserver/main.cpp b/loginserver/main.cpp index 9b9766223..106fdc7df 100644 --- a/loginserver/main.cpp +++ b/loginserver/main.cpp @@ -159,6 +159,7 @@ void start_web_server() int main(int argc, char **argv) { RegisterExecutablePlatform(ExePlatformLogin); + EQEmuLogSys::Instance()->LoadLogSettingsDefaults(); set_exception_handler(); if (!eqcrypt_init()) { @@ -166,12 +167,6 @@ int main(int argc, char **argv) return 1; } - LogInfo("Logging System Init"); - - if (argc == 1) { - EQEmuLogSys::Instance()->LoadLogSettingsDefaults(); - } - PathManager::Instance()->Init(); // command handler