From 5642805b7e2f4f0b253672e82b75b11abd990a5b Mon Sep 17 00:00:00 2001 From: dario Linux Date: Mon, 12 Oct 2020 11:19:55 +0200 Subject: [PATCH] finish unix makefile updates --- .gitmodules | 3 +++ CMakeLists.txt | 43 ++++++++++++++++++++------------- FindOpenSSL.cmake | 2 ++ dependencies/cmake-modules | 1 + src/cpp/Gradido_LoginServer.cpp | 25 +++++++++++-------- src/cpp/MySQL/Connector.cpp | 19 ++++++++++----- unix_parse_proto.sh | 4 +-- 7 files changed, 62 insertions(+), 35 deletions(-) create mode 160000 dependencies/cmake-modules diff --git a/.gitmodules b/.gitmodules index 7500d3d77..96fdb6a84 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "dependencies/poco"] path = dependencies/poco url = https://github.com/pocoproject/poco.git +[submodule "dependencies/cmake-modules"] + path = dependencies/cmake-modules + url = https://github.com/viaduck/cmake-modules.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 1648b666e..39de3c0c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,9 +16,11 @@ include_directories( "dependencies/grpc/third_party/protobuf/src" "src/cpp/proto" ) - +#if(WIN32) +#include_directories("dependencies/mariadb-connector-c/include", "dependencies/mariadb-connector-c/build/include") set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include") +#endif(WIN32) FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h") FILE(GLOB TINF "dependencies/tinf/src/*.c" "dependencies/tinf/src/*.h") @@ -85,10 +87,15 @@ conan_basic_setup() add_executable(Gradido_LoginServer ${LOCAL_SRCS}) - +set(CLIENT_PLUGIN_DIALOG OFF) +set(CLIENT_PLUGIN_client_ed25519 OFF) +set(CLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD OFF) +set(CLIENT_PLUGIN_REMOTE_IO OFF) +set(WITH_SSL OFF) +add_subdirectory("dependencies/mariadb-connector-c") set(DEP_PATH "dependencies") -set(MARIADB_CONNECTOR_PATH "${DEP_PATH}/mariadb-connector-c/build/libmariadb") +#set(MARIADB_CONNECTOR_PATH "${DEP_PATH}/mariadb-connector-c/build/libmariadb") set(GRPC_PATH "${DEP_PATH}/grpc/build") set(GRPC_ABSL_PATH "${GRPC_PATH}/third_party/abseil-cpp/absl/types") @@ -126,8 +133,8 @@ if(WIN32) else (WIN32) - - find_library(MYSQL_LIBRARIES libmariadb.so PATHS ${MARIADB_CONNECTOR_PATH} REQUIRED) + #find_package(MariaDBClient PATHS "dependencies/cmake-modules") + #find_library(MYSQL_LIBRARIES libmariadb.so PATHS ${MARIADB_CONNECTOR_PATH} REQUIRED) set(GRPC_PROTOBUF_DEBUG_PATH "${GRPC_PROTOBUF_PATH}") list(REMOVE_ITEM CONAN_LIBS "ssl") @@ -138,7 +145,7 @@ else (WIN32) endif(WIN32) # load same ssl version like used from poco -find_package(OpenSSL PATHS . NO_DEFAULT_PATH) +#find_package(OpenSSL PATHS "../" NO_DEFAULT_PATH) find_library(CONAN_OPENSSL_SSL ssl PATHS ${CONAN_LIB_DIRS_OPENSSL} REQUIRED NO_DEFAULT_PATH ) find_library(CONAN_OPENSSL_CRYPTO crypto PATHS ${CONAN_LIB_DIRS_OPENSSL} REQUIRED NO_DEFAULT_PATH ) @@ -147,11 +154,9 @@ set(CONAN_OPENSSL_CUSTOM_LIBS ${CONAN_OPENSSL_SSL} ${CONAN_OPENSSL_CRYPTO} ) +include_directories(${CONAN_INCLUDE_DIRS_OPENSSL}) +# build grpc -set(BUILD_TESTING OFF) -set(gRPC_SSL_PROVIDER "package") -add_subdirectory("dependencies/grpc/") -message(STATUS "Using gRPC via add_subdirectory.") if(WIN32) @@ -164,14 +169,16 @@ else(WIN32) set(INSTALL_BINDIR "bin") set(INSTALL_PLUGINDIR "bin") - - include_directories( - ${CONAN_INCLUDE_DIRS_OPENSSL} - ) - + target_link_libraries(Gradido_LoginServer ${CONAN_OPENSSL_CUSTOM_LIBS}) endif(WIN32) +set(BUILD_TESTING OFF) +set(gRPC_SSL_PROVIDER "package") +add_subdirectory("dependencies/grpc/") +set(gRPC_SSL_PROVIDER "package") +message(STATUS "Using gRPC via add_subdirectory.") + set(GRPC_LIBS libprotobuf grpc++_reflection grpc++) target_link_libraries(Gradido_LoginServer ${CONAN_LIBS}) @@ -180,12 +187,13 @@ if(WIN32) TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi) TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS}) else(WIN32) # unix - target_link_libraries(Gradido_LoginServer ${MYSQL_LIBRARIES} ${CONAN_OPENSSL_CUSTOM_LIBS} ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS}) + target_link_libraries(Gradido_LoginServer libmariadb ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS}) endif(WIN32) # install if(UNIX) install(TARGETS Gradido_LoginServer RUNTIME DESTINATION /usr/local/bin) +#install(LIBRARYS DESTINATION /usr/local/lib) #install(FILES lib/libmariadb /usr/local/lib) install(FILES DESTINATION lib COMPONENT libmariadb) install(DIRECTORY src/LOCALE DESTINATION /etc/grd_login/ @@ -206,12 +214,13 @@ target_compile_definitions(Gradido_LoginServer_Test PUBLIC "_TEST_BUILD") target_link_libraries(Gradido_LoginServer_Test ${CONAN_LIBS} ) + if(WIN32) TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test optimized ${MYSQL_LIBRARIES} Shlwapi) TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi) TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS}) else(WIN32) - target_link_libraries(Gradido_LoginServer_Test ${MYSQL_LIBRARIES} ${CONAN_OPENSSL_CUSTOM_LIBS} ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS}) + target_link_libraries(Gradido_LoginServer_Test libmariadb ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS}) endif(WIN32) add_test(NAME main COMMAND Gradido_LoginServer_Test) diff --git a/FindOpenSSL.cmake b/FindOpenSSL.cmake index 4a4fec7df..64fefb4ec 100644 --- a/FindOpenSSL.cmake +++ b/FindOpenSSL.cmake @@ -25,6 +25,8 @@ set(OpenSSL_INCLUDE_DIRS "${CONAN_INCLUDE_DIRS_OPENSSL}") set(OpenSSL_INCLUDE_DIR "${CONAN_INCLUDE_DIRS_OPENSSL}") set(OpenSSL_INCLUDES "${CONAN_INCLUDE_DIRS_OPENSSL}") set(OpenSSL_RES_DIRS "${CONAN_RES_DIRS_OPENSSL}") +set(OPENSSL_ROOT_DIR "${CONAN_OPENSSL_ROOT}") +set(OPENSSL_DIR "${CONAN_OPENSSL_ROOT}") set(OpenSSL_DEFINITIONS ) set(OpenSSL_LINKER_FLAGS_LIST "$<$,SHARED_LIBRARY>:>" diff --git a/dependencies/cmake-modules b/dependencies/cmake-modules new file mode 160000 index 000000000..7304f680b --- /dev/null +++ b/dependencies/cmake-modules @@ -0,0 +1 @@ +Subproject commit 7304f680be32915e772466ebddc5b7d3b453abd9 diff --git a/src/cpp/Gradido_LoginServer.cpp b/src/cpp/Gradido_LoginServer.cpp index cf17a0fba..507212e4b 100644 --- a/src/cpp/Gradido_LoginServer.cpp +++ b/src/cpp/Gradido_LoginServer.cpp @@ -31,7 +31,7 @@ -Gradido_LoginServer::Gradido_LoginServer() +Gradido_LoginServer::Gradido_LoginServer() : _helpRequested(false) { } @@ -147,7 +147,7 @@ int Gradido_LoginServer::main(const std::vector& args) unsigned short port = (unsigned short)config().getInt("HTTPServer.port", 9980); unsigned short json_port = (unsigned short)config().getInt("JSONServer.port", 1201); - + //printf("show mnemonic list: \n"); //printf(ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER].getCompleteWordList().data()); if (!ServerConfig::initServerCrypto(config())) { @@ -156,7 +156,7 @@ int Gradido_LoginServer::main(const std::vector& args) return Application::EXIT_CONFIG; } - // first check time for crypto + // first check time for crypto SecretKeyCryptography test_crypto; Profiler timeUsed; if (test_crypto.createKey("email@google.de", "haz27Newpassword") != SecretKeyCryptography::AUTH_CREATE_ENCRYPTION_KEY_SUCCEED) { @@ -178,13 +178,18 @@ int Gradido_LoginServer::main(const std::vector& args) ServerConfig::g_CPUScheduler = new UniLib::controller::CPUSheduler(worker_count, "Default Worker"); ServerConfig::g_CryptoCPUScheduler = new UniLib::controller::CPUSheduler(2, "Crypto Worker"); + // load up connection configs // register MySQL connector - Poco::Data::MySQL::Connector::registerConnector(); - //Poco::Data::MySQL::Connector::KEY; + try { + Poco::Data::MySQL::Connector::registerConnector(); + } catch(Poco::Exception& ex) { + errorLog.error("[Gradido_LoginServer::main] Poco Exception by register MySQL Connector: %s", ex.displayText()); + return Application::EXIT_CONFIG; + } + auto conn = ConnectionManager::getInstance(); - //conn->setConnection() - //printf("try connect login server mysql db\n"); + conn->setConnectionsFromConfig(config(), CONNECTION_MYSQL_LOGIN_SERVER); //printf("try connect php server mysql \n"); //conn->setConnectionsFromConfig(config(), CONNECTION_MYSQL_PHP_SERVER); @@ -196,10 +201,10 @@ int Gradido_LoginServer::main(const std::vector& args) Poco::Net::initializeSSL(); if(!ServerConfig::initSSLClientContext()) { //printf("[Gradido_LoginServer::%s] error init server SSL Client\n", __FUNCTION__); - errorLog.error("[Gradido_LoginServer::main] error init server SSL Client\n"); + errorLog.error("[Gradido_LoginServer::main] error init server SSL Client"); return Application::EXIT_CONFIG; } - + // schedule email verification resend controller::User::checkIfVerificationEmailsShouldBeResend(ServerConfig::g_CronJobsTimer); controller::User::addMissingEmailHashes(); @@ -211,7 +216,7 @@ int Gradido_LoginServer::main(const std::vector& args) Poco::ThreadPool& pool = Poco::ThreadPool::defaultPool(); Poco::Net::HTTPServer srv(new PageRequestHandlerFactory, svs, new Poco::Net::HTTPServerParams); ServerConfig::g_ServerKeySeed->put(7, 918276611); - + // start the HTTPServer srv.start(); diff --git a/src/cpp/MySQL/Connector.cpp b/src/cpp/MySQL/Connector.cpp index dc170cacb..5b35ded21 100644 --- a/src/cpp/MySQL/Connector.cpp +++ b/src/cpp/MySQL/Connector.cpp @@ -48,18 +48,25 @@ const std::string& Connector::name() const Poco::AutoPtr Connector::createSession(const std::string& connectionString, std::size_t timeout) { - return Poco::AutoPtr(new SessionImpl(connectionString, timeout)); + return Poco::AutoPtr(new SessionImpl(connectionString, timeout)); } void Connector::registerConnector() { - if (mysql_library_init(0, 0, 0) != 0) - { - throw Exception("mysql_library_init error"); - } - ServerConfig::g_ServerKeySeed->put(4, DRRandom::r64()); + printf("function pointer address: %d\n", mysql_library_init); + try { + if (mysql_library_init(0, nullptr, nullptr) != 0) + { + throw Exception("mysql_library_init error"); + } + } catch(std::exception &ex) { + printf("mysql exception: \n"); + } + printf("after exception\n"); + ServerConfig::g_ServerKeySeed->put(4, DRRandom::r64()); + printf("instance add new\n"); Poco::Data::SessionFactory::instance().add(new Connector()); } diff --git a/unix_parse_proto.sh b/unix_parse_proto.sh index 3727cc985..43fdc3a14 100755 --- a/unix_parse_proto.sh +++ b/unix_parse_proto.sh @@ -5,8 +5,8 @@ fi if [ ! -d "./src/cpp/proto/gradido" ] ; then mkdir ./src/cpp/proto/gradido fi -PROTOC_PATH=./dependencies/grpc/build/third_party/protobuf -CPP_PLUGIN_PATH=./dependencies/grpc/build +PROTOC_PATH=./build/bin +CPP_PLUGIN_PATH=./build/bin $PROTOC_PATH/protoc --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto if [ ! -d "./src/cpp/proto/hedera" ] ; then