From a398d4f9758424f430091cccb1be633ddb42fe28 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Fri, 23 Apr 2021 20:59:11 +0200 Subject: [PATCH 001/122] build without conan --- login_server/CMakeLists.txt | 131 +++++++++------------- login_server/Dockerfile | 4 +- login_server/Dockerfile.debug | 24 +++- login_server/Dockerfiles/build_and_run.sh | 3 +- login_server/README | 2 + login_server/dependencies/poco | 2 +- login_server/unix_parse_proto.sh | 4 +- 7 files changed, 85 insertions(+), 85 deletions(-) diff --git a/login_server/CMakeLists.txt b/login_server/CMakeLists.txt index 4502249e5..4ab4ad2de 100644 --- a/login_server/CMakeLists.txt +++ b/login_server/CMakeLists.txt @@ -6,6 +6,15 @@ SET ( CMAKE_CXX_FLAGS "-std=c++17" ) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +if(WIN32) + set(CMAKE_CXX_FLAGS "/MP /EHsc") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3") + set(CMAKE_CXX_FLAGS_RELEASE "-O3") +else() + set(INSTALL_BINDIR "bin") + set(INSTALL_PLUGINDIR "bin") +endif() + include_directories( "dependencies" "dependencies/tinf/src/" @@ -14,13 +23,21 @@ include_directories( "dependencies/spirit-po/include" "dependencies/grpc/include" "dependencies/grpc/third_party/protobuf/src" + "dependencies/grpc/third_party/googletest/googletest/include" + "dependencies/poco/Crypto/include" + "dependencies/poco/Data/include" + "dependencies/poco/Util/include" + "dependencies/poco/Foundation/include" + "dependencies/poco/JSON/include" + "dependencies/poco/Net/include" + "dependencies/poco/NetSSL_OpenSSL/include" "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) + + + +#set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include") FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h") FILE(GLOB TINF "dependencies/tinf/src/*.c" "dependencies/tinf/src/*.h") @@ -84,12 +101,9 @@ if(MSVC) source_group("Test" FILES ${TEST}) endif() - -include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -conan_basic_setup() - - add_executable(Gradido_LoginServer ${LOCAL_SRCS}) + +############################## config and add mariadb ################################### set(CLIENT_PLUGIN_DIALOG OFF) set(CLIENT_PLUGIN_MYSQL_CLEAR_PASSWORD OFF) set(CLIENT_PLUGIN_REMOTE_IO OFF) @@ -111,6 +125,21 @@ add_subdirectory("dependencies/mariadb-connector-c") set(DEP_PATH "dependencies") set(MARIADB_CONNECTOR_PATH "${DEP_PATH}/mariadb-connector-c/build/libmariadb") +if(WIN32) + find_library(MYSQL_LIBRARIES mariadbclient PATHS "${MARIADB_CONNECTOR_PATH}/Release" REQUIRED) + find_library(COMPILED_MARIADB_CLIENT_DEBUG mariadbclient PATHS "${MARIADB_CONNECTOR_PATH}/Debug" REQUIRED) +endif() + +############################## config and add poco ################################### +add_subdirectory("dependencies/poco") +set(ENABLE_MONGODB OFF) +set(ENABLE_DATA_SQLITE OFF) +set(ENABLE_REDIS OFF) + +set(POCO_LIBS PocoFoundation PocoUtil PocoNet PocoNetSSL PocoData) + +############################## config and add grpc ################################### + set(GRPC_PATH "${DEP_PATH}/grpc/build") set(GRPC_ABSL_PATH "${GRPC_PATH}/third_party/abseil-cpp/absl/types") set(GRPC_CARES_PATH "${GRPC_PATH}/third_party/cares/cares/lib") @@ -118,77 +147,17 @@ set(GRPC_BORING_SSL_PATH "${GRPC_PATH}/third_party/boringssl-with-bazel") set(GRPC_RE2_PATH "${GRPC_PATH}/third_party/re2") set(GRPC_PROTOBUF_PATH "${GRPC_PATH}/third_party/protobuf") - - if(WIN32) - - find_library(MYSQL_LIBRARIES mariadbclient PATHS "${MARIADB_CONNECTOR_PATH}/Release" REQUIRED) - find_library(COMPILED_MARIADB_CLIENT_DEBUG mariadbclient PATHS "${MARIADB_CONNECTOR_PATH}/Debug" REQUIRED) - - find_library(CONAN_OPENSSL_SSL ssleay32 PATHS ${CONAN_LIB_DIRS_OPENSSL} REQUIRED NO_DEFAULT_PATH ) - find_library(CONAN_OPENSSL_CRYPTO libeay32 PATHS ${CONAN_LIB_DIRS_OPENSSL} REQUIRED NO_DEFAULT_PATH ) - set(GRPC_PATH "${GRPC_PATH}/Debug") set(GRPC_ABSL_PATH "${GRPC_ABSL_PATH}/Debug") set(GRPC_CARES_PATH "${GRPC_CARES_PATH}/Debug") set(GRPC_BORING_SSL_PATH "${GRPC_CGRPC_BORING_SSL_PATHARES_PATH}/Debug") set(GRPC_RE2_PATH "${GRPC_RE2_PATH}/Debug") set(GRPC_PROTOBUF_DEBUG_PATH "${GRPC_PROTOBUF_PATH}/Debug") - - - list(REMOVE_ITEM CONAN_LIBS "libeay32.lib") - list(REMOVE_ITEM CONAN_LIBS "ssleay32.lib") - - -else() - #find_package(MariaDBClient PATHS "dependencies/cmake-modules") - #find_library(MYSQL_LIBRARIES libmariadb.so PATHS ${MARIADB_CONNECTOR_PATH} REQUIRED) - 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 ) - set(GRPC_PROTOBUF_DEBUG_PATH "${GRPC_PROTOBUF_PATH}") - - list(REMOVE_ITEM CONAN_LIBS "ssl") - list(REMOVE_ITEM CONAN_LIBS "crypto") - list(REMOVE_ITEM CONAN_LIBS "dl") - -# find_library(MYSQL_LIBRARIES libmariadb.so PATHS ${MARIADB_CONNECTOR_PATH} REQUIRED) - 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 ) - set(GRPC_PROTOBUF_DEBUG_PATH "${GRPC_PROTOBUF_PATH}") - - list(REMOVE_ITEM CONAN_LIBS "ssl") - list(REMOVE_ITEM CONAN_LIBS "crypto") - list(REMOVE_ITEM CONAN_LIBS "dl") - endif() -# load same ssl version like used from poco -#find_package(OpenSSL PATHS "../" NO_DEFAULT_PATH) -set(CONAN_OPENSSL_CUSTOM_LIBS - ${CONAN_OPENSSL_SSL} - ${CONAN_OPENSSL_CRYPTO} -) -include_directories(${CONAN_INCLUDE_DIRS_OPENSSL}) -# build grpc - - - -if(WIN32) - - set(CMAKE_CXX_FLAGS "/MP /EHsc") - #set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3") - #set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -else() - - set(INSTALL_BINDIR "bin") - set(INSTALL_PLUGINDIR "bin") - target_link_libraries(Gradido_LoginServer ${CONAN_OPENSSL_CUSTOM_LIBS}) - -endif() - set(BUILD_TESTING OFF) set(gRPC_SSL_PROVIDER "package") add_subdirectory("dependencies/grpc/") @@ -196,14 +165,19 @@ 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}) + +############################## build login server ################################### +if(UNIX) + set(INSTALL_BINDIR "bin") + set(INSTALL_PLUGINDIR "bin") +endif() +target_link_libraries(Gradido_LoginServer ${GRPC_LIBS} ${POCO_LIBS} sodium) if(WIN32) TARGET_LINK_LIBRARIES(Gradido_LoginServer optimized ${MYSQL_LIBRARIES} Shlwapi) TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi) - TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS}) else() # unix - target_link_libraries(Gradido_LoginServer libmariadb ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS}) + target_link_libraries(Gradido_LoginServer libmariadb) endif() # install @@ -218,25 +192,26 @@ install(DIRECTORY src/LOCALE DESTINATION /etc/grd_login/ endif(UNIX) -enable_testing() + # ---------------------- Test ----------------------------------------- +add_subdirectory("dependencies/grpc/third_party/googletest") +enable_testing() #project(Gradido_LoginServer_Test C CXX) #_TEST_BUILD -#find_package(gtest) + add_executable(Gradido_LoginServer_Test ${LOCAL_SRCS} ${LOCAL_TEST_SRC}) target_compile_definitions(Gradido_LoginServer_Test PUBLIC "_TEST_BUILD") -target_link_libraries(Gradido_LoginServer_Test ${CONAN_LIBS} ) +target_link_libraries(Gradido_LoginServer_Test ${POCO_LIBS} ${GRPC_LIBS} sodium gtest) 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}) + TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${COMPILED_MARIADB_CLIENT_DEBUG} ${PROTOBUF_DEBUG_LIBS} Shlwapi) else() - target_link_libraries(Gradido_LoginServer_Test libmariadb ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS}) + target_link_libraries(Gradido_LoginServer_Test libmariadb ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS}) endif() add_test(NAME main COMMAND Gradido_LoginServer_Test) diff --git a/login_server/Dockerfile b/login_server/Dockerfile index e6c2d6b89..b4a15b3f3 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -7,6 +7,9 @@ ENV DOCKER_WORKDIR="/code" USER root +RUN apt-get update \ + && apt-get -y --no-install-recommends install libsodium-dev libboost-all-dev \ + && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} @@ -22,7 +25,6 @@ RUN chmod +x compile_pot.sh && ./compile_pot.sh RUN mkdir build && \ cd build && \ - conan install .. --build=missing && \ cmake .. && \ make -j$(nproc) protoc grpc_cpp_plugin diff --git a/login_server/Dockerfile.debug b/login_server/Dockerfile.debug index bb65996fb..ae54eb062 100644 --- a/login_server/Dockerfile.debug +++ b/login_server/Dockerfile.debug @@ -1,12 +1,33 @@ +######################################################################################################### +# cmake +######################################################################################################### +FROM gcc:9 as cmake-gcc-9 + +ENV DOCKER_WORKDIR="/code" +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +USER root + +RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 \ + && cd CMake \ + && ./bootstrap \ + && make -j${nproc} \ + && make install ######################################################################################################### # debug build preparation ######################################################################################################### -From conanio/gcc9 as build_debug_preparation +FROM cmake-gcc-9 as build_debug_preparation + USER root ENV DOCKER_WORKDIR="/code" +RUN apt-get update \ + && apt-get -y --no-install-recommends install libsodium-dev libboost-all-dev \ + && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} @@ -30,3 +51,4 @@ WORKDIR ${DOCKER_WORKDIR} RUN chmod +x ./Dockerfiles/build_and_run.sh CMD ./Dockerfiles/build_and_run.sh; ./build/bin/Gradido_LoginServer + diff --git a/login_server/Dockerfiles/build_and_run.sh b/login_server/Dockerfiles/build_and_run.sh index e18dcd17d..d7ad51ef2 100644 --- a/login_server/Dockerfiles/build_and_run.sh +++ b/login_server/Dockerfiles/build_and_run.sh @@ -1,9 +1,8 @@ #!/bin/bash cd build -conan install .. --build=missing -s build_type=Debug cmake -DCMAKE_BUILD_TYPE=Debug .. -make -j${CPU_COUNT} protoc grpc_cpp_plugin +make -j${nproc} protoc grpc_cpp_plugin cd .. if [ ! -d "./src/cpp/proto/hedera" ] ; then diff --git a/login_server/README b/login_server/README index 85f15134c..3e7843a58 100644 --- a/login_server/README +++ b/login_server/README @@ -1,3 +1,5 @@ +sudo apt install libsodium-dev libboost-all-dev + # get dependencies git submodule update --init --recursive diff --git a/login_server/dependencies/poco b/login_server/dependencies/poco index 3fc3e5f5b..b95393dcc 160000 --- a/login_server/dependencies/poco +++ b/login_server/dependencies/poco @@ -1 +1 @@ -Subproject commit 3fc3e5f5b8462f7666952b43381383a79b8b5d92 +Subproject commit b95393dcc3640807838e8323b4e600e54d2e8116 diff --git a/login_server/unix_parse_proto.sh b/login_server/unix_parse_proto.sh index 43fdc3a14..88c4c4b5d 100755 --- a/login_server/unix_parse_proto.sh +++ b/login_server/unix_parse_proto.sh @@ -5,8 +5,8 @@ fi if [ ! -d "./src/cpp/proto/gradido" ] ; then mkdir ./src/cpp/proto/gradido fi -PROTOC_PATH=./build/bin -CPP_PLUGIN_PATH=./build/bin +PROTOC_PATH=./build/dependencies/grpc/third_party/protobuf/bin +CPP_PLUGIN_PATH=./build/dependencies/grpc/bin $PROTOC_PATH/protoc --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto if [ ! -d "./src/cpp/proto/hedera" ] ; then From c3022a884937e5eda0d7cba078fef5173270dbb8 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Fri, 23 Apr 2021 21:20:32 +0200 Subject: [PATCH 002/122] update release build --- login_server/Dockerfile | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/login_server/Dockerfile b/login_server/Dockerfile index b4a15b3f3..221045de3 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -1,14 +1,32 @@ +######################################################################################################### +# cmake +######################################################################################################### +FROM gcc:9 as cmake-gcc-9 + +ENV DOCKER_WORKDIR="/code" +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +USER root + +RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 \ + && cd CMake \ + && ./bootstrap \ + && make -j${nproc} \ + && make install + + ######################################################################################################### # Build release ######################################################################################################### -From conanio/gcc9 as release +From cmake-gcc-9 as release ENV DOCKER_WORKDIR="/code" USER root RUN apt-get update \ - && apt-get -y --no-install-recommends install libsodium-dev libboost-all-dev \ + && apt-get -y --no-install-recommends install libsodium-dev libboost-all-dev gettext \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* RUN mkdir -p ${DOCKER_WORKDIR} From 0255465b5ccdb556c468e32a0783895291f753d5 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Fri, 23 Apr 2021 22:39:56 +0200 Subject: [PATCH 003/122] test and fix login release docker build --- login_server/Dockerfile | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/login_server/Dockerfile b/login_server/Dockerfile index 221045de3..da0eb03c2 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -58,13 +58,20 @@ CMD ["./code"] # run release ######################################################################################################### #From alpine:latest as login_server -FROM alpine:latest as login_server +FROM ubuntu:latest as login_server +USER root WORKDIR "/usr/bin" +RUN apt-get update \ + && apt-get -y --no-install-recommends install libsodium-dev libssl-dev \ + && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + COPY --from=release /code/build/bin/Gradido_LoginServer /usr/bin/ -COPY --from=release /code/build/lib/libmariadb.so.3 /usr/lib/ +COPY --from=release /code/build/lib/*.so.64 /usr/lib/ +COPY --from=release /code/build/dependencies/mariadb-connector-c/libmariadb/libmariadb.so.3 /usr/lib/ +#COPY --from=release /code/build/lib/libmariadb.so.3 /usr/lib/ RUN chmod +x /usr/bin/Gradido_LoginServer ENTRYPOINT ["/usr/bin/Gradido_LoginServer"] -CMD Gradido_LoginServer +#CMD Gradido_LoginServer From 604755db152b245e2b7b1fccbc4f930f8b30b2f1 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 27 Apr 2021 00:05:40 +0200 Subject: [PATCH 004/122] rebuilding debug build strategie for minimum space and time requirements for user --- .gitmodules | 13 +- docker-compose.override.yml | 12 +- login_server/CMakeLists.txt | 12 +- login_server/CMakeLists.txt.lib | 133 ++++++++++++++++++ login_server/Dockerfile | 2 +- login_server/Dockerfile.alpine-debug | 21 +++ login_server/Dockerfile.debug | 17 +-- .../Dockerfiles/Dockerfile.dependencies | 113 ++++++++++----- .../Dockerfile.dependencies-alpine | 87 ++++++++++++ login_server/Dockerfiles/build_and_run.sh | 22 --- login_server/README | 2 +- login_server/compile_pot.sh | 2 - login_server/dependencies/libsodium | 1 + login_server/dependencies/mariadb-connector-c | 1 - login_server/parse_proto.sh | 16 --- login_server/scripts/build_debug.sh | 25 ++++ login_server/scripts/compile_pot.sh | 2 + .../{ => scripts}/files_to_translate.txt | 0 login_server/scripts/prepare_build.sh | 15 ++ login_server/scripts/unix_parse_proto.sh | 19 +++ login_server/scripts/windows_parse_proto.sh | 19 +++ login_server/src/cpp/lib/DRHashList.cpp | 1 + login_server/unix_parse_proto.sh | 19 --- login_server/windows_parse_proto.sh | 19 --- 24 files changed, 432 insertions(+), 141 deletions(-) create mode 100644 login_server/CMakeLists.txt.lib create mode 100644 login_server/Dockerfile.alpine-debug create mode 100644 login_server/Dockerfiles/Dockerfile.dependencies-alpine delete mode 100644 login_server/Dockerfiles/build_and_run.sh delete mode 100755 login_server/compile_pot.sh create mode 160000 login_server/dependencies/libsodium delete mode 160000 login_server/dependencies/mariadb-connector-c delete mode 100644 login_server/parse_proto.sh create mode 100755 login_server/scripts/build_debug.sh create mode 100755 login_server/scripts/compile_pot.sh rename login_server/{ => scripts}/files_to_translate.txt (100%) create mode 100755 login_server/scripts/prepare_build.sh create mode 100755 login_server/scripts/unix_parse_proto.sh create mode 100644 login_server/scripts/windows_parse_proto.sh delete mode 100755 login_server/unix_parse_proto.sh delete mode 100644 login_server/windows_parse_proto.sh diff --git a/.gitmodules b/.gitmodules index 7ebe00a4d..216f32025 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,4 +28,15 @@ [submodule "community_server/src/protobuf"] path = community_server/src/protobuf url = git@github.com:gradido/gradido_protocol.git - +[submodule "login_server/dependencies/libsodium"] + path = login_server/dependencies/libsodium + url = https://github.com/jedisct1/libsodium.git +[submodule "login_server/dependencies/boost/static_assert"] + path = login_server/dependencies/boost/static_assert + url = https://github.com/boostorg/static_assert.git +[submodule "login_server/dependencies/boost/iterator"] + path = login_server/dependencies/boost/iterator + url = https://github.com/boostorg/iterator.git +[submodule "login_server/dependencies/boost/spirit"] + path = login_server/dependencies/boost/spirit + url = https://github.com/boostorg/spirit.git diff --git a/docker-compose.override.yml b/docker-compose.override.yml index b3c399d3a..a95b3dde1 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -24,8 +24,8 @@ services: ######################################################### login-server: build: - target: login_server_debug - dockerfile: Dockerfile.debug + target: login_server_alpine_debug + dockerfile: Dockerfile.alpine-debug security_opt: - seccomp:unconfined cap_add: @@ -33,9 +33,10 @@ services: volumes: - ./logs:/var/log/grd_login - ./login_server/src:/code/src + - ./login_server/dependencies:/code/dependencies + - ./login_server/scripts:/code/scripts - ./configs/login_server:/etc/grd_login - - login_build:/code/build - - conan:/root/.conan + - login_build_alpine:/code/build ######################################################### @@ -100,6 +101,5 @@ services: volumes: frontend_node_modules: - login_build: - conan: + login_build_alpine: diff --git a/login_server/CMakeLists.txt b/login_server/CMakeLists.txt index 4ab4ad2de..b43127a48 100644 --- a/login_server/CMakeLists.txt +++ b/login_server/CMakeLists.txt @@ -14,10 +14,12 @@ else() set(INSTALL_BINDIR "bin") set(INSTALL_PLUGINDIR "bin") endif() +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ./lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ./lib) include_directories( "dependencies" - "dependencies/tinf/src/" + "dependencies/tinf/src" "dependencies/mariadb-connector-c/include" "dependencies/mariadb-connector-c/build/include" "dependencies/spirit-po/include" @@ -131,10 +133,12 @@ if(WIN32) endif() ############################## config and add poco ################################### +#SET(SOME_EXPAT_OPTION OFF CACHE BOOL "Use some expat option") +SET(ENABLE_MONGODB OFF CACHE BOOL "" FORCE) +SET(ENABLE_DATA_SQLITE OFF CACHE BOOL "" FORCE) +SET(ENABLE_REDIS OFF CACHE BOOL "" FORCE) +SET(ENABLE_PAGECOMPILER_FILE2PAGE OFF CACHE BOOL "" FORCE) add_subdirectory("dependencies/poco") -set(ENABLE_MONGODB OFF) -set(ENABLE_DATA_SQLITE OFF) -set(ENABLE_REDIS OFF) set(POCO_LIBS PocoFoundation PocoUtil PocoNet PocoNetSSL PocoData) diff --git a/login_server/CMakeLists.txt.lib b/login_server/CMakeLists.txt.lib new file mode 100644 index 000000000..89640db06 --- /dev/null +++ b/login_server/CMakeLists.txt.lib @@ -0,0 +1,133 @@ +cmake_minimum_required(VERSION 3.18.2) +project(Gradido_LoginServer C CXX) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin" ) + +SET ( CMAKE_CXX_FLAGS "-std=c++17" ) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +if(WIN32) + set(CMAKE_CXX_FLAGS "/MP /EHsc") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3") + set(CMAKE_CXX_FLAGS_RELEASE "-O3") +else() + set(INSTALL_BINDIR "bin") + set(INSTALL_PLUGINDIR "bin") +endif() + +include_directories( + "dependencies" + "dependencies/tinf/src" + "dependencies/mariadb-connector-c/include" + "dependencies/mariadb-connector-c/build/include" + "dependencies/spirit-po/include" + "dependencies/grpc/include" + "dependencies/grpc/third_party/protobuf/src" + "dependencies/grpc/third_party/googletest/googletest/include" + "dependencies/poco/Crypto/include" + "dependencies/poco/Data/include" + "dependencies/poco/Util/include" + "dependencies/poco/Foundation/include" + "dependencies/poco/JSON/include" + "dependencies/poco/Net/include" + "dependencies/poco/NetSSL_OpenSSL/include" + "src/cpp/proto" +) + + + + +#set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include") + +FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h") +FILE(GLOB TINF "dependencies/tinf/src/*.c" "dependencies/tinf/src/*.h") +FILE(GLOB HTTPInterface "src/cpp/HTTPInterface/*.h" "src/cpp/HTTPInterface/*.cpp") +FILE(GLOB JSONInterface "src/cpp/JSONInterface/*.h" "src/cpp/JSONInterface/*.cpp") +FILE(GLOB TASKS "src/cpp/tasks/*.cpp" "src/cpp/tasks/*.h") +FILE(GLOB SINGLETON_MANAGER "src/cpp/SingletonManager/*.h" "src/cpp/SingletonManager/*.cpp") +FILE(GLOB LIB_SRC "src/cpp/lib/*.h" "src/cpp/lib/*.cpp") +FILE(GLOB MODEL "src/cpp/model/*.h" "src/cpp/model/*.cpp") +FILE(GLOB MODEL_TABLE "src/cpp/model/table/*.h" "src/cpp/model/table/*.cpp") +FILE(GLOB MODEL_EMAIL "src/cpp/model/email/*.h" "src/cpp/model/email/*.cpp") +FILE(GLOB MODEL_HEDERA "src/cpp/model/hedera/*.h" "src/cpp/model/hedera/*.cpp") +FILE(GLOB MODEL_GRADIDO "src/cpp/model/gradido/*.h" "src/cpp/model/gradido/*.cpp") +FILE(GLOB CRYPTO "src/cpp/Crypto/*.h" "src/cpp/Crypto/*.cpp") +FILE(GLOB MAIN "src/cpp/*.cpp" "src/cpp/*.c" "src/cpp/*.h") +FILE(GLOB MYSQL "src/cpp/MySQL/*.cpp" "src/cpp/MySQL/*.h" "src/cpp/MySQL/Poco/*.h") +FILE(GLOB PROTO_GRADIDO "src/cpp/proto/gradido/*.cc" "src/cpp/proto/gradido/*.h") +FILE(GLOB PROTO_HEDERA "src/cpp/proto/hedera/*.cc" "src/cpp/proto/hedera/*.h") + +# used only for test project +FILE(GLOB TEST "src/cpp/test/*.cpp" "src/cpp/test/*.h") +FILE(GLOB TEST_CRYPTO "src/cpp/test/crypto/*.cpp" "src/cpp/test/crypto/*.h") +FILE(GLOB TEST_MODEL "src/cpp/test/model/*.cpp" "src/cpp/test/model/*.h") +FILE(GLOB TEST_MODEL_TABLE "src/cpp/test/model/table/*.cpp" "src/cpp/test/model/table/*.h") +FILE(GLOB TEST_CONTROLLER "src/cpp/test/controller/*.cpp" "src/cpp/test/controller/*.h") + +SET(LOCAL_SRCS + ${CONTROLLER} ${TINF} ${MAIN} ${HTTPInterface} + ${JSONInterface} ${CRYPTO} + ${MODEL} ${MODEL_TABLE} ${MODEL_EMAIL} ${MODEL_HEDERA} ${MODEL_GRADIDO} + ${SINGLETON_MANAGER} ${LIB_SRC} ${MYSQL} ${TASKS} + ${PROTO_GRADIDO} ${PROTO_HEDERA} +) +SET(LOCAL_TEST_SRC + ${TEST} ${TEST_CRYPTO} ${TEST_MODEL} ${TEST_MODEL_TABLE} ${TEST_CONTROLLER} +) +aux_source_directory("src/cpp" LOCAL_SRCS) + +if(MSVC) + # src + source_group("controller" FILES ${CONTROLLER}) + source_group("proto\\gradido" FILES ${PROTO_GRADIDO}) + source_group("proto\\hedera" FILES ${PROTO_HEDERA}) + source_group("tinf" FILES ${TINF}) + source_group("Crypto" FILES ${CRYPTO}) + source_group("tasks" FILES ${TASKS}) + source_group("model\\table" FILES ${MODEL_TABLE}) + source_group("model\\email" FILES ${MODEL_EMAIL}) + source_group("model\\hedera" FILES ${MODEL_HEDERA}) + source_group("model\\gradido" FILES ${MODEL_GRADIDO}) + source_group("model" FILES ${MODEL}) + source_group("mysql" FILES ${MYSQL}) + source_group("SingletonManager" FILES ${SINGLETON_MANAGER}) + source_group("lib" FILES ${LIB_SRC}) + source_group("HTTP-Interface" FILES ${HTTPInterface}) + source_group("Json-Interface" FILES ${JSONInterface}) + source_group("Test\\crypto" FILES ${TEST_CRYPTO}) + source_group("Test\\model\\table" FILES ${TEST_MODEL_TABLE}) + source_group("Test\\model" FILES ${TEST_MODEL}) + source_group("Test\\controller" FILES ${TEST_CONTROLLER}) + source_group("Test" FILES ${TEST}) +endif() + +add_executable(Gradido_LoginServer ${LOCAL_SRCS}) + +############################## config and add mariadb ################################### + +find_library(MYSQL_LIBRARIES mariadbd PATHS "pre_build/dependencies/mariadb-connector-c/libmariadb/lib" REQUIRED) + +############################## config and add poco ################################### +set(BUILD_LIB_PATH "pre_build/lib") +find_library(POCO_FOUNDATION_LIB PocoFoundationd PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_UTIL_LIB PocoUtild PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_NET_SSL_LIB PocoNetSSLd PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_DATA_LIB PocoDatad PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_JSON_LIB PocoJSONd PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_NET_LIB PocoNetd PATHS ${BUILD_LIB_PATH} REQUIRED) + +set(POCO_LIBS ${POCO_FOUNDATION_LIB} ${POCO_UTIL_LIB} ${POCO_NET_SSL_LIB} ${POCO_DATA_LIB} ${POCO_JSON_LIB} ${POCO_NET_LIB}) + +############################## config and add grpc ################################### + + +find_library(PROTOBUF_LIB protobufd PATHS "pre_build/dependencies/grpc/third_party/protobuf/lib" REQUIRED) +set(DEPENDENCIES_GRPC_LIB_PATH "pre_build/dependencies/grpc/lib") +find_library(GRPC_PP_REFLECTION grpc++_reflectiond PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) +find_library(GRPC_PP grpc++d PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) + +set(GRPC_LIBS, ${GRPC_PP_REFLECTION} ${GRPC_PP} ${PROTOBUF_LIB}) +############################## build login server ################################### + +target_link_libraries(Gradido_LoginServer ${GRPC_LIBS} ${POCO_LIBS} ${MYSQL_LIBRARIES} sodium) + diff --git a/login_server/Dockerfile b/login_server/Dockerfile index 221045de3..224cc3964 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -26,7 +26,7 @@ ENV DOCKER_WORKDIR="/code" USER root RUN apt-get update \ - && apt-get -y --no-install-recommends install libsodium-dev libboost-all-dev gettext \ + && apt-get -y --no-install-recommends install libboost-all-dev gettext \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* RUN mkdir -p ${DOCKER_WORKDIR} diff --git a/login_server/Dockerfile.alpine-debug b/login_server/Dockerfile.alpine-debug new file mode 100644 index 000000000..3ca2b5da3 --- /dev/null +++ b/login_server/Dockerfile.alpine-debug @@ -0,0 +1,21 @@ +FROM gradido/login_dependencies:alpine-stage2.1 as login_server_alpine_debug + +ENV DOCKER_WORKDIR="/code" + + +EXPOSE 1200 +EXPOSE 1201 +WORKDIR ${DOCKER_WORKDIR} + +COPY ./CMakeLists.txt.lib ./CMakeLists.txt +RUN ls -la ${DOCKER_WORKDIR}/pre_build && \ + ls -la ${DOCKER_WORKDIR}/pre_build/lib && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/protobuf/lib && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/lib && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/ && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb/lib + +CMD cp -r ${DOCKER_WORKDIR}/pre_build/bin ${DOCKER_WORKDIR}/build/bin; cd scripts; ./prepare_build.sh; ./build_debug.sh; cd ..; ./build/bin/Gradido_LoginServer + diff --git a/login_server/Dockerfile.debug b/login_server/Dockerfile.debug index ae54eb062..6b68c9593 100644 --- a/login_server/Dockerfile.debug +++ b/login_server/Dockerfile.debug @@ -12,7 +12,7 @@ USER root RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 \ && cd CMake \ && ./bootstrap \ - && make -j${nproc} \ + && make -j$(nproc) \ && make install ######################################################################################################### @@ -24,19 +24,14 @@ USER root ENV DOCKER_WORKDIR="/code" -RUN apt-get update \ - && apt-get -y --no-install-recommends install libsodium-dev libboost-all-dev \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} COPY . . -RUN cd dependencies/mariadb-connector-c && \ - mkdir build && \ - cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSL=OFF .. +RUN cd scripts \ + && chmod +x ./prepare_build.sh \ + && ./prepare_build.sh ######################################################################################################### # run debug @@ -48,7 +43,7 @@ ENV DOCKER_WORKDIR="/code" EXPOSE 1200 EXPOSE 1201 WORKDIR ${DOCKER_WORKDIR} -RUN chmod +x ./Dockerfiles/build_and_run.sh +RUN chmod +x ./scripts/build_and_run.sh -CMD ./Dockerfiles/build_and_run.sh; ./build/bin/Gradido_LoginServer +CMD ./scripts/build_and_run.sh; ./build/bin/Gradido_LoginServer diff --git a/login_server/Dockerfiles/Dockerfile.dependencies b/login_server/Dockerfiles/Dockerfile.dependencies index 0194c7c82..79a573ea2 100644 --- a/login_server/Dockerfiles/Dockerfile.dependencies +++ b/login_server/Dockerfiles/Dockerfile.dependencies @@ -1,56 +1,93 @@ ######################################################################################################### -# debug build preparation +# gcc 9 with libssl ######################################################################################################### -From conanio/gcc9 as build_debug_preparation +FROM gcc:9 as gcc_9_libssl USER root +RUN apt-get update && \ + apt-get install -y --no-install-recommends libssl-dev libboost-dev && \ + apt-get autoclean && \ + apt-get autoremove && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + + +######################################################################################################### +# gcc 9 cmake +######################################################################################################### +FROM gcc_9_libssl as gcc_9_cmake + +USER root ENV DOCKER_WORKDIR="/code" - + RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} + +RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 && \ + cd CMake && \ + ./bootstrap --parallel=$(nproc) && \ + make -j$(nproc) && \ + make install && \ + cd .. && \ + rm -rf CMake + +######################################################################################################### +# debug build preparation +######################################################################################################### +FROM gcc_9_libssl as build_debug_dependencies + +USER root +ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +# copy CMake from last stage +COPY --from=gcc_9_cmake /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=gcc_9_cmake /usr/local/share/cmake-3.19/Modules /usr/local/share/cmake-3.19/Modules +COPY --from=gcc_9_cmake /usr/local/share/cmake-3.19/Templates /usr/local/share/cmake-3.19/Templates + COPY ./dependencies ./dependencies -COPY ./conanfile.txt ./conanfile.txt - - -RUN cd dependencies/mariadb-connector-c && \ - mkdir build && \ - cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSL=OFF .. - - -RUN mkdir build && \ - cd build && \ - conan install .. --build=missing -s build_type=Debug - - -######################################################################################################### -# debug build proto and grpc -######################################################################################################### -From build_debug_preparation as proto_grpc - -ENV DOCKER_WORKDIR="/code" -WORKDIR ${DOCKER_WORKDIR} - +COPY ./scripts ./scripts COPY ./CMakeLists.txt . -RUN cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug .. && \ - make -j${CPU_COUNT} protoc grpc_cpp_plugin +COPY ./src ./src + + +RUN cd scripts && \ + chmod +x ./prepare_build.sh && \ + ./prepare_build.sh && \ + mkdir ../build && \ + chmod +x ./build_debug.sh && \ + ./build_debug.sh + +# remove unneccessary stuff +RUN rm -rf build/bin/Gradido_LoginServer ######################################################################################################### -# parse proto and gettext +# debug build ######################################################################################################### -From proto_grpc as proto_parse +FROM gcc_9_libssl as build_debug +USER root ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} -RUN mkdir src && \ - cd src && \ - mkdir cpp -COPY ./src/proto ./src/proto -COPY ./unix_parse_proto.sh . -RUN chmod +x unix_parse_proto.sh && \ - ./unix_parse_proto.sh - +# copy CMake from last stage +COPY --from=build_debug_dependencies /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=build_debug_dependencies /usr/local/share/cmake-3.19 /usr/local/share/cmake-3.19 + +COPY --from=build_debug_dependencies /code/build/bin /code/build/bin +COPY --from=build_debug_dependencies /code/build/lib /code/build/lib + +# grpc +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/lib /build/dependencies/grpc/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/protobuf/lib /build/dependencies/grpc/third_party/protobuf/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/re2/lib /build/dependencies/grpc/third_party/re2/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/zlib/lib /build/dependencies/grpc/third_party/zlib/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/cares/cares/lib /build/dependencies/grpc/third_party/cares/cares/lib +COPY --from=build_debug_dependencies /code/build/dependencies/mariadb-connector-c/libmariadb/lib /build/dependencies/mariadb-connector-c/libmariadb/lib + diff --git a/login_server/Dockerfiles/Dockerfile.dependencies-alpine b/login_server/Dockerfiles/Dockerfile.dependencies-alpine new file mode 100644 index 000000000..3d06df22c --- /dev/null +++ b/login_server/Dockerfiles/Dockerfile.dependencies-alpine @@ -0,0 +1,87 @@ + +##### BUILD-ENV ##### +FROM alpine:3.13.5 as alpine-build + +RUN apk add --update --no-cache icu-dev +RUN apk add --no-cache git openssl-dev make gcc musl-dev g++ linux-headers libintl gettext-dev boost-dev libsodium-dev + + +##### CMAKE ##### +FROM alpine-build as alpine-gxx-cmake + +USER root +ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 && \ + cd CMake && \ + ./bootstrap --parallel=$(nproc) && \ + make -j$(nproc) && \ + make install && \ + cd .. && \ + rm -rf CMake + +RUN ls -la /usr/include/boost + +##### BUILD ENV ############## +FROM alpine-build as build_debug_dependencies + +USER root +ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +RUN apk add --no-cache git make gettext openssl-dev +# copy CMake from last stage +COPY --from=alpine-gxx-cmake /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Modules /usr/local/share/cmake-3.19/Modules +COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Templates /usr/local/share/cmake-3.19/Templates + + + +# COPY files from context +COPY ./dependencies ./dependencies +COPY ./scripts ./scripts +COPY ./CMakeLists.txt . +COPY ./src ./src + +# run build +RUN cd scripts && \ + chmod +x ./prepare_build.sh && \ + ./prepare_build.sh && \ + mkdir ../build && \ + chmod +x ./build_debug.sh && \ + ./build_debug.sh + +######################################################################################################### +# builded libs and binaries +######################################################################################################### +FROM alpine-build as debug_builded + +USER root +ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +RUN apk add --no-cache bash + +# copy CMake from last stage +COPY --from=build_debug_dependencies /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=build_debug_dependencies /usr/local/share/cmake-3.19 /usr/local/share/cmake-3.19 + +COPY --from=build_debug_dependencies /code/build/bin ${DOCKER_WORKDIR}/pre_build/bin +COPY --from=build_debug_dependencies /code/build/lib ${DOCKER_WORKDIR}/pre_build/lib + +# grpc +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/protobuf/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/protobuf/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/re2/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/re2/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/zlib/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/zlib/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/cares/cares/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/cares/cares/lib +COPY --from=build_debug_dependencies /code/build/dependencies/mariadb-connector-c/libmariadb/lib ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb/lib + + diff --git a/login_server/Dockerfiles/build_and_run.sh b/login_server/Dockerfiles/build_and_run.sh deleted file mode 100644 index d7ad51ef2..000000000 --- a/login_server/Dockerfiles/build_and_run.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -cd build -cmake -DCMAKE_BUILD_TYPE=Debug .. -make -j${nproc} protoc grpc_cpp_plugin -cd .. - -if [ ! -d "./src/cpp/proto/hedera" ] ; then -#if [ ! -f "./src/cpp/proto/gradido/TransactionBody.pb.h"] ; then - chmod +x unix_parse_proto.sh - ./unix_parse_proto.sh -fi -chmod +x compile_pot.sh - -./compile_pot.sh - -cd build -cmake -DCMAKE_BUILD_TYPE=Debug .. -make -j$(nproc) Gradido_LoginServer -#echo "building done" -chmod +x ./bin/Gradido_LoginServer -#./bin/Gradido_LoginServer diff --git a/login_server/README b/login_server/README index 3e7843a58..400aee30a 100644 --- a/login_server/README +++ b/login_server/README @@ -1,4 +1,4 @@ -sudo apt install libsodium-dev libboost-all-dev +sudo apt install libsodium-dev # get dependencies git submodule update --init --recursive diff --git a/login_server/compile_pot.sh b/login_server/compile_pot.sh deleted file mode 100755 index df6f5e435..000000000 --- a/login_server/compile_pot.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -xgettext -D src/cpp -p src/LOCALE -o messages.pot --from-code=UTF-8 --files-from=files_to_translate.txt diff --git a/login_server/dependencies/libsodium b/login_server/dependencies/libsodium new file mode 160000 index 000000000..8aedf4733 --- /dev/null +++ b/login_server/dependencies/libsodium @@ -0,0 +1 @@ +Subproject commit 8aedf4733884a25434b5c17c79c7e7dee27e6eb0 diff --git a/login_server/dependencies/mariadb-connector-c b/login_server/dependencies/mariadb-connector-c deleted file mode 160000 index 159540fe8..000000000 --- a/login_server/dependencies/mariadb-connector-c +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 159540fe8c8f30b281748fe8a1b79e8b17993a67 diff --git a/login_server/parse_proto.sh b/login_server/parse_proto.sh deleted file mode 100644 index 1ec7c106e..000000000 --- a/login_server/parse_proto.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -if [ ! -d "./src/cpp/proto" ] ; then - mkdir ./src/cpp/proto -fi -if [ ! -d "./src/cpp/proto/gradido" ] ; then - mkdir ./src/cpp/proto/gradido -fi - -./protoc --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto - -if [ ! -d "./src/cpp/proto/hedera" ] ; then - mkdir ./src/cpp/proto/hedera -fi - - -./protoc --plugin=protoc-gen-grpc=./grpc_cpp_plugin.exe --cpp_out=./src/cpp/proto/hedera --grpc_out=./src/cpp/proto/hedera --proto_path=./src/proto/hedera/hedera-protobuf/src/main/proto ./src/proto/hedera/hedera-protobuf/src/main/proto/*.proto diff --git a/login_server/scripts/build_debug.sh b/login_server/scripts/build_debug.sh new file mode 100755 index 000000000..9f6158da8 --- /dev/null +++ b/login_server/scripts/build_debug.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +cd ../build +cmake -DCMAKE_BUILD_TYPE=Debug .. +if [ ! -f "./bin/protoc" ] ; then + make -j$(nproc) protoc + cp ./dependencies/grpc/third_party/protobuf/bin/* ./bin/ +fi +if [ ! -f "./bin/grpc_cpp_plugin" ] ; then + make -j$(nproc) grpc_cpp_plugin + cp ./dependencies/grpc/bin/grpc_cpp_plugin ./bin/grpc_cpp_plugin +fi +cd ../scripts +if [ ! -d "./src/cpp/proto/hedera" ] ; then + chmod +x unix_parse_proto.sh + ./unix_parse_proto.sh +fi +chmod +x compile_pot.sh +./compile_pot.sh + +cd ../build +cmake -DCMAKE_BUILD_TYPE=Debug .. +make -j$(nproc) Gradido_LoginServer PageCompiler + +chmod +x ./bin/Gradido_LoginServer diff --git a/login_server/scripts/compile_pot.sh b/login_server/scripts/compile_pot.sh new file mode 100755 index 000000000..1d817be55 --- /dev/null +++ b/login_server/scripts/compile_pot.sh @@ -0,0 +1,2 @@ +#!/bin/sh +xgettext -D ../src/cpp -p ../src/LOCALE -o messages.pot --from-code=UTF-8 --files-from=files_to_translate.txt diff --git a/login_server/files_to_translate.txt b/login_server/scripts/files_to_translate.txt similarity index 100% rename from login_server/files_to_translate.txt rename to login_server/scripts/files_to_translate.txt diff --git a/login_server/scripts/prepare_build.sh b/login_server/scripts/prepare_build.sh new file mode 100755 index 000000000..8706e4139 --- /dev/null +++ b/login_server/scripts/prepare_build.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# generate version for mariadb connector + +cd ../dependencies/mariadb-connector-c +if [ -d "./build" ] ; then + rm -rf ./build +fi +mkdir build +cd build +cmake -DWITH_SSL=OFF .. +cd ../../ + + + diff --git a/login_server/scripts/unix_parse_proto.sh b/login_server/scripts/unix_parse_proto.sh new file mode 100755 index 000000000..5f8a86023 --- /dev/null +++ b/login_server/scripts/unix_parse_proto.sh @@ -0,0 +1,19 @@ +#!/bin/sh +if [ ! -d "../src/cpp/proto" ] ; then + mkdir ../src/cpp/proto +fi +if [ ! -d "../src/cpp/proto/gradido" ] ; then + mkdir ../src/cpp/proto/gradido +fi +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 + mkdir ../src/cpp/proto/hedera +fi + +GOOGLE_PROTOBUF_INCLUDES=../dependencies/grpc/third_party/protobuf/src +$PROTOC_PATH/protoc --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin --cpp_out=../src/cpp/proto/hedera --grpc_out=../src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=../src/proto/hedera/hedera-protobuf/src/main/proto ../src/proto/hedera/hedera-protobuf/src/main/proto/*.proto + + diff --git a/login_server/scripts/windows_parse_proto.sh b/login_server/scripts/windows_parse_proto.sh new file mode 100644 index 000000000..b01ae74d7 --- /dev/null +++ b/login_server/scripts/windows_parse_proto.sh @@ -0,0 +1,19 @@ +#!/bin/bash +if [ ! -d "../src/cpp/proto" ] ; then + mkdir ../src/cpp/proto +fi +if [ ! -d "../src/cpp/proto/gradido" ] ; then + mkdir ../src/cpp/proto/gradido +fi +PROTOC_PATH=build/bin +CPP_PLUGIN_PATH=build/bin +$PROTOC_PATH/protoc.exe --cpp_out=../src/cpp/proto --proto_path=../src/proto ../src/proto/gradido/*.proto + +if [ ! -d "./src/cpp/proto/hedera" ] ; then + mkdir ./src/cpp/proto/hedera +fi + +GOOGLE_PROTOBUF_INCLUDES=../dependencies/grpc/third_party/protobuf/src +$PROTOC_PATH/protoc.exe --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin.exe --cpp_out=../src/cpp/proto/hedera --grpc_out=../src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=../src/proto/hedera/hedera-protobuf/src/main/proto ../src/proto/hedera/hedera-protobuf/src/main/proto/*.proto + + diff --git a/login_server/src/cpp/lib/DRHashList.cpp b/login_server/src/cpp/lib/DRHashList.cpp index b912f742c..62429b094 100644 --- a/login_server/src/cpp/lib/DRHashList.cpp +++ b/login_server/src/cpp/lib/DRHashList.cpp @@ -6,6 +6,7 @@ #include #include +#include using namespace std; diff --git a/login_server/unix_parse_proto.sh b/login_server/unix_parse_proto.sh deleted file mode 100755 index 88c4c4b5d..000000000 --- a/login_server/unix_parse_proto.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -if [ ! -d "./src/cpp/proto" ] ; then - mkdir ./src/cpp/proto -fi -if [ ! -d "./src/cpp/proto/gradido" ] ; then - mkdir ./src/cpp/proto/gradido -fi -PROTOC_PATH=./build/dependencies/grpc/third_party/protobuf/bin -CPP_PLUGIN_PATH=./build/dependencies/grpc/bin -$PROTOC_PATH/protoc --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto - -if [ ! -d "./src/cpp/proto/hedera" ] ; then - mkdir ./src/cpp/proto/hedera -fi - -GOOGLE_PROTOBUF_INCLUDES=./dependencies/grpc/third_party/protobuf/src -$PROTOC_PATH/protoc --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin --cpp_out=./src/cpp/proto/hedera --grpc_out=./src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=./src/proto/hedera/hedera-protobuf/src/main/proto ./src/proto/hedera/hedera-protobuf/src/main/proto/*.proto - - diff --git a/login_server/windows_parse_proto.sh b/login_server/windows_parse_proto.sh deleted file mode 100644 index 90497e6b8..000000000 --- a/login_server/windows_parse_proto.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -if [ ! -d "./src/cpp/proto" ] ; then - mkdir ./src/cpp/proto -fi -if [ ! -d "./src/cpp/proto/gradido" ] ; then - mkdir ./src/cpp/proto/gradido -fi -PROTOC_PATH=build/bin -CPP_PLUGIN_PATH=build/bin -$PROTOC_PATH/protoc.exe --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto - -if [ ! -d "./src/cpp/proto/hedera" ] ; then - mkdir ./src/cpp/proto/hedera -fi - -GOOGLE_PROTOBUF_INCLUDES=./dependencies/grpc/third_party/protobuf/src -$PROTOC_PATH/protoc.exe --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin.exe --cpp_out=./src/cpp/proto/hedera --grpc_out=./src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=./src/proto/hedera/hedera-protobuf/src/main/proto ./src/proto/hedera/hedera-protobuf/src/main/proto/*.proto - - From 68f3c3736d61e483e634efb8ea8af2fb9e9c9f79 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 27 Apr 2021 11:04:04 +0200 Subject: [PATCH 005/122] update modules --- .gitmodules | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.gitmodules b/.gitmodules index 216f32025..62e643b38 100644 --- a/.gitmodules +++ b/.gitmodules @@ -27,16 +27,10 @@ [submodule "community_server/src/protobuf"] path = community_server/src/protobuf - url = git@github.com:gradido/gradido_protocol.git + url = https://github.com/gradido/gradido_protocol.git [submodule "login_server/dependencies/libsodium"] path = login_server/dependencies/libsodium url = https://github.com/jedisct1/libsodium.git -[submodule "login_server/dependencies/boost/static_assert"] - path = login_server/dependencies/boost/static_assert - url = https://github.com/boostorg/static_assert.git -[submodule "login_server/dependencies/boost/iterator"] - path = login_server/dependencies/boost/iterator - url = https://github.com/boostorg/iterator.git -[submodule "login_server/dependencies/boost/spirit"] - path = login_server/dependencies/boost/spirit - url = https://github.com/boostorg/spirit.git +[submodule "login_server/src/proto"] + path = login_server/src/proto + url = https://github.com/gradido/gradido_protocol.git From 397069c932584647b56cee17d187b19ff830a52c Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 3 May 2021 15:32:19 +0200 Subject: [PATCH 006/122] add validation, check if user has tried to send themself gradidos, correct wrong spelling in ENUM --- login_server/src/cpp/model/gradido/GroupMemberUpdate.cpp | 2 +- login_server/src/cpp/model/gradido/Transaction.cpp | 2 +- login_server/src/cpp/model/gradido/TransactionBase.cpp | 2 +- login_server/src/cpp/model/gradido/TransactionBase.h | 2 +- .../src/cpp/model/gradido/TransactionCreation.cpp | 2 +- .../src/cpp/model/gradido/TransactionTransfer.cpp | 8 ++++++-- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/login_server/src/cpp/model/gradido/GroupMemberUpdate.cpp b/login_server/src/cpp/model/gradido/GroupMemberUpdate.cpp index 145e1e97a..223baeb92 100644 --- a/login_server/src/cpp/model/gradido/GroupMemberUpdate.cpp +++ b/login_server/src/cpp/model/gradido/GroupMemberUpdate.cpp @@ -67,7 +67,7 @@ namespace model { const static char functionName[] = { "GroupMemberUpdate::validate" }; if (mProtoMemberUpdate.user_pubkey().size() != KeyPairEd25519::getPublicKeySize()) { addError(new Error(functionName, "pubkey not set or wrong size")); - return TRANSCATION_VALID_INVALID_PUBKEY; + return TRANSACTION_VALID_INVALID_PUBKEY; } if (mProtoMemberUpdate.member_update_type() != proto::gradido::GroupMemberUpdate::ADD_USER) { diff --git a/login_server/src/cpp/model/gradido/Transaction.cpp b/login_server/src/cpp/model/gradido/Transaction.cpp index c8708ce35..dd1655885 100644 --- a/login_server/src/cpp/model/gradido/Transaction.cpp +++ b/login_server/src/cpp/model/gradido/Transaction.cpp @@ -590,7 +590,7 @@ namespace model { auto result = validate(); if (TRANSACTION_VALID_OK != result) { if ( TRANSACTION_VALID_MISSING_SIGN == result || TRANSACTION_VALID_CODE_ERROR == result - || TRANSACTION_VALID_MISSING_PARAM == result || TRANSCATION_VALID_INVALID_PUBKEY == result + || TRANSACTION_VALID_MISSING_PARAM == result || TRANSACTION_VALID_INVALID_PUBKEY == result || TRANSACTION_VALID_INVALID_SIGN == result) { addError(new ParamError(function_name, "code error", TransactionValidationToString(result))); //sendErrorsAsEmail(); diff --git a/login_server/src/cpp/model/gradido/TransactionBase.cpp b/login_server/src/cpp/model/gradido/TransactionBase.cpp index 823a4c5ea..a8c983532 100644 --- a/login_server/src/cpp/model/gradido/TransactionBase.cpp +++ b/login_server/src/cpp/model/gradido/TransactionBase.cpp @@ -17,7 +17,7 @@ namespace model { case TRANSACTION_VALID_INVALID_TARGET_DATE: return "invalid target date"; case TRANSACTION_VALID_CREATION_OUT_OF_BORDER: return "creation out of border"; case TRANSACTION_VALID_INVALID_AMOUNT: return "invalid amount"; - case TRANSCATION_VALID_INVALID_PUBKEY: return "invalid pubkey"; + case TRANSACTION_VALID_INVALID_PUBKEY: return "invalid pubkey"; case TRANSACTION_VALID_INVALID_GROUP_ALIAS: return "invalid group alias"; case TRANSACTION_VALID_INVALID_SIGN: return "invalid sign"; } diff --git a/login_server/src/cpp/model/gradido/TransactionBase.h b/login_server/src/cpp/model/gradido/TransactionBase.h index bea79c971..da8930443 100644 --- a/login_server/src/cpp/model/gradido/TransactionBase.h +++ b/login_server/src/cpp/model/gradido/TransactionBase.h @@ -29,7 +29,7 @@ namespace model { TRANSACTION_VALID_INVALID_TARGET_DATE, TRANSACTION_VALID_CREATION_OUT_OF_BORDER, TRANSACTION_VALID_INVALID_AMOUNT, - TRANSCATION_VALID_INVALID_PUBKEY, + TRANSACTION_VALID_INVALID_PUBKEY, TRANSACTION_VALID_INVALID_GROUP_ALIAS, TRANSACTION_VALID_INVALID_SIGN }; diff --git a/login_server/src/cpp/model/gradido/TransactionCreation.cpp b/login_server/src/cpp/model/gradido/TransactionCreation.cpp index e53a5544b..7461b9bce 100644 --- a/login_server/src/cpp/model/gradido/TransactionCreation.cpp +++ b/login_server/src/cpp/model/gradido/TransactionCreation.cpp @@ -108,7 +108,7 @@ namespace model { if (mProtoCreation.receiver().pubkey().size() != KeyPairEd25519::getPublicKeySize()) { addError(new Error(function_name, "receiver pubkey has invalid size")); - return TRANSCATION_VALID_INVALID_PUBKEY; + return TRANSACTION_VALID_INVALID_PUBKEY; } // TODO: check creation amount from last 3 month from node server diff --git a/login_server/src/cpp/model/gradido/TransactionTransfer.cpp b/login_server/src/cpp/model/gradido/TransactionTransfer.cpp index 6e458a87a..759d79690 100644 --- a/login_server/src/cpp/model/gradido/TransactionTransfer.cpp +++ b/login_server/src/cpp/model/gradido/TransactionTransfer.cpp @@ -176,11 +176,15 @@ namespace model { } if (receiver_pubkey->size() != KeyPairEd25519::getPublicKeySize()) { addError(new Error(function_name, "invalid size of receiver pubkey")); - return TRANSCATION_VALID_INVALID_PUBKEY; + return TRANSACTION_VALID_INVALID_PUBKEY; } if (sender->pubkey().size() != KeyPairEd25519::getPublicKeySize()) { addError(new Error(function_name, "invalid size of sender pubkey")); - return TRANSCATION_VALID_INVALID_PUBKEY; + return TRANSACTION_VALID_INVALID_PUBKEY; + } + if(0 == memcmp(sender->pubkey().data(), receiver_pubkey->data(), KeyPairEd25519::getPublicKeySize())) { + addError(new Error(function_name, "sender and receiver are the same")); + return TRANSACTION_VALID_INVALID_PUBKEY; } return TRANSACTION_VALID_OK; } From d1da7b72b2703218df7d71b5ad6e332ccddf1bb4 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Mon, 3 May 2021 15:38:51 +0200 Subject: [PATCH 007/122] update dependencie docker to allow different build types --- .../Dockerfile.dependencies-alpine | 96 ++++++++----------- 1 file changed, 41 insertions(+), 55 deletions(-) diff --git a/login_server/Dockerfiles/Dockerfile.dependencies-alpine b/login_server/Dockerfiles/Dockerfile.dependencies-alpine index 3d06df22c..ef4d74dd6 100644 --- a/login_server/Dockerfiles/Dockerfile.dependencies-alpine +++ b/login_server/Dockerfiles/Dockerfile.dependencies-alpine @@ -9,79 +9,65 @@ RUN apk add --no-cache git openssl-dev make gcc musl-dev g++ linux-headers libin ##### CMAKE ##### FROM alpine-build as alpine-gxx-cmake -USER root -ENV DOCKER_WORKDIR="/code" - -RUN mkdir -p ${DOCKER_WORKDIR} -WORKDIR ${DOCKER_WORKDIR} - RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 && \ cd CMake && \ ./bootstrap --parallel=$(nproc) && \ make -j$(nproc) && \ - make install && \ - cd .. && \ - rm -rf CMake + make install -RUN ls -la /usr/include/boost +######### BUILD grpc ############## +FROM alpine-gxx-cmake as alpine-gxx-grpc -##### BUILD ENV ############## -FROM alpine-build as build_debug_dependencies +ARG BUILD_TYPE=Debug -USER root -ENV DOCKER_WORKDIR="/code" +RUN git clone https://github.com/grpc/grpc.git --branch=v1.37.0 --recursive -j4 && \ + cd grpc && \ + mkdir build && cd build && \ + cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. && make -j$(nproc) && \ + make install -RUN mkdir -p ${DOCKER_WORKDIR} -WORKDIR ${DOCKER_WORKDIR} +######### BUILD poco ############## +FROM alpine-gxx-cmake as alpine-gxx-poco -RUN apk add --no-cache git make gettext openssl-dev -# copy CMake from last stage -COPY --from=alpine-gxx-cmake /usr/local/bin/cmake /usr/local/bin/cmake -COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Modules /usr/local/share/cmake-3.19/Modules -COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Templates /usr/local/share/cmake-3.19/Templates +ARG BUILD_TYPE=Debug +RUN git clone https://github.com/pocoproject/poco.git --recursive && \ + cd poco && \ + git checkout poco-1.9.4-release && \ + mkdir cmake-build && cd cmake-build && \ + cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. && make -j$(nproc) && \ + make install +######### BUILD mariadb ########### +FROM alpine-gxx-cmake as alpine-gxx-mariadb-connector -# COPY files from context -COPY ./dependencies ./dependencies -COPY ./scripts ./scripts -COPY ./CMakeLists.txt . -COPY ./src ./src +ARG BUILD_TYPE=Debug -# run build -RUN cd scripts && \ - chmod +x ./prepare_build.sh && \ - ./prepare_build.sh && \ - mkdir ../build && \ - chmod +x ./build_debug.sh && \ - ./build_debug.sh +RUN git clone https://github.com/mariadb-corporation/mariadb-connector-c.git && \ + cd mariadb-connector-c && \ + git checkout 159540f && \ + mkdir build && cd build && \ + cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. && make -j$(nproc) && \ + make install ######################################################################################################### # builded libs and binaries ######################################################################################################### -FROM alpine-build as debug_builded +FROM alpine-build as alpine-libs -USER root -ENV DOCKER_WORKDIR="/code" +# copy CMake from cmake stage +COPY --from=alpine-gxx-cmake /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Modules /usr/local/share/cmake-3.19/Modules +COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Templates /usr/local/share/cmake-3.19/Templates -RUN mkdir -p ${DOCKER_WORKDIR} -WORKDIR ${DOCKER_WORKDIR} - -RUN apk add --no-cache bash - -# copy CMake from last stage -COPY --from=build_debug_dependencies /usr/local/bin/cmake /usr/local/bin/cmake -COPY --from=build_debug_dependencies /usr/local/share/cmake-3.19 /usr/local/share/cmake-3.19 - -COPY --from=build_debug_dependencies /code/build/bin ${DOCKER_WORKDIR}/pre_build/bin -COPY --from=build_debug_dependencies /code/build/lib ${DOCKER_WORKDIR}/pre_build/lib - -# grpc -COPY --from=build_debug_dependencies /code/build/dependencies/grpc/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/lib -COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/protobuf/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/protobuf/lib -COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/re2/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/re2/lib -COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/zlib/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/zlib/lib -COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/cares/cares/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/cares/cares/lib -COPY --from=build_debug_dependencies /code/build/dependencies/mariadb-connector-c/libmariadb/lib ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb/lib +# copy from grpc +COPY --from=alpine-gxx-grpc /usr/local /usr/local + + +# COPY from poco +COPY --from=alpine-gxx-poco /usr/local /usr/local + +# COPY from mariadb +COPY --from=alpine-gxx-mariadb-connector /usr/local /usr/local From 928cc0044dd6e164def64aea4e339b66dc442176 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Mon, 3 May 2021 16:49:19 +0200 Subject: [PATCH 008/122] update parse proto with cmake, only if not exist or newer, change folder, update includes --- login_server/CMakeLists.txt | 122 +++-- login_server/src/LOCALE/messages.pot | 431 ++++++++++++++++++ login_server/src/cpp/controller/HederaId.h | 4 +- login_server/src/cpp/lib/DataTypeConverter.h | 10 +- login_server/src/cpp/model/email/Email.cpp | 12 +- .../src/cpp/model/gradido/GroupMemberUpdate.h | 4 +- .../src/cpp/model/gradido/Transaction.cpp | 118 ++--- .../src/cpp/model/gradido/Transaction.h | 32 +- .../src/cpp/model/gradido/TransactionBase.h | 12 +- .../src/cpp/model/gradido/TransactionBody.h | 22 +- .../cpp/model/gradido/TransactionCreation.h | 6 +- .../cpp/model/gradido/TransactionTransfer.h | 4 +- .../cpp/model/hedera/ConsensusCreateTopic.h | 6 +- .../cpp/model/hedera/ConsensusSubmitMessage.h | 6 +- .../src/cpp/model/hedera/ConsensusTopicInfo.h | 4 +- .../model/hedera/CryptoCreateTransaction.h | 6 +- .../model/hedera/CryptoTransferTransaction.h | 4 +- login_server/src/cpp/model/hedera/Query.h | 10 +- login_server/src/cpp/model/hedera/Response.h | 10 +- .../src/cpp/model/hedera/Transaction.h | 6 +- .../src/cpp/model/hedera/TransactionBody.h | 8 +- .../model/hedera/TransactionGetReceiptQuery.h | 6 +- .../src/cpp/model/hedera/TransactionId.h | 6 +- .../src/cpp/model/hedera/TransactionRecord.h | 4 +- .../cpp/model/hedera/TransactionResponse.h | 4 +- .../cpp/test/controller/TestHederaAccount.cpp | 6 +- .../cpp/test/controller/TestHederaAccount.h | 4 +- .../src/cpp/test/controller/TestHederaId.cpp | 2 +- .../src/cpp/test/controller/TestHederaId.h | 4 +- .../crypto/TestAuthenticatedEncryption.cpp | 4 +- 30 files changed, 686 insertions(+), 191 deletions(-) create mode 100644 login_server/src/LOCALE/messages.pot diff --git a/login_server/CMakeLists.txt b/login_server/CMakeLists.txt index b43127a48..bfa5fcb72 100644 --- a/login_server/CMakeLists.txt +++ b/login_server/CMakeLists.txt @@ -33,12 +33,102 @@ include_directories( "dependencies/poco/JSON/include" "dependencies/poco/Net/include" "dependencies/poco/NetSSL_OpenSSL/include" - "src/cpp/proto" + "build" + "build/proto" ) +############################## config and add grpc ################################### + +set(GRPC_PATH "${DEP_PATH}/grpc/build") +set(GRPC_ABSL_PATH "${GRPC_PATH}/third_party/abseil-cpp/absl/types") +set(GRPC_CARES_PATH "${GRPC_PATH}/third_party/cares/cares/lib") +set(GRPC_BORING_SSL_PATH "${GRPC_PATH}/third_party/boringssl-with-bazel") +set(GRPC_RE2_PATH "${GRPC_PATH}/third_party/re2") +set(GRPC_PROTOBUF_PATH "${GRPC_PATH}/third_party/protobuf") + +if(WIN32) + set(GRPC_PATH "${GRPC_PATH}/Debug") + set(GRPC_ABSL_PATH "${GRPC_ABSL_PATH}/Debug") + set(GRPC_CARES_PATH "${GRPC_CARES_PATH}/Debug") + set(GRPC_BORING_SSL_PATH "${GRPC_CGRPC_BORING_SSL_PATHARES_PATH}/Debug") + set(GRPC_RE2_PATH "${GRPC_RE2_PATH}/Debug") + set(GRPC_PROTOBUF_DEBUG_PATH "${GRPC_PROTOBUF_PATH}/Debug") +endif() +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++) + +############################## parse protobuf files ################################### + +FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/proto GRADIDO_PROTO_MODEL_PATH) +FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/proto/hedera/hedera-protobuf/src/main/proto HEDERA_PROTO_MODEL_PATH) +FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/build/proto PROTOBINDING_PATH) +file(MAKE_DIRECTORY ${PROTOBINDING_PATH}) +file(MAKE_DIRECTORY ${PROTOBINDING_PATH}/gradido) +file(MAKE_DIRECTORY ${PROTOBINDING_PATH}/hedera) + +FILE(GLOB DATAMODEL_GRADIDO_PROTOS "${GRADIDO_PROTO_MODEL_PATH}/gradido/*.proto") +FILE(GLOB DATAMODEL_HEDERA_PROTOS "${HEDERA_PROTO_MODEL_PATH}/*.proto") + +find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin PATHS "build/dependencies/grpc/bin" REQUIRED) +find_program(PROTOBUF_PROTOC_EXECUTABLE protoc PATHS "build/dependencies/grpc/third_party/protobuf/bin" REQUIRED) +FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/grpc/third_party/protobuf/src GOOGLE_PROTOBUF_INCLUDES) + +FOREACH(proto ${DATAMODEL_GRADIDO_PROTOS}) + FILE(TO_NATIVE_PATH ${proto} proto_native) + get_filename_component(proto_parsed ${proto} NAME_WLE) + FILE(TO_NATIVE_PATH ${PROTOBINDING_PATH}/gradido/${proto_parsed}.pb.h proto_parsed_native) + + IF(${proto_native} IS_NEWER_THAN ${proto_parsed_native}) + EXECUTE_PROCESS( + COMMAND + ${PROTOBUF_PROTOC_EXECUTABLE} + --proto_path=${GRADIDO_PROTO_MODEL_PATH} + --cpp_out=${PROTOBINDING_PATH} + ${proto_native} + RESULT_VARIABLE rv + ) + # Optional, but that can show the user if something have gone wrong with the proto generation + IF(${rv}) + MESSAGE("Generation of data model returned ${rv} for proto ${proto_native}") + ENDIF() + ENDIF() + +ENDFOREACH(proto) + +FOREACH(proto ${DATAMODEL_HEDERA_PROTOS}) + FILE(TO_NATIVE_PATH ${proto} proto_native) + get_filename_component(proto_parsed ${proto} NAME_WLE) + FILE(TO_NATIVE_PATH ${PROTOBINDING_PATH}/hedera/${proto_parsed}.pb.h proto_parsed_native) + IF(${proto_native} IS_NEWER_THAN ${proto_parsed_native}) + EXECUTE_PROCESS( + COMMAND + ${PROTOBUF_PROTOC_EXECUTABLE} + --plugin=protoc-gen-grpc=${GRPC_CPP_PLUGIN} + --proto_path=${HEDERA_PROTO_MODEL_PATH} + --proto_path=${GOOGLE_PROTOBUF_INCLUDES} + --cpp_out=${PROTOBINDING_PATH}/hedera + --grpc_out ${PROTOBINDING_PATH}/hedera + ${proto_native} + RESULT_VARIABLE rv + ) + # Optional, but that can show the user if something have gone wrong with the proto generation + IF(${rv}) + MESSAGE("Generation of data model returned ${rv} for proto ${proto_native}") + ENDIF() + ENDIF() +ENDFOREACH(proto) + + +############################## bind source files ################################### + #set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include") FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h") @@ -56,8 +146,8 @@ FILE(GLOB MODEL_GRADIDO "src/cpp/model/gradido/*.h" "src/cpp/model/gradido/*.cpp FILE(GLOB CRYPTO "src/cpp/Crypto/*.h" "src/cpp/Crypto/*.cpp") FILE(GLOB MAIN "src/cpp/*.cpp" "src/cpp/*.c" "src/cpp/*.h") FILE(GLOB MYSQL "src/cpp/MySQL/*.cpp" "src/cpp/MySQL/*.h" "src/cpp/MySQL/Poco/*.h") -FILE(GLOB PROTO_GRADIDO "src/cpp/proto/gradido/*.cc" "src/cpp/proto/gradido/*.h") -FILE(GLOB PROTO_HEDERA "src/cpp/proto/hedera/*.cc" "src/cpp/proto/hedera/*.h") +FILE(GLOB PROTO_GRADIDO "${PROTOBINDING_PATH}/gradido/*.cc" "${PROTOBINDING_PATH}/gradido/*.h") +FILE(GLOB PROTO_HEDERA "${PROTOBINDING_PATH}/hedera/*.cc" "${PROTOBINDING_PATH}/hedera/*.h") # used only for test project FILE(GLOB TEST "src/cpp/test/*.cpp" "src/cpp/test/*.h") @@ -142,33 +232,7 @@ add_subdirectory("dependencies/poco") set(POCO_LIBS PocoFoundation PocoUtil PocoNet PocoNetSSL PocoData) -############################## config and add grpc ################################### -set(GRPC_PATH "${DEP_PATH}/grpc/build") -set(GRPC_ABSL_PATH "${GRPC_PATH}/third_party/abseil-cpp/absl/types") -set(GRPC_CARES_PATH "${GRPC_PATH}/third_party/cares/cares/lib") -set(GRPC_BORING_SSL_PATH "${GRPC_PATH}/third_party/boringssl-with-bazel") -set(GRPC_RE2_PATH "${GRPC_PATH}/third_party/re2") -set(GRPC_PROTOBUF_PATH "${GRPC_PATH}/third_party/protobuf") - -if(WIN32) - set(GRPC_PATH "${GRPC_PATH}/Debug") - set(GRPC_ABSL_PATH "${GRPC_ABSL_PATH}/Debug") - set(GRPC_CARES_PATH "${GRPC_CARES_PATH}/Debug") - set(GRPC_BORING_SSL_PATH "${GRPC_CGRPC_BORING_SSL_PATHARES_PATH}/Debug") - set(GRPC_RE2_PATH "${GRPC_RE2_PATH}/Debug") - set(GRPC_PROTOBUF_DEBUG_PATH "${GRPC_PROTOBUF_PATH}/Debug") -endif() - - - -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++) ############################## build login server ################################### if(UNIX) diff --git a/login_server/src/LOCALE/messages.pot b/login_server/src/LOCALE/messages.pot new file mode 100644 index 000000000..568881671 --- /dev/null +++ b/login_server/src/LOCALE/messages.pot @@ -0,0 +1,431 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-04-26 22:00+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:181 +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:260 +msgid "Login" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:181 +msgid "E-Mail or password isn't right, please try again!" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:190 +msgid "Passwort" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:190 +msgid "" +"Passwort wird noch berechnet, bitte versuche es in etwa 1 Minute erneut." +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:193 +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:196 +msgid "User" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:193 +msgid "Error in saved data, the server admin will look at it." +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:196 +msgid "Benutzer ist deaktiviert, kein Login möglich!" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:260 +msgid "Username and password are needed!" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:290 +#: model/Session.cpp:164 model/Session.cpp:171 model/Session.cpp:219 +#: model/Session.cpp:229 +msgid "E-Mail" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:291 +msgid "Password" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:292 +msgid " Login " +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:297 +msgid "You haven't any account yet? Please follow the link to create one." +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:299 +msgid "Create New Account" +msgstr "" + +#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:303 +msgid "Passwort vergessen" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:73 +msgid "E-Mail verifizieren" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:78 +msgid "" +"Deine E-Mail wurde erfolgreich bestätigt. Du kannst nun Gradidos versenden." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:79 +msgid "Zur Startseite" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:81 +msgid "Bitte gib deinen E-Mail Verification Code ein:" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:82 +#: model/Session.cpp:187 +msgid "Email Verification Code" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:83 +msgid "Überprüfe Code" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:86 +msgid "Du hast bisher keinen Code erhalten?" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:87 +msgid "E-Mail erneut zuschicken (in Arbeit)" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:90 +msgid "Funktioniert dein E-Mail Verification Code nicht?" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:91 +msgid "Schicke uns eine E-Mail und wir kümmern uns darum: " +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:92 +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:151 +msgid "E-Mail an Support schicken" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:113 +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:124 +msgid "Gib bitte hier deine E-Mail Adresse an:" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:116 +msgid "Bestätigen" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:126 +msgid "Hast du dir deine Passphrase notiert oder gemerkt?" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:131 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:206 +msgid "Ja" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:136 +msgid "Nein" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:140 +msgid "Absenden" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:145 +msgid "Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:147 +msgid "Der Admin hat eine E-Mail bekommen und wird sich bei dir melden." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:149 +msgid "" +"Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-" +"Verzeichnis nach. " +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:150 +msgid "" +"Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten " +"gewartet?" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:26 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:96 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:117 +#: model/Session.cpp:463 model/Session.cpp:475 model/Session.cpp:489 +msgid "Passphrase" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:27 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:266 +msgid "Neues Konto anlegen" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:28 +msgid "2/3" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:96 +msgid "" +"Diese Passphrase ist ungültig, bitte überprüfen oder neu " +"generieren (lassen)." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:117 +msgid "intern error please try again later" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:132 +msgid "3/3" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:135 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:138 +msgid "1/3" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:137 +msgid "Neues Passwort anlegen" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:148 +msgid "Passphrase abschreiben" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:159 +msgid "Was ist eine Passphrase?" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:160 +msgid "Deine Passphrase besteht aus den im grünen Feld angezeigten Wörtern." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:161 +msgid "Sie dient deiner Sicherheit." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:162 +msgid "" +"Du brauchst deine Passphrase um dein Konto wiederherzustellen, wenn du mal " +"dein Passwort vergessen haben solltest." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:164 +msgid "Deine Passphrase (Groß/Kleinschreibung beachten)" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:169 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:197 +msgid "Was zu tun ist:" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:170 +msgid "" +"Schreibe dir die obenstehende Passphrase von Hand auf ein Blatt " +"Papier!" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:171 +msgid "Speichere sie auf keinen Fall auf deinem Rechner oder Mobilgerät!!" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:172 +msgid "Bewahre sie an einem sicheren Ort auf!" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:174 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:285 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:290 +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:303 +msgid "Weiter" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:198 +msgid "Hast du dir deine Passphrase gemerkt?" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:199 +msgid "" +"Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in " +"anderer Reihenfolge." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:200 +msgid "Klicke sie an um sie einzusetzen." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:201 +msgid "Überprüfe dabei, ob du alle Wörter richtig geschrieben hast!" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:205 +msgid "" +"Weil du kein Javascript verwendest geht es direkt weiter. Hast du dir deine " +"Passphrase gemerkt oder aufgeschrieben?" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:252 +msgid "Deine E-Mail Adresse wurde erfolgreich bestätigt." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:256 +msgid "Neue Gradido Adresse anlegen / wiederherstellen" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:257 +msgid "" +"Möchtest du ein neues Gradido-Konto anlegen oder ein bestehendes " +"wiederherstellen?" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:273 +msgid "Bestehendes Konto wiederherstellen" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:280 +msgid "" +"Falls du ein bestehendes Konto wiederherstellen willst, gib hier deine " +"Passphrase ein:" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:297 +msgid "Konto wiederherstellen / Neues Passwort anlegen" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:299 +msgid "" +"Um dein Konto wiederherzustellen und dir ein Neues Passwort auswählen zu " +"können, tippe hier bitte die Wörter deiner Passphrase in der richtigen " +"Reihenfolge ein, welche du dir aufgeschrieben hast." +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:313 +msgid "Fehler" +msgstr "" + +#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:314 +msgid "" +"Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende " +"dich an den Server-Admin." +msgstr "" + +#: model/Session.cpp:150 model/Session.cpp:180 model/Session.cpp:769 +#: model/Session.cpp:775 model/Session.cpp:1051 model/Session.cpp:1067 +msgid "Benutzer" +msgstr "" + +#: model/Session.cpp:150 +msgid "Eingeloggter Benutzer ist kein Admin" +msgstr "" + +#: model/Session.cpp:156 model/Session.cpp:211 +msgid "Vorname" +msgstr "" + +#: model/Session.cpp:156 model/Session.cpp:160 model/Session.cpp:211 +#: model/Session.cpp:215 +msgid "" +"Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen " +"<>&;" +msgstr "" + +#: model/Session.cpp:160 model/Session.cpp:215 +msgid "Nachname" +msgstr "" + +#: model/Session.cpp:164 model/Session.cpp:219 +msgid "Bitte gebe eine gültige E-Mail Adresse an." +msgstr "" + +#: model/Session.cpp:171 +msgid "Für diese E-Mail Adresse gibt es bereits einen Account" +msgstr "" + +#: model/Session.cpp:180 model/Session.cpp:187 +msgid "Fehler beim speichern!" +msgstr "" + +#: model/Session.cpp:229 +msgid "Für diese E-Mail Adresse gibt es bereits ein Konto" +msgstr "" + +#: model/Session.cpp:253 +msgid "Server" +msgstr "" + +#: model/Session.cpp:253 +msgid "Fehler beim speichen des Kontos bitte versuche es später noch einmal" +msgstr "" + +#: model/Session.cpp:348 model/Session.cpp:388 model/Session.cpp:956 +#: model/Session.cpp:965 +msgid "E-Mail Verification" +msgstr "" + +#: model/Session.cpp:348 +msgid "Du hast dein Konto bereits aktiviert!" +msgstr "" + +#: model/Session.cpp:388 +msgid "Falscher Code für aktiven Login" +msgstr "" + +#: model/Session.cpp:463 +msgid "Deine Passphrase ist ungütig" +msgstr "" + +#: model/Session.cpp:475 +msgid "Ein Fehler trat auf, bitte versuche es erneut" +msgstr "" + +#: model/Session.cpp:489 +msgid "Das ist nicht die richtige Passphrase." +msgstr "" + +#: model/Session.cpp:769 +msgid "Konnte Community Server nicht erreichen. E-Mail an den Admin ist raus." +msgstr "" + +#: model/Session.cpp:775 +msgid "" +"Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und " +"versuche es nochmal." +msgstr "" + +#: model/Session.cpp:956 +msgid "Konnte kein passendes Konto finden." +msgstr "" + +#: model/Session.cpp:965 +msgid "Fehler beim laden des Benutzers." +msgstr "" + +#: model/Session.cpp:1051 +msgid "Kein gültiger Benutzer, bitte logge dich erneut ein." +msgstr "" + +#: model/Session.cpp:1067 +msgid "Fehler beim generieren der Passphrase, der Admin bekommt eine E-Mail. " +msgstr "" diff --git a/login_server/src/cpp/controller/HederaId.h b/login_server/src/cpp/controller/HederaId.h index 5ec8dffdf..fb43cd82b 100644 --- a/login_server/src/cpp/controller/HederaId.h +++ b/login_server/src/cpp/controller/HederaId.h @@ -8,7 +8,7 @@ #include "TableControllerBase.h" -#include "../proto/hedera/BasicTypes.pb.h" +#include "proto/hedera/BasicTypes.pb.h" namespace controller { class HederaAccount; @@ -43,4 +43,4 @@ namespace controller { }; } -#endif //GRADIDO_LOGIN_SERVER_CONTROLLER_HEDERA_ID_INCLUDE \ No newline at end of file +#endif //GRADIDO_LOGIN_SERVER_CONTROLLER_HEDERA_ID_INCLUDE diff --git a/login_server/src/cpp/lib/DataTypeConverter.h b/login_server/src/cpp/lib/DataTypeConverter.h index b3fe436a5..d61944081 100644 --- a/login_server/src/cpp/lib/DataTypeConverter.h +++ b/login_server/src/cpp/lib/DataTypeConverter.h @@ -11,9 +11,9 @@ #include "Poco/JSON/Array.h" #include "../SingletonManager/LanguageManager.h" -#include "../proto/hedera/Timestamp.pb.h" -#include "../proto/hedera/Duration.pb.h" -#include "../proto/gradido/BasicTypes.pb.h" +#include "proto/hedera/Timestamp.pb.h" +#include "proto/hedera/Duration.pb.h" +#include "proto/gradido/BasicTypes.pb.h" #include "sodium.h" @@ -37,13 +37,13 @@ namespace DataTypeConverter { MemoryBin* hexToBin(const std::string& hexString); MemoryBin* base64ToBin(const std::string& base64String, int variant = sodium_base64_VARIANT_ORIGINAL); - + std::string binToBase64(const unsigned char* data, size_t size, int variant = sodium_base64_VARIANT_ORIGINAL); inline std::string binToBase64(const MemoryBin* data, int variant = sodium_base64_VARIANT_ORIGINAL) { return binToBase64(data->data(), data->size(), variant); } inline std::string binToBase64(const std::string& proto_bin, int variant = sodium_base64_VARIANT_ORIGINAL) { return binToBase64((const unsigned char*)proto_bin.data(), proto_bin.size(), variant); } - + std::string binToHex(const unsigned char* data, size_t size); std::string binToHex(const Poco::Nullable& nullableBin); inline std::string binToHex(const MemoryBin* data) { return binToHex(data->data(), data->size());} diff --git a/login_server/src/cpp/model/email/Email.cpp b/login_server/src/cpp/model/email/Email.cpp index 185f13f74..36c411413 100644 --- a/login_server/src/cpp/model/email/Email.cpp +++ b/login_server/src/cpp/model/email/Email.cpp @@ -5,7 +5,7 @@ #include "../gradido/TransactionBase.h" -#include "../lib/DataTypeConverter.h" +#include "../../lib/DataTypeConverter.h" namespace model { @@ -169,7 +169,7 @@ Gradido Login-Server\n\ std::string content_string; switch (mType) { - case EMAIL_DEFAULT: + case EMAIL_DEFAULT: mailMessage->addRecipient(adminRecipient); mailMessage->setSubject(langCatalog->gettext_str("Default Email Subject")); mailMessage->addContent(new Poco::Net::StringPartSource(langCatalog->gettext_str("Empty Email Content"), mt.toString())); @@ -180,7 +180,7 @@ Gradido Login-Server\n\ mailMessage->setSubject(langCatalog->gettext_str("Error from Gradido Login Server")); mailMessage->addContent(new Poco::Net::StringPartSource(mErrorHtml, mt.toString())); break; - + case EMAIL_USER_VERIFICATION_CODE: case EMAIL_USER_VERIFICATION_CODE_RESEND: case EMAIL_USER_VERIFICATION_CODE_RESEND_AFTER_LONG_TIME: @@ -284,7 +284,7 @@ Gradido Login-Server\n\ std::string Email::replaceUserNamesAndLink( const char* src, const std::string& first_name, - const std::string& last_name, + const std::string& last_name, const std::string& link, Poco::UInt64 code ) { @@ -300,7 +300,7 @@ Gradido Login-Server\n\ else { addError(new Error(functionName, "no first_name placeholder found")); } - + findPos = result.find("[last_name]", findCursor); if (findPos != result.npos) { findCursor = findPos + last_name.size(); @@ -438,4 +438,4 @@ Gradido Login-Server\n\ return EMAIL_ERROR; } } -} \ No newline at end of file +} diff --git a/login_server/src/cpp/model/gradido/GroupMemberUpdate.h b/login_server/src/cpp/model/gradido/GroupMemberUpdate.h index 7bd146cfd..6a58000b9 100644 --- a/login_server/src/cpp/model/gradido/GroupMemberUpdate.h +++ b/login_server/src/cpp/model/gradido/GroupMemberUpdate.h @@ -2,7 +2,7 @@ #define __GRADIDO_LOGIN_SERVER_MODEL_GRADIDO_GROUP_MEMBER_UPDATE_H #include "TransactionBase.h" -#include "../../proto/gradido/GroupMemberUpdate.pb.h" +#include "proto/gradido/GroupMemberUpdate.pb.h" namespace model { @@ -26,4 +26,4 @@ namespace model { } } -#endif \ No newline at end of file +#endif diff --git a/login_server/src/cpp/model/gradido/Transaction.cpp b/login_server/src/cpp/model/gradido/Transaction.cpp index c8708ce35..f8203651c 100644 --- a/login_server/src/cpp/model/gradido/Transaction.cpp +++ b/login_server/src/cpp/model/gradido/Transaction.cpp @@ -9,9 +9,9 @@ #include "../../controller/HederaAccount.h" #include "../../controller/HederaRequest.h" -#include "../lib/DataTypeConverter.h" -#include "../lib/Profiler.h" -#include "../lib/JsonRequest.h" +#include "../../lib/DataTypeConverter.h" +#include "../../lib/Profiler.h" +#include "../../lib/JsonRequest.h" #include "../hedera/Transaction.h" #include "../hedera/TransactionId.h" @@ -30,7 +30,7 @@ namespace model { Transaction::Transaction(Poco::AutoPtr body) : mTransactionBody(body), mBodyBytesHash(0) { - + auto body_bytes = mTransactionBody->getBodyBytes(); mBodyBytesHash = DRMakeStringHash(body_bytes.data(), body_bytes.size()); mProtoTransaction.set_body_bytes(body_bytes); @@ -50,7 +50,7 @@ namespace model { auto body_bytes = mTransactionBody->getBodyBytes(); mBodyBytesHash = DRMakeStringHash(body_bytes.data(), body_bytes.size()); } - + Transaction::~Transaction() { Poco::ScopedLock _lock(mWorkMutex); @@ -76,7 +76,7 @@ namespace model { } auto body = TransactionBody::create("", user, proto::gradido::GroupMemberUpdate_MemberUpdateType_ADD_USER, group_model->getAlias()); - + Poco::AutoPtr result = new Transaction(body); auto model = result->getModel(); model->setHederaId(topic_id->getModel()->getID()); @@ -87,7 +87,7 @@ namespace model { Poco::AutoPtr Transaction::createCreation( Poco::AutoPtr receiver, - Poco::UInt32 amount, + Poco::UInt32 amount, Poco::DateTime targetDate, const std::string& memo, BlockchainType blockchainType @@ -101,7 +101,7 @@ namespace model { } auto network_type = ServerConfig::g_HederaNetworkType; auto receiver_model = receiver->getModel(); - + auto body = TransactionBody::create(memo, receiver, amount, targetDate, blockchainType); Poco::AutoPtr result = new Transaction(body); @@ -118,7 +118,7 @@ namespace model { } model->setHederaId(topic_id->getModel()->getID()); } - + result->insertPendingTaskIntoDB(receiver, model::table::TASK_TYPE_CREATION); PendingTasksManager::getInstance()->addTask(result); return result; @@ -129,7 +129,7 @@ namespace model { const MemoryBin* receiverPubkey, Poco::AutoPtr receiverGroup, Poco::UInt32 amount, - const std::string& memo, + const std::string& memo, BlockchainType blockchainType, bool inbound/* = true*/ ) @@ -143,25 +143,25 @@ namespace model { if (sender.isNull() || !sender->getModel() || !receiverPubkey || !amount) { return transaction; } - + auto sender_model = sender->getModel(); - - + + if (blockchainType == BLOCKCHAIN_MYSQL) { transaction_body = TransactionBody::create(memo, sender, receiverPubkey, amount, blockchainType); transaction = new Transaction(transaction_body); } - else if (blockchainType == BLOCKCHAIN_HEDERA) + else if (blockchainType == BLOCKCHAIN_HEDERA) { auto network_type = ServerConfig::g_HederaNetworkType; - - + + // LOCAL Transfer if (receiverGroup.isNull() || sender_model->getGroupId() == receiverGroup->getModel()->getID()) { topic_id = controller::HederaId::find(sender_model->getGroupId(), network_type); - if (topic_id.isNull()) + if (topic_id.isNull()) { em->addError(new ParamError(function_name, "could'n find topic for group: ", sender_model->getGroupId())); em->addError(new ParamError(function_name, "network type: ", network_type)); @@ -220,7 +220,7 @@ namespace model { transaction_model->setHederaId(topic_id->getModel()->getID()); } - + transaction->setParam("blockchain_type", (int)blockchainType); transaction->insertPendingTaskIntoDB(sender, model::table::TASK_TYPE_TRANSFER); PendingTasksManager::getInstance()->addTask(transaction); @@ -249,10 +249,10 @@ namespace model { } Poco::AutoPtr Transaction::createTransfer( - const MemoryBin* senderPubkey, - Poco::AutoPtr receiver, - std::string senderGroupAlias, - Poco::UInt32 amount, + const MemoryBin* senderPubkey, + Poco::AutoPtr receiver, + std::string senderGroupAlias, + Poco::UInt32 amount, const std::string& memo, BlockchainType blockchainType ) @@ -268,7 +268,7 @@ namespace model { //std::vector> bodys; auto receiver_model = receiver->getModel(); auto network_type = ServerConfig::g_HederaNetworkType; - + auto sender_groups = controller::Group::load(senderGroupAlias); if (!sender_groups.size()) { em->addError(new ParamError(function_name, "couldn't find group", senderGroupAlias)); @@ -286,10 +286,10 @@ namespace model { Poco::Timestamp pairedTransactionId; // create only inbound transaction, and outbound before sending to hedera //for (int i = 0; i < 1; i++) { - + //transaction_group = receiverGroup; //topic_group = sender_group; - + if (transaction_group.isNull()) { em->addError(new Error(function_name, "transaction group is zero, inbound")); em->sendErrorsAsEmail(); @@ -314,7 +314,7 @@ namespace model { return result; } - + Poco::AutoPtr Transaction::load(model::table::PendingTask* dbModel) { @@ -335,10 +335,10 @@ namespace model { if (!finished) { transaction->ifEnoughSignsProceed(nullptr); } - + return transaction; } - + bool Transaction::insertPendingTaskIntoDB(Poco::AutoPtr user, model::table::TaskType type) { static const char* function_name = "Transaction::insertPendingTaskIntoDB"; @@ -355,7 +355,7 @@ namespace model { model->setTaskType(type); model->setRequest(mProtoTransaction.SerializeAsString()); if (!model->insertIntoDB(true)) { - + return false; } return true; @@ -365,8 +365,8 @@ namespace model { { static const char function_name[] = "Transaction::addSign"; Poco::ScopedLock _lock(mWorkMutex); - - if (user.isNull() || !user->getModel()) + + if (user.isNull() || !user->getModel()) { addError(new Error(function_name, "error user is invalid")); return false; @@ -381,9 +381,9 @@ namespace model { } auto hash = DRMakeStringHash(bodyBytes.data(), bodyBytes.size()); - + auto sigMap = mProtoTransaction.mutable_sig_map(); - if (sigMap->sigpair_size() > 0 && mBodyBytesHash && mBodyBytesHash != hash) + if (sigMap->sigpair_size() > 0 && mBodyBytesHash && mBodyBytesHash != hash) { addError(new Error(function_name, "body bytes hash has changed and signature(s) exist already!")); return false; @@ -413,33 +413,33 @@ namespace model { auto gradido_key_pair = user->getGradidoKeyPair(); KeyPairEd25519* recovered_gradido_key_pair = nullptr; - if (!gradido_key_pair || !gradido_key_pair->hasPrivateKey()) + if (!gradido_key_pair || !gradido_key_pair->hasPrivateKey()) { - if (!user->tryLoadPassphraseUserBackup(&recovered_gradido_key_pair)) + if (!user->tryLoadPassphraseUserBackup(&recovered_gradido_key_pair)) { - if (user->setGradidoKeyPair(recovered_gradido_key_pair)) + if (user->setGradidoKeyPair(recovered_gradido_key_pair)) { user->getModel()->updatePrivkey(); } - } - else + } + else { addError(new Error(function_name, "user cannot decrypt private key")); return false; } } - + MemoryBin* sign = nullptr; - if (gradido_key_pair) + if (gradido_key_pair) { sign = gradido_key_pair->sign(bodyBytes); } - else if (recovered_gradido_key_pair) + else if (recovered_gradido_key_pair) { sign = recovered_gradido_key_pair->sign(bodyBytes); } - if (!sign) + if (!sign) { ErrorManager::getInstance()->sendErrorsAsEmail(); addError(new Error(function_name, "error by calculate signature")); @@ -457,7 +457,7 @@ namespace model { mm->releaseMemory(sign); updateRequestInDB(); - + return ifEnoughSignsProceed(user); } @@ -509,7 +509,7 @@ namespace model { // check if all signatures belong to current body bytes auto body_bytes = mProtoTransaction.body_bytes(); - for (auto it = sig_map.sigpair().begin(); it != sig_map.sigpair().end(); it++) + for (auto it = sig_map.sigpair().begin(); it != sig_map.sigpair().end(); it++) { KeyPairEd25519 key_pair((const unsigned char*)it->pubkey().data()); if (!key_pair.verify(body_bytes, it->ed25519())) { @@ -537,7 +537,7 @@ namespace model { addError(new ParamError(function_name, "user public key has invalid size: ", pubkey_size)); return false; } - for (auto it = sig_pairs.begin(); it != sig_pairs.end(); it++) + for (auto it = sig_pairs.begin(); it != sig_pairs.end(); it++) { if (it->pubkey().size() != KeyPairEd25519::getPublicKeySize()) { addError(new ParamError(function_name, "signed public key has invalid length: ", it->pubkey().size())); @@ -589,7 +589,7 @@ namespace model { static const char* function_name = "Transaction::runSendTransaction"; auto result = validate(); if (TRANSACTION_VALID_OK != result) { - if ( TRANSACTION_VALID_MISSING_SIGN == result || TRANSACTION_VALID_CODE_ERROR == result + if ( TRANSACTION_VALID_MISSING_SIGN == result || TRANSACTION_VALID_CODE_ERROR == result || TRANSACTION_VALID_MISSING_PARAM == result || TRANSCATION_VALID_INVALID_PUBKEY == result || TRANSACTION_VALID_INVALID_SIGN == result) { addError(new ParamError(function_name, "code error", TransactionValidationToString(result))); @@ -599,20 +599,20 @@ namespace model { addError(new ParamError(function_name, "validation return: ", TransactionValidationToString(result))); //sendErrorsAsEmail(); } - else + else { - + std::string error_name; std::string error_description; auto lm = LanguageManager::getInstance(); auto user_model = getUser()->getModel(); auto t = lm->getFreeCatalog(lm->languageFromString(user_model->getLanguageKey())); switch (result) { - case TRANSACTION_VALID_FORBIDDEN_SIGN: + case TRANSACTION_VALID_FORBIDDEN_SIGN: error_name = t->gettext_str("Signature Error"); error_description = t->gettext_str("Invalid signature!"); break; - case TRANSACTION_VALID_INVALID_TARGET_DATE: + case TRANSACTION_VALID_INVALID_TARGET_DATE: error_name = t->gettext_str("Creation Error"); error_description = t->gettext_str("Invalid target date! No future and only 3 month in the past."); break; @@ -628,7 +628,7 @@ namespace model { error_name = t->gettext_str("Group Error"); error_description = t->gettext_str("Invalid Group Alias! I didn't know group, please check alias and try again."); break; - default: + default: error_name = t->gettext_str("Unknown Error"); error_description = t->gettext_str("Admin gets an E-Mail"); addError(new ParamError(function_name, "unknown error", TransactionValidationToString(result))); @@ -738,7 +738,7 @@ namespace model { auto hedera_precheck_code_string = hedera_transaction_response->getPrecheckCodeString(); auto precheck_code = hedera_transaction_response->getPrecheckCode(); auto cost = hedera_transaction_response->getCost(); - + // for showing in docker std::clog << "hedera response: " << hedera_precheck_code_string << ", cost: " << cost @@ -791,7 +791,7 @@ namespace model { return -4; } return 0; - + } int Transaction::runSendTransactionMysql() { @@ -807,10 +807,10 @@ namespace model { auto base_64_message = DataTypeConverter::binToBase64(raw_message, sodium_base64_VARIANT_URLSAFE_NO_PADDING); if (base_64_message == "") { - addError(new Error(function_name, "error convert final transaction to base64")); + addError(new Error(function_name, "error convert final transaction to base64")); return -7; } - + // create json request auto user = getUser(); @@ -834,7 +834,7 @@ namespace model { } return 1; } - + getErrors(&json_request); return -1; @@ -888,8 +888,8 @@ namespace model { return json_message; } - - + + /// TASK //////////////////////// SendTransactionTask::SendTransactionTask(Poco::AutoPtr transaction) : UniLib::controller::CPUTask(ServerConfig::g_CPUScheduler), mTransaction(transaction) @@ -938,4 +938,4 @@ namespace model { } } -} \ No newline at end of file +} diff --git a/login_server/src/cpp/model/gradido/Transaction.h b/login_server/src/cpp/model/gradido/Transaction.h index 9ff59100e..87dd487a2 100644 --- a/login_server/src/cpp/model/gradido/Transaction.h +++ b/login_server/src/cpp/model/gradido/Transaction.h @@ -3,23 +3,23 @@ /* * @author: Dario Rekowski - * + * * @date: 12.10.2020 - * - * @brief: mainly for signing gradido transaction + * + * @brief: mainly for signing gradido transaction */ -#include "../../proto/gradido/GradidoTransaction.pb.h" +#include "proto/gradido/GradidoTransaction.pb.h" #include "TransactionBody.h" #include "../../tasks/GradidoTask.h" #include "../../controller/User.h" -#include "../tasks/CPUTask.h" +#include "../../tasks/CPUTask.h" namespace model { namespace gradido { - + class Transaction : public GradidoTask { @@ -32,21 +32,21 @@ namespace model { // groupMemberUpdate static Poco::AutoPtr createGroupMemberUpdate(Poco::AutoPtr user, Poco::AutoPtr group); //! \brief transfer - //! \return + //! \return static Poco::AutoPtr createTransfer( - Poco::AutoPtr sender, - const MemoryBin* receiverPubkey, - Poco::AutoPtr receiverGroup, - Poco::UInt32 amount, - const std::string& memo, + Poco::AutoPtr sender, + const MemoryBin* receiverPubkey, + Poco::AutoPtr receiverGroup, + Poco::UInt32 amount, + const std::string& memo, BlockchainType blockchainType, bool inbound = true); Poco::AutoPtr createTransfer( - const MemoryBin* senderPubkey, + const MemoryBin* senderPubkey, Poco::AutoPtr receiver, - std::string senderGroupAlias, - Poco::UInt32 amount, + std::string senderGroupAlias, + Poco::UInt32 amount, const std::string& memo, BlockchainType blockchainType); @@ -66,7 +66,7 @@ namespace model { //! \brief validate and if valid send transaction via Hedera Consensus Service to node server int runSendTransaction(); - + inline Poco::AutoPtr getTransactionBody() { Poco::ScopedLock _lock(mWorkMutex); return mTransactionBody; } //! \brief get current body bytes from proto transaction and save it into db diff --git a/login_server/src/cpp/model/gradido/TransactionBase.h b/login_server/src/cpp/model/gradido/TransactionBase.h index bea79c971..a2f97ab97 100644 --- a/login_server/src/cpp/model/gradido/TransactionBase.h +++ b/login_server/src/cpp/model/gradido/TransactionBase.h @@ -11,11 +11,11 @@ #pragma warning(disable:4800) -#include "../lib/NotificationList.h" -#include "../proto/gradido/BasicTypes.pb.h" -#include "../SingletonManager/MemoryManager.h" +#include "../../lib/NotificationList.h" +#include "proto/gradido/BasicTypes.pb.h" +#include "../../SingletonManager/MemoryManager.h" -#include "../controller/User.h" +#include "../../controller/User.h" namespace model { namespace gradido { @@ -40,7 +40,7 @@ namespace model { public: TransactionBase(const std::string& memo); virtual ~TransactionBase(); - //! \return 0 if ok, < 0 if error, > 0 if not implemented + //! \return 0 if ok, < 0 if error, > 0 if not implemented virtual int prepare() = 0; virtual TransactionValidation validate() = 0; @@ -72,4 +72,4 @@ namespace model { -#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_BASE_INCLUDE \ No newline at end of file +#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_BASE_INCLUDE diff --git a/login_server/src/cpp/model/gradido/TransactionBody.h b/login_server/src/cpp/model/gradido/TransactionBody.h index 92ad2f2b5..af7d97b27 100644 --- a/login_server/src/cpp/model/gradido/TransactionBody.h +++ b/login_server/src/cpp/model/gradido/TransactionBody.h @@ -7,7 +7,7 @@ #include "TransactionCreation.h" #include "TransactionTransfer.h" -#include "../../proto/gradido/TransactionBody.pb.h" +#include "proto/gradido/TransactionBody.pb.h" #include "../../lib/MultithreadContainer.h" @@ -39,24 +39,24 @@ namespace model { //! \brief GroupMemberUpdate Transaction static Poco::AutoPtr create(const std::string& memo, Poco::AutoPtr user, proto::gradido::GroupMemberUpdate_MemberUpdateType type, const std::string& targetGroupAlias); //! \brief GradidoTransfer Transaction - //! \param group if group.isNull() it is a local transfer, else cross group transfer, + //! \param group if group.isNull() it is a local transfer, else cross group transfer, //! \param group if group is same as sender group outbound, else inbound static Poco::AutoPtr create( const std::string& memo, - Poco::AutoPtr sender, - const MemoryBin* receiverPublicKey, - Poco::UInt32 amount, + Poco::AutoPtr sender, + const MemoryBin* receiverPublicKey, + Poco::UInt32 amount, BlockchainType blockchainType, - Poco::Timestamp pairedTransactionId = Poco::Timestamp(), + Poco::Timestamp pairedTransactionId = Poco::Timestamp(), Poco::AutoPtr group = nullptr ); static Poco::AutoPtr create(const std::string& memo, const MemoryBin* senderPublicKey, Poco::AutoPtr receiver, Poco::UInt32 amount, Poco::Timestamp pairedTransactionId = Poco::Timestamp(), Poco::AutoPtr group = nullptr); static Poco::AutoPtr create(const std::string& memo, const MemoryBin* senderPublicKey, const MemoryBin* receiverPublicKey, Poco::UInt32 amount, const std::string groupAlias, TransactionTransferType transferType, Poco::Timestamp pairedTransactionId = Poco::Timestamp()); //! \brief GradidoCreation Transaction static Poco::AutoPtr create( - const std::string& memo, - Poco::AutoPtr receiver, - Poco::UInt32 amount, + const std::string& memo, + Poco::AutoPtr receiver, + Poco::UInt32 amount, Poco::DateTime targetDate, BlockchainType blockchainType ); @@ -68,7 +68,7 @@ namespace model { static const char* transactionTypeToString(TransactionType type); std::string getMemo(); void setMemo(const std::string& memo); - + bool isCreation() { Poco::ScopedLock _lock(mWorkMutex); return mType == TRANSACTION_CREATION; } bool isTransfer() { Poco::ScopedLock _lock(mWorkMutex); return mType == TRANSACTION_TRANSFER; } bool isGroupMemberUpdate() { Poco::ScopedLock _lock(mWorkMutex); return mType == TRANSACTION_GROUP_MEMBER_UPDATE; } @@ -97,4 +97,4 @@ namespace model { } } -#endif //GRADIDO_LOGIN_SERVER_MODEL_GRADIDO_TRANSACTION_BASE_H \ No newline at end of file +#endif //GRADIDO_LOGIN_SERVER_MODEL_GRADIDO_TRANSACTION_BASE_H diff --git a/login_server/src/cpp/model/gradido/TransactionCreation.h b/login_server/src/cpp/model/gradido/TransactionCreation.h index 7304f49cd..5b7e592d8 100644 --- a/login_server/src/cpp/model/gradido/TransactionCreation.h +++ b/login_server/src/cpp/model/gradido/TransactionCreation.h @@ -12,8 +12,8 @@ #pragma warning(disable:4800) #include "TransactionBase.h" -#include "../proto/gradido/GradidoCreation.pb.h" -#include "../controller/User.h" +#include "proto/gradido/GradidoCreation.pb.h" +#include "../../controller/User.h" namespace model { namespace gradido { @@ -47,4 +47,4 @@ namespace model { } -#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_CREATION_INCLUDE \ No newline at end of file +#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_CREATION_INCLUDE diff --git a/login_server/src/cpp/model/gradido/TransactionTransfer.h b/login_server/src/cpp/model/gradido/TransactionTransfer.h index 57259059f..86da71207 100644 --- a/login_server/src/cpp/model/gradido/TransactionTransfer.h +++ b/login_server/src/cpp/model/gradido/TransactionTransfer.h @@ -15,7 +15,7 @@ //#include "Transaction.h" #include "../proto/gradido/GradidoTransfer.pb.h" -#include "../controller/User.h" +#include "../../controller/User.h" namespace model { namespace gradido { @@ -81,4 +81,4 @@ namespace model { } -#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_TRANSFER_INCLUDE \ No newline at end of file +#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_TRANSFER_INCLUDE diff --git a/login_server/src/cpp/model/hedera/ConsensusCreateTopic.h b/login_server/src/cpp/model/hedera/ConsensusCreateTopic.h index b639ee305..6dbd64257 100644 --- a/login_server/src/cpp/model/hedera/ConsensusCreateTopic.h +++ b/login_server/src/cpp/model/hedera/ConsensusCreateTopic.h @@ -4,11 +4,11 @@ #include "../../SingletonManager/MemoryManager.h" #include "../../controller/HederaId.h" -#include "../../proto/hedera/ConsensusCreateTopic.pb.h" +#include "proto/hedera/ConsensusCreateTopic.pb.h" namespace model { namespace hedera { - class ConsensusCreateTopic + class ConsensusCreateTopic { public: ConsensusCreateTopic(Poco::AutoPtr autoRenewHederaAccountId, Poco::UInt32 autoRenewPeriod); @@ -29,4 +29,4 @@ namespace model { } -#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_CREATE_TOPIC_H \ No newline at end of file +#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_CREATE_TOPIC_H diff --git a/login_server/src/cpp/model/hedera/ConsensusSubmitMessage.h b/login_server/src/cpp/model/hedera/ConsensusSubmitMessage.h index d08b72279..30b18664f 100644 --- a/login_server/src/cpp/model/hedera/ConsensusSubmitMessage.h +++ b/login_server/src/cpp/model/hedera/ConsensusSubmitMessage.h @@ -1,7 +1,7 @@ #ifndef __GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_SUBMIT_MESSAGE_H #define __GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_SUBMIT_MESSAGE_H -#include "../../proto/hedera/ConsensusSubmitMessage.pb.h" +#include "proto/hedera/ConsensusSubmitMessage.pb.h" #include "../../controller/HederaId.h" namespace model { @@ -20,7 +20,7 @@ namespace model { bool validate(); - + protected: proto::ConsensusSubmitMessageTransactionBody* mConsensusMessageBody; @@ -29,4 +29,4 @@ namespace model { } } -#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_SUBMIT_MESSAGE_H \ No newline at end of file +#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_SUBMIT_MESSAGE_H diff --git a/login_server/src/cpp/model/hedera/ConsensusTopicInfo.h b/login_server/src/cpp/model/hedera/ConsensusTopicInfo.h index 123b9496b..c25819498 100644 --- a/login_server/src/cpp/model/hedera/ConsensusTopicInfo.h +++ b/login_server/src/cpp/model/hedera/ConsensusTopicInfo.h @@ -2,7 +2,7 @@ #define __GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_GET_TOPIC_INFO_RESPONSE_H #include "../proto/hedera/ConsensusTopicInfo.pb.h" -#include "../SingletonManager/MemoryManager.h" +#include "../../SingletonManager/MemoryManager.h" #include "../../lib/DataTypeConverter.h" #include "Poco/DateTime.h" @@ -31,4 +31,4 @@ namespace model } } -#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_GET_TOPIC_INFO_RESPONSE_H \ No newline at end of file +#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_GET_TOPIC_INFO_RESPONSE_H diff --git a/login_server/src/cpp/model/hedera/CryptoCreateTransaction.h b/login_server/src/cpp/model/hedera/CryptoCreateTransaction.h index 7182f3506..8cb4f9039 100644 --- a/login_server/src/cpp/model/hedera/CryptoCreateTransaction.h +++ b/login_server/src/cpp/model/hedera/CryptoCreateTransaction.h @@ -1,9 +1,9 @@ #ifndef __GRADIDO_LOGIN_MODEL_HEDERA_CRYPTO_CREATE_TRANSACTION_H #define __GRADIDO_LOGIN_MODEL_HEDERA_CRYPTO_CREATE_TRANSACTION_H -#include "../../proto/hedera/CryptoCreate.pb.h" +#include "proto/hedera/CryptoCreate.pb.h" -#include "../Crypto/KeyPairHedera.h" +#include "../../Crypto/KeyPairHedera.h" namespace model { namespace hedera { @@ -28,4 +28,4 @@ namespace model { -#endif //__GRADIDO_LOGIN_MODEL_HEDERA_CRYPTO_CREATE_TRANSACTION_H \ No newline at end of file +#endif //__GRADIDO_LOGIN_MODEL_HEDERA_CRYPTO_CREATE_TRANSACTION_H diff --git a/login_server/src/cpp/model/hedera/CryptoTransferTransaction.h b/login_server/src/cpp/model/hedera/CryptoTransferTransaction.h index 21d9bd3c3..6b1db2405 100644 --- a/login_server/src/cpp/model/hedera/CryptoTransferTransaction.h +++ b/login_server/src/cpp/model/hedera/CryptoTransferTransaction.h @@ -10,7 +10,7 @@ * */ -#include "../../proto/hedera/CryptoTransfer.pb.h" +#include "proto/hedera/CryptoTransfer.pb.h" #include "../../controller/HederaId.h" namespace model { @@ -37,4 +37,4 @@ namespace model { } -#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CRYPTO_TRANSFER_TRANSACTION_H \ No newline at end of file +#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CRYPTO_TRANSFER_TRANSACTION_H diff --git a/login_server/src/cpp/model/hedera/Query.h b/login_server/src/cpp/model/hedera/Query.h index 0f149684c..4ed22d5b4 100644 --- a/login_server/src/cpp/model/hedera/Query.h +++ b/login_server/src/cpp/model/hedera/Query.h @@ -3,14 +3,14 @@ /*! * @author: Dario Rekowski - * + * * @date: 31.08.20 - * + * * @brief: class for put together hedera querys (ask for state data, not a transaction, but needs a payment transaction) * */ -#include "../../proto/hedera/Query.pb.h" +#include "proto/hedera/Query.pb.h" #include "../../controller/NodeServer.h" #include "../../Crypto/KeyPairHedera.h" #include "TransactionBody.h" @@ -39,7 +39,7 @@ namespace model { void setResponseType(proto::ResponseType type); proto::ResponseType getResponseType(); inline bool setTransactionFee(Poco::UInt64 fee) { return mTransactionBody->updateCryptoTransferAmount(fee);} - + inline const proto::Query* getProtoQuery() const { return &mQueryProto; } std::string getConnectionString() const; @@ -57,4 +57,4 @@ namespace model { } -#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_QUERY_H \ No newline at end of file +#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_QUERY_H diff --git a/login_server/src/cpp/model/hedera/Response.h b/login_server/src/cpp/model/hedera/Response.h index ea2445774..af5a36d80 100644 --- a/login_server/src/cpp/model/hedera/Response.h +++ b/login_server/src/cpp/model/hedera/Response.h @@ -10,7 +10,7 @@ * */ -#include "../../proto/hedera/Response.pb.h" +#include "proto/hedera/Response.pb.h" #include "ConsensusTopicInfo.h" #include "TransactionReceipt.h" #include "TransactionRecord.h" @@ -23,7 +23,7 @@ namespace model { public: Response(); ~Response(); - + inline proto::Response* getResponsePtr() { return &mResponseProto; } Poco::UInt64 getAccountBalance(); std::unique_ptr getConsensusTopicInfo(); @@ -31,17 +31,17 @@ namespace model { TransactionRecord* getTransactionRecord(); Poco::UInt64 getQueryCost(); proto::ResponseCodeEnum getResponseCode(); - + inline bool isCryptoGetAccountBalanceResponse() { return mResponseProto.has_cryptogetaccountbalance(); } inline bool isConsensusGetTopicInfoResponse() { return mResponseProto.has_consensusgettopicinfo(); } protected: proto::Response mResponseProto; - + }; } } -#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_RESPONSE_H \ No newline at end of file +#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_RESPONSE_H diff --git a/login_server/src/cpp/model/hedera/Transaction.h b/login_server/src/cpp/model/hedera/Transaction.h index 63d273eb0..6ba7e9511 100644 --- a/login_server/src/cpp/model/hedera/Transaction.h +++ b/login_server/src/cpp/model/hedera/Transaction.h @@ -10,7 +10,7 @@ * */ -#include "../../proto/hedera/Transaction.pb.h" +#include "proto/hedera/Transaction.pb.h" #include "../../Crypto/KeyPairHedera.h" #include "TransactionBody.h" @@ -25,7 +25,7 @@ namespace model { bool sign(std::unique_ptr keyPairHedera, const TransactionBody* transactionBody); bool sign(std::unique_ptr keyPairHedera, std::unique_ptr transactionBody); - + inline proto::Transaction* getTransaction() { return mTransaction; } inline std::string getConnectionString() const { return mConnection.getUriWithPort(); } const controller::NodeServerConnection& getConnection() const { return mConnection; } @@ -43,4 +43,4 @@ namespace model { } -#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_H \ No newline at end of file +#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_H diff --git a/login_server/src/cpp/model/hedera/TransactionBody.h b/login_server/src/cpp/model/hedera/TransactionBody.h index b9c25d0c4..c9975a42f 100644 --- a/login_server/src/cpp/model/hedera/TransactionBody.h +++ b/login_server/src/cpp/model/hedera/TransactionBody.h @@ -17,7 +17,7 @@ #include "ConsensusCreateTopic.h" #include "ConsensusSubmitMessage.h" -#include "../../proto/hedera/TransactionBody.pb.h" +#include "proto/hedera/TransactionBody.pb.h" namespace model { namespace hedera { @@ -44,7 +44,7 @@ namespace model { bool setCryptoCreate(CryptoCreateTransaction& cryptoCreateTransaction); bool setCreateTopic(ConsensusCreateTopic& consensusCreateTopicTransaction); bool setConsensusSubmitMessage(ConsensusSubmitMessage& consensusSubmitMessageTransaction); - //bool + //bool inline const proto::TransactionBody* getProtoTransactionBody() const { return &mTransactionBody; } inline std::string getConnectionString() const { return mConnection.getUriWithPort(); } @@ -54,7 +54,7 @@ namespace model { void updateTimestamp(); protected: - + proto::TransactionBody mTransactionBody; controller::NodeServerConnection mConnection; bool mHasBody; @@ -64,4 +64,4 @@ namespace model { } -#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_BODY_H \ No newline at end of file +#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_BODY_H diff --git a/login_server/src/cpp/model/hedera/TransactionGetReceiptQuery.h b/login_server/src/cpp/model/hedera/TransactionGetReceiptQuery.h index bf035a941..725f6b33e 100644 --- a/login_server/src/cpp/model/hedera/TransactionGetReceiptQuery.h +++ b/login_server/src/cpp/model/hedera/TransactionGetReceiptQuery.h @@ -2,7 +2,7 @@ #define GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_GET_RECEIPT_QUERY_H #include "QueryHeader.h" -#include "../../proto/hedera/TransactionGetReceipt.pb.h" +#include "proto/hedera/TransactionGetReceipt.pb.h" namespace model { namespace hedera { @@ -19,11 +19,11 @@ namespace model { protected: Poco::AutoPtr mQueryHeader; proto::TransactionGetReceiptQuery mProtoReceiptQuery; - + }; } } -#endif //GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_GET_RECEIPT_QUERY_H \ No newline at end of file +#endif //GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_GET_RECEIPT_QUERY_H diff --git a/login_server/src/cpp/model/hedera/TransactionId.h b/login_server/src/cpp/model/hedera/TransactionId.h index dcc877271..3f8c5114b 100644 --- a/login_server/src/cpp/model/hedera/TransactionId.h +++ b/login_server/src/cpp/model/hedera/TransactionId.h @@ -10,7 +10,7 @@ * */ -#include "../../proto/hedera/BasicTypes.pb.h" +#include "proto/hedera/BasicTypes.pb.h" #include "Poco/JSON/Object.h" @@ -26,7 +26,7 @@ namespace model { Poco::JSON::Object::Ptr convertToJSON(); - protected: + protected: Poco::Timestamp mTransactionValidStart; union { struct { @@ -41,4 +41,4 @@ namespace model { } -#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_ID_H \ No newline at end of file +#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_ID_H diff --git a/login_server/src/cpp/model/hedera/TransactionRecord.h b/login_server/src/cpp/model/hedera/TransactionRecord.h index d14f42303..15ec1c4b3 100644 --- a/login_server/src/cpp/model/hedera/TransactionRecord.h +++ b/login_server/src/cpp/model/hedera/TransactionRecord.h @@ -1,11 +1,11 @@ #ifndef __GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_RECORD_H #define __GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_RECORD_H -#include "../../proto/hedera/TransactionRecord.pb.h" +#include "proto/hedera/TransactionRecord.pb.h" namespace model { - namespace hedera + namespace hedera { class TransactionRecord { diff --git a/login_server/src/cpp/model/hedera/TransactionResponse.h b/login_server/src/cpp/model/hedera/TransactionResponse.h index 325cbe73f..2f6293191 100644 --- a/login_server/src/cpp/model/hedera/TransactionResponse.h +++ b/login_server/src/cpp/model/hedera/TransactionResponse.h @@ -1,7 +1,7 @@ #ifndef __GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_RESPONSE_H #define __GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_RESPONSE_H -#include "../../proto/hedera/TransactionResponse.pb.h" +#include "proto/hedera/TransactionResponse.pb.h" #include "Poco/Types.h" namespace model { @@ -27,4 +27,4 @@ namespace model { -#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_RESPONSE_H \ No newline at end of file +#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_RESPONSE_H diff --git a/login_server/src/cpp/test/controller/TestHederaAccount.cpp b/login_server/src/cpp/test/controller/TestHederaAccount.cpp index 772377d2e..aaeaea723 100644 --- a/login_server/src/cpp/test/controller/TestHederaAccount.cpp +++ b/login_server/src/cpp/test/controller/TestHederaAccount.cpp @@ -1,12 +1,12 @@ #include "TestHederaAccount.h" -#include "../SingletonManager/ConnectionManager.h" +#include "../../SingletonManager/ConnectionManager.h" namespace controller { void TestHederaAccount::SetUp() { - + } - + TEST_F(TestHederaAccount, TestPick) { auto hedera_account = controller::HederaAccount::pick(ServerConfig::HEDERA_TESTNET, false); EXPECT_FALSE(hedera_account.isNull()); diff --git a/login_server/src/cpp/test/controller/TestHederaAccount.h b/login_server/src/cpp/test/controller/TestHederaAccount.h index 7e8e7843a..721ba17e8 100644 --- a/login_server/src/cpp/test/controller/TestHederaAccount.h +++ b/login_server/src/cpp/test/controller/TestHederaAccount.h @@ -1,6 +1,6 @@ #include "gtest/gtest.h" -#include "../controller/HederaAccount.h" +#include "../../controller/HederaAccount.h" namespace controller { @@ -10,4 +10,4 @@ namespace controller { void SetUp() override; }; -} \ No newline at end of file +} diff --git a/login_server/src/cpp/test/controller/TestHederaId.cpp b/login_server/src/cpp/test/controller/TestHederaId.cpp index c2fed10dd..d08dc7e59 100644 --- a/login_server/src/cpp/test/controller/TestHederaId.cpp +++ b/login_server/src/cpp/test/controller/TestHederaId.cpp @@ -1,5 +1,5 @@ #include "TestHederaId.h" -#include "../SingletonManager/ConnectionManager.h" +#include "../../SingletonManager/ConnectionManager.h" namespace controller { void TestHederaId::SetUp() diff --git a/login_server/src/cpp/test/controller/TestHederaId.h b/login_server/src/cpp/test/controller/TestHederaId.h index b6e4b574e..e19b56862 100644 --- a/login_server/src/cpp/test/controller/TestHederaId.h +++ b/login_server/src/cpp/test/controller/TestHederaId.h @@ -1,6 +1,6 @@ #include "gtest/gtest.h" -#include "../controller/HederaId.h" +#include "../../controller/HederaId.h" namespace controller { @@ -10,4 +10,4 @@ namespace controller { void SetUp() override; }; -} \ No newline at end of file +} diff --git a/login_server/src/cpp/test/crypto/TestAuthenticatedEncryption.cpp b/login_server/src/cpp/test/crypto/TestAuthenticatedEncryption.cpp index e863e773d..6c292869a 100644 --- a/login_server/src/cpp/test/crypto/TestAuthenticatedEncryption.cpp +++ b/login_server/src/cpp/test/crypto/TestAuthenticatedEncryption.cpp @@ -5,7 +5,7 @@ #include "../../lib/Profiler.h" #include "../../lib/DataTypeConverter.h" -#include "../ServerConfig.h" +#include "../../ServerConfig.h" void TestAuthenticatedEncryption::SetUp() { @@ -39,4 +39,4 @@ TEST_F(TestAuthenticatedEncryption, encryptDecryptTest) { EXPECT_EQ(std::string((const char*)*decrypted_message, decrypted_message->size()), test_message); // */ -} \ No newline at end of file +} From 8f81d81cfc63631d06f07597a36d56285346b885 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Mon, 3 May 2021 16:52:17 +0200 Subject: [PATCH 009/122] ignore parsed file message.pot --- .gitignore | 1 + login_server/src/LOCALE/messages.pot | 431 --------------------------- 2 files changed, 1 insertion(+), 431 deletions(-) delete mode 100644 login_server/src/LOCALE/messages.pot diff --git a/.gitignore b/.gitignore index 5c23ad8bd..0539fb6eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.log /node_modules/* .vscode +messages.pot diff --git a/login_server/src/LOCALE/messages.pot b/login_server/src/LOCALE/messages.pot deleted file mode 100644 index 568881671..000000000 --- a/login_server/src/LOCALE/messages.pot +++ /dev/null @@ -1,431 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-26 22:00+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:181 -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:260 -msgid "Login" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:181 -msgid "E-Mail or password isn't right, please try again!" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:190 -msgid "Passwort" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:190 -msgid "" -"Passwort wird noch berechnet, bitte versuche es in etwa 1 Minute erneut." -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:193 -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:196 -msgid "User" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:193 -msgid "Error in saved data, the server admin will look at it." -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:196 -msgid "Benutzer ist deaktiviert, kein Login möglich!" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:260 -msgid "Username and password are needed!" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:290 -#: model/Session.cpp:164 model/Session.cpp:171 model/Session.cpp:219 -#: model/Session.cpp:229 -msgid "E-Mail" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:291 -msgid "Password" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:292 -msgid " Login " -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:297 -msgid "You haven't any account yet? Please follow the link to create one." -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:299 -msgid "Create New Account" -msgstr "" - -#: F:\Gradido\gradido_stage2_local\login_server\src\cpsp\login.cpsp:303 -msgid "Passwort vergessen" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:73 -msgid "E-Mail verifizieren" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:78 -msgid "" -"Deine E-Mail wurde erfolgreich bestätigt. Du kannst nun Gradidos versenden." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:79 -msgid "Zur Startseite" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:81 -msgid "Bitte gib deinen E-Mail Verification Code ein:" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:82 -#: model/Session.cpp:187 -msgid "Email Verification Code" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:83 -msgid "Überprüfe Code" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:86 -msgid "Du hast bisher keinen Code erhalten?" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:87 -msgid "E-Mail erneut zuschicken (in Arbeit)" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:90 -msgid "Funktioniert dein E-Mail Verification Code nicht?" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:91 -msgid "Schicke uns eine E-Mail und wir kümmern uns darum: " -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\checkEmail.cpsp:92 -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:151 -msgid "E-Mail an Support schicken" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:113 -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:124 -msgid "Gib bitte hier deine E-Mail Adresse an:" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:116 -msgid "Bestätigen" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:126 -msgid "Hast du dir deine Passphrase notiert oder gemerkt?" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:131 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:206 -msgid "Ja" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:136 -msgid "Nein" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:140 -msgid "Absenden" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:145 -msgid "Dir wird eine E-Mail zugeschickt um dein Passwort zurückzusetzen." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:147 -msgid "Der Admin hat eine E-Mail bekommen und wird sich bei dir melden." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:149 -msgid "" -"Du hast bereits eine E-Mail bekommen. Bitte schau auch in dein Spam-" -"Verzeichnis nach. " -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\resetPassword.cpsp:150 -msgid "" -"Du hast wirklich keine E-Mail erhalten und auch schon ein paar Minuten " -"gewartet?" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:26 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:96 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:117 -#: model/Session.cpp:463 model/Session.cpp:475 model/Session.cpp:489 -msgid "Passphrase" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:27 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:266 -msgid "Neues Konto anlegen" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:28 -msgid "2/3" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:96 -msgid "" -"Diese Passphrase ist ungültig, bitte überprüfen oder neu " -"generieren (lassen)." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:117 -msgid "intern error please try again later" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:132 -msgid "3/3" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:135 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:138 -msgid "1/3" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:137 -msgid "Neues Passwort anlegen" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:148 -msgid "Passphrase abschreiben" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:159 -msgid "Was ist eine Passphrase?" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:160 -msgid "Deine Passphrase besteht aus den im grünen Feld angezeigten Wörtern." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:161 -msgid "Sie dient deiner Sicherheit." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:162 -msgid "" -"Du brauchst deine Passphrase um dein Konto wiederherzustellen, wenn du mal " -"dein Passwort vergessen haben solltest." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:164 -msgid "Deine Passphrase (Groß/Kleinschreibung beachten)" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:169 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:197 -msgid "Was zu tun ist:" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:170 -msgid "" -"Schreibe dir die obenstehende Passphrase von Hand auf ein Blatt " -"Papier!" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:171 -msgid "Speichere sie auf keinen Fall auf deinem Rechner oder Mobilgerät!!" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:172 -msgid "Bewahre sie an einem sicheren Ort auf!" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:174 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:285 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:290 -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:303 -msgid "Weiter" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:198 -msgid "Hast du dir deine Passphrase gemerkt?" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:199 -msgid "" -"Dann zeig es mir. Zur Unterstützung gebe ich dir deine Wörter aber in " -"anderer Reihenfolge." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:200 -msgid "Klicke sie an um sie einzusetzen." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:201 -msgid "Überprüfe dabei, ob du alle Wörter richtig geschrieben hast!" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:205 -msgid "" -"Weil du kein Javascript verwendest geht es direkt weiter. Hast du dir deine " -"Passphrase gemerkt oder aufgeschrieben?" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:252 -msgid "Deine E-Mail Adresse wurde erfolgreich bestätigt." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:256 -msgid "Neue Gradido Adresse anlegen / wiederherstellen" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:257 -msgid "" -"Möchtest du ein neues Gradido-Konto anlegen oder ein bestehendes " -"wiederherstellen?" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:273 -msgid "Bestehendes Konto wiederherstellen" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:280 -msgid "" -"Falls du ein bestehendes Konto wiederherstellen willst, gib hier deine " -"Passphrase ein:" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:297 -msgid "Konto wiederherstellen / Neues Passwort anlegen" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:299 -msgid "" -"Um dein Konto wiederherzustellen und dir ein Neues Passwort auswählen zu " -"können, tippe hier bitte die Wörter deiner Passphrase in der richtigen " -"Reihenfolge ein, welche du dir aufgeschrieben hast." -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:313 -msgid "Fehler" -msgstr "" - -#: F:\Gradido\gradido_login_server\src\cpsp\passphrase.cpsp:314 -msgid "" -"Ungültige Seite, wenn du das siehst stimmt hier etwas nicht. Bitte wende " -"dich an den Server-Admin." -msgstr "" - -#: model/Session.cpp:150 model/Session.cpp:180 model/Session.cpp:769 -#: model/Session.cpp:775 model/Session.cpp:1051 model/Session.cpp:1067 -msgid "Benutzer" -msgstr "" - -#: model/Session.cpp:150 -msgid "Eingeloggter Benutzer ist kein Admin" -msgstr "" - -#: model/Session.cpp:156 model/Session.cpp:211 -msgid "Vorname" -msgstr "" - -#: model/Session.cpp:156 model/Session.cpp:160 model/Session.cpp:211 -#: model/Session.cpp:215 -msgid "" -"Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen " -"<>&;" -msgstr "" - -#: model/Session.cpp:160 model/Session.cpp:215 -msgid "Nachname" -msgstr "" - -#: model/Session.cpp:164 model/Session.cpp:219 -msgid "Bitte gebe eine gültige E-Mail Adresse an." -msgstr "" - -#: model/Session.cpp:171 -msgid "Für diese E-Mail Adresse gibt es bereits einen Account" -msgstr "" - -#: model/Session.cpp:180 model/Session.cpp:187 -msgid "Fehler beim speichern!" -msgstr "" - -#: model/Session.cpp:229 -msgid "Für diese E-Mail Adresse gibt es bereits ein Konto" -msgstr "" - -#: model/Session.cpp:253 -msgid "Server" -msgstr "" - -#: model/Session.cpp:253 -msgid "Fehler beim speichen des Kontos bitte versuche es später noch einmal" -msgstr "" - -#: model/Session.cpp:348 model/Session.cpp:388 model/Session.cpp:956 -#: model/Session.cpp:965 -msgid "E-Mail Verification" -msgstr "" - -#: model/Session.cpp:348 -msgid "Du hast dein Konto bereits aktiviert!" -msgstr "" - -#: model/Session.cpp:388 -msgid "Falscher Code für aktiven Login" -msgstr "" - -#: model/Session.cpp:463 -msgid "Deine Passphrase ist ungütig" -msgstr "" - -#: model/Session.cpp:475 -msgid "Ein Fehler trat auf, bitte versuche es erneut" -msgstr "" - -#: model/Session.cpp:489 -msgid "Das ist nicht die richtige Passphrase." -msgstr "" - -#: model/Session.cpp:769 -msgid "Konnte Community Server nicht erreichen. E-Mail an den Admin ist raus." -msgstr "" - -#: model/Session.cpp:775 -msgid "" -"Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und " -"versuche es nochmal." -msgstr "" - -#: model/Session.cpp:956 -msgid "Konnte kein passendes Konto finden." -msgstr "" - -#: model/Session.cpp:965 -msgid "Fehler beim laden des Benutzers." -msgstr "" - -#: model/Session.cpp:1051 -msgid "Kein gültiger Benutzer, bitte logge dich erneut ein." -msgstr "" - -#: model/Session.cpp:1067 -msgid "Fehler beim generieren der Passphrase, der Admin bekommt eine E-Mail. " -msgstr "" From 92d83161841bb69047ba4ad0c4e217012d8afab3 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 4 May 2021 11:16:56 +0200 Subject: [PATCH 010/122] alpine build works --- docker-compose.override.yml | 1 - login_server/CMakeLists.txt.lib | 116 +++++++++++++----- login_server/Dockerfile.alpine-debug | 13 +- .../Dockerfile.dependencies-alpine | 6 + login_server/scripts/build_debug.sh | 17 +-- 5 files changed, 98 insertions(+), 55 deletions(-) diff --git a/docker-compose.override.yml b/docker-compose.override.yml index a95b3dde1..20ee4dfd3 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -102,4 +102,3 @@ services: volumes: frontend_node_modules: login_build_alpine: - diff --git a/login_server/CMakeLists.txt.lib b/login_server/CMakeLists.txt.lib index 89640db06..5c0d5310c 100644 --- a/login_server/CMakeLists.txt.lib +++ b/login_server/CMakeLists.txt.lib @@ -18,25 +18,92 @@ endif() include_directories( "dependencies" "dependencies/tinf/src" - "dependencies/mariadb-connector-c/include" - "dependencies/mariadb-connector-c/build/include" "dependencies/spirit-po/include" - "dependencies/grpc/include" - "dependencies/grpc/third_party/protobuf/src" - "dependencies/grpc/third_party/googletest/googletest/include" - "dependencies/poco/Crypto/include" - "dependencies/poco/Data/include" - "dependencies/poco/Util/include" - "dependencies/poco/Foundation/include" - "dependencies/poco/JSON/include" - "dependencies/poco/Net/include" - "dependencies/poco/NetSSL_OpenSSL/include" - "src/cpp/proto" + "/usr/local/include/mariadb" + "build" + "build/proto" ) +############################## config and add grpc ################################### +find_package(Protobuf REQUIRED) +include_directories(${Protobuf_INCLUDE_DIRS}) + +FIND_PACKAGE(gRPC CONFIG REQUIRED) +find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin) + +set(PROTOC_LIB_PATH "/usr/local/lib") +find_library(PROTOBUF_LIB protobufd PATHS ${PROTOC_LIB_PATH} REQUIRED) +find_library(PROTOBUF_LITE_LIB protobuf-lited PATHS ${PROTOC_LIB_PATH} REQUIRED) +find_library(PROTOC_LIB protocd PATHS ${PROTOC_LIB_PATH} REQUIRED) + +set(DEPENDENCIES_GRPC_LIB_PATH "pre_build/dependencies/grpc/lib") +find_library(GRPC_PP_REFLECTION grpc++_reflection PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) +find_library(GRPC_PP grpc++ PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) +find_library(GRPC_GPR gpr PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) +#find_library(GRPC_GRPC grpc PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) +#set(GRPC_LIBS ${GRPC_PP_REFLECTION} ${GRPC_PP} ${GRPC_GPR}) +set(PROTOBUF_LIBS ${PROTOBUF_LIB} ${PROTOBUF_LITE_LIB} ${PROTOC_LIB}) +############################## parse proto files ################################### + +FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/proto GRADIDO_PROTO_MODEL_PATH) +FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/proto/hedera/hedera-protobuf/src/main/proto HEDERA_PROTO_MODEL_PATH) +FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/build/proto PROTOBINDING_PATH) +file(MAKE_DIRECTORY ${PROTOBINDING_PATH}) +file(MAKE_DIRECTORY ${PROTOBINDING_PATH}/gradido) +file(MAKE_DIRECTORY ${PROTOBINDING_PATH}/hedera) + +FILE(GLOB DATAMODEL_GRADIDO_PROTOS "${GRADIDO_PROTO_MODEL_PATH}/gradido/*.proto") +FILE(GLOB DATAMODEL_HEDERA_PROTOS "${HEDERA_PROTO_MODEL_PATH}/*.proto") + +FOREACH(proto ${DATAMODEL_GRADIDO_PROTOS}) + FILE(TO_NATIVE_PATH ${proto} proto_native) + get_filename_component(proto_parsed ${proto} NAME_WLE) + FILE(TO_NATIVE_PATH ${PROTOBINDING_PATH}/gradido/${proto_parsed}.pb.h proto_parsed_native) + + IF(${proto_native} IS_NEWER_THAN ${proto_parsed_native}) + EXECUTE_PROCESS( + COMMAND + ${PROTOBUF_PROTOC_EXECUTABLE} + --proto_path=${GRADIDO_PROTO_MODEL_PATH} + --cpp_out=${PROTOBINDING_PATH} + ${proto_native} + RESULT_VARIABLE rv + ) + # Optional, but that can show the user if something have gone wrong with the proto generation + IF(${rv}) + MESSAGE("Generation of data model returned ${rv} for proto ${proto_native}") + ENDIF() + ENDIF() + +ENDFOREACH(proto) + +FOREACH(proto ${DATAMODEL_HEDERA_PROTOS}) + FILE(TO_NATIVE_PATH ${proto} proto_native) + get_filename_component(proto_parsed ${proto} NAME_WLE) + FILE(TO_NATIVE_PATH ${PROTOBINDING_PATH}/hedera/${proto_parsed}.pb.h proto_parsed_native) + IF(${proto_native} IS_NEWER_THAN ${proto_parsed_native}) + EXECUTE_PROCESS( + COMMAND + ${PROTOBUF_PROTOC_EXECUTABLE} + --plugin=protoc-gen-grpc=${GRPC_CPP_PLUGIN} + --proto_path=${HEDERA_PROTO_MODEL_PATH} + --proto_path=${GOOGLE_PROTOBUF_INCLUDES} + --cpp_out=${PROTOBINDING_PATH}/hedera + --grpc_out ${PROTOBINDING_PATH}/hedera + ${proto_native} + RESULT_VARIABLE rv + ) + # Optional, but that can show the user if something have gone wrong with the proto generation + IF(${rv}) + MESSAGE("Generation of data model returned ${rv} for proto ${proto_native}") + ENDIF() + ENDIF() +ENDFOREACH(proto) + +############################## include src files ################################### #set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include") FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h") @@ -54,8 +121,8 @@ FILE(GLOB MODEL_GRADIDO "src/cpp/model/gradido/*.h" "src/cpp/model/gradido/*.cpp FILE(GLOB CRYPTO "src/cpp/Crypto/*.h" "src/cpp/Crypto/*.cpp") FILE(GLOB MAIN "src/cpp/*.cpp" "src/cpp/*.c" "src/cpp/*.h") FILE(GLOB MYSQL "src/cpp/MySQL/*.cpp" "src/cpp/MySQL/*.h" "src/cpp/MySQL/Poco/*.h") -FILE(GLOB PROTO_GRADIDO "src/cpp/proto/gradido/*.cc" "src/cpp/proto/gradido/*.h") -FILE(GLOB PROTO_HEDERA "src/cpp/proto/hedera/*.cc" "src/cpp/proto/hedera/*.h") +FILE(GLOB PROTO_GRADIDO "${PROTOBINDING_PATH}/gradido/*.cc" "${PROTOBINDING_PATH}/gradido/*.h") +FILE(GLOB PROTO_HEDERA "${PROTOBINDING_PATH}/hedera/*.cc" "${PROTOBINDING_PATH}/hedera/*.h") # used only for test project FILE(GLOB TEST "src/cpp/test/*.cpp" "src/cpp/test/*.h") @@ -103,12 +170,11 @@ endif() add_executable(Gradido_LoginServer ${LOCAL_SRCS}) -############################## config and add mariadb ################################### - -find_library(MYSQL_LIBRARIES mariadbd PATHS "pre_build/dependencies/mariadb-connector-c/libmariadb/lib" REQUIRED) - +############################## find mariadb ################################### +find_library(MYSQL_LIBRARIES mariadb PATHS "/usr/local/lib/mariadb" REQUIRED) ############################## config and add poco ################################### -set(BUILD_LIB_PATH "pre_build/lib") +set(BUILD_LIB_PATH "(/usr/local/lib") + find_library(POCO_FOUNDATION_LIB PocoFoundationd PATHS ${BUILD_LIB_PATH} REQUIRED) find_library(POCO_UTIL_LIB PocoUtild PATHS ${BUILD_LIB_PATH} REQUIRED) find_library(POCO_NET_SSL_LIB PocoNetSSLd PATHS ${BUILD_LIB_PATH} REQUIRED) @@ -118,16 +184,8 @@ find_library(POCO_NET_LIB PocoNetd PATHS ${BUILD_LIB_PATH} REQUIRED) set(POCO_LIBS ${POCO_FOUNDATION_LIB} ${POCO_UTIL_LIB} ${POCO_NET_SSL_LIB} ${POCO_DATA_LIB} ${POCO_JSON_LIB} ${POCO_NET_LIB}) -############################## config and add grpc ################################### - -find_library(PROTOBUF_LIB protobufd PATHS "pre_build/dependencies/grpc/third_party/protobuf/lib" REQUIRED) -set(DEPENDENCIES_GRPC_LIB_PATH "pre_build/dependencies/grpc/lib") -find_library(GRPC_PP_REFLECTION grpc++_reflectiond PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) -find_library(GRPC_PP grpc++d PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) - -set(GRPC_LIBS, ${GRPC_PP_REFLECTION} ${GRPC_PP} ${PROTOBUF_LIB}) ############################## build login server ################################### -target_link_libraries(Gradido_LoginServer ${GRPC_LIBS} ${POCO_LIBS} ${MYSQL_LIBRARIES} sodium) +target_link_libraries(Gradido_LoginServer gRPC::grpc++ ${PROTOBUF_LIBS} ${MYSQL_LIBRARIES} ${POCO_LIBS} sodium pthread) diff --git a/login_server/Dockerfile.alpine-debug b/login_server/Dockerfile.alpine-debug index 3ca2b5da3..948d434d1 100644 --- a/login_server/Dockerfile.alpine-debug +++ b/login_server/Dockerfile.alpine-debug @@ -1,4 +1,4 @@ -FROM gradido/login_dependencies:alpine-stage2.1 as login_server_alpine_debug +FROM gradido/login_dependencies:alpine-debug-1 as login_server_alpine_debug ENV DOCKER_WORKDIR="/code" @@ -8,14 +8,7 @@ EXPOSE 1201 WORKDIR ${DOCKER_WORKDIR} COPY ./CMakeLists.txt.lib ./CMakeLists.txt -RUN ls -la ${DOCKER_WORKDIR}/pre_build && \ - ls -la ${DOCKER_WORKDIR}/pre_build/lib && \ - ls -la ${DOCKER_WORKDIR}/pre_build/dependencies && \ - ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/protobuf/lib && \ - ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/lib && \ - ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/ && \ - ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb && \ - ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb/lib +COPY ./scripts ./scripts -CMD cp -r ${DOCKER_WORKDIR}/pre_build/bin ${DOCKER_WORKDIR}/build/bin; cd scripts; ./prepare_build.sh; ./build_debug.sh; cd ..; ./build/bin/Gradido_LoginServer +CMD cd scripts; ./build_debug.sh; cd ..; ./build/bin/Gradido_LoginServer diff --git a/login_server/Dockerfiles/Dockerfile.dependencies-alpine b/login_server/Dockerfiles/Dockerfile.dependencies-alpine index ef4d74dd6..a2cc3225c 100644 --- a/login_server/Dockerfiles/Dockerfile.dependencies-alpine +++ b/login_server/Dockerfiles/Dockerfile.dependencies-alpine @@ -26,6 +26,12 @@ RUN git clone https://github.com/grpc/grpc.git --branch=v1.37.0 --recursive -j4 cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. && make -j$(nproc) && \ make install +# abseil don't install themself correctly +RUN cp -r grpc/third_party/abseil-cpp/absl /usr/local/include/ + +# protobuf libs missing after make install +RUN cp grpc/build/third_party/protobuf/*.a /usr/local/lib/ + ######### BUILD poco ############## FROM alpine-gxx-cmake as alpine-gxx-poco diff --git a/login_server/scripts/build_debug.sh b/login_server/scripts/build_debug.sh index 9f6158da8..84356018e 100755 --- a/login_server/scripts/build_debug.sh +++ b/login_server/scripts/build_debug.sh @@ -1,25 +1,12 @@ #!/bin/sh -cd ../build -cmake -DCMAKE_BUILD_TYPE=Debug .. -if [ ! -f "./bin/protoc" ] ; then - make -j$(nproc) protoc - cp ./dependencies/grpc/third_party/protobuf/bin/* ./bin/ -fi -if [ ! -f "./bin/grpc_cpp_plugin" ] ; then - make -j$(nproc) grpc_cpp_plugin - cp ./dependencies/grpc/bin/grpc_cpp_plugin ./bin/grpc_cpp_plugin -fi cd ../scripts -if [ ! -d "./src/cpp/proto/hedera" ] ; then - chmod +x unix_parse_proto.sh - ./unix_parse_proto.sh -fi + chmod +x compile_pot.sh ./compile_pot.sh cd ../build cmake -DCMAKE_BUILD_TYPE=Debug .. -make -j$(nproc) Gradido_LoginServer PageCompiler +make -j$(nproc) Gradido_LoginServer chmod +x ./bin/Gradido_LoginServer From efc7c8bc2d87dc0d40bcf0f0ad57c77273b3df06 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 4 May 2021 11:56:16 +0200 Subject: [PATCH 011/122] update release build, use also prebuild alpine dependencies --- login_server/CMakeLists.txt.lib | 38 +++++++++-------- login_server/Dockerfile | 72 +++++++++------------------------ 2 files changed, 37 insertions(+), 73 deletions(-) diff --git a/login_server/CMakeLists.txt.lib b/login_server/CMakeLists.txt.lib index 5c0d5310c..6de10f72e 100644 --- a/login_server/CMakeLists.txt.lib +++ b/login_server/CMakeLists.txt.lib @@ -31,20 +31,7 @@ include_directories(${Protobuf_INCLUDE_DIRS}) FIND_PACKAGE(gRPC CONFIG REQUIRED) find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin) -set(PROTOC_LIB_PATH "/usr/local/lib") -find_library(PROTOBUF_LIB protobufd PATHS ${PROTOC_LIB_PATH} REQUIRED) -find_library(PROTOBUF_LITE_LIB protobuf-lited PATHS ${PROTOC_LIB_PATH} REQUIRED) -find_library(PROTOC_LIB protocd PATHS ${PROTOC_LIB_PATH} REQUIRED) - -set(DEPENDENCIES_GRPC_LIB_PATH "pre_build/dependencies/grpc/lib") -find_library(GRPC_PP_REFLECTION grpc++_reflection PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) -find_library(GRPC_PP grpc++ PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) -find_library(GRPC_GPR gpr PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) -#find_library(GRPC_GRPC grpc PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) - - -#set(GRPC_LIBS ${GRPC_PP_REFLECTION} ${GRPC_PP} ${GRPC_GPR}) -set(PROTOBUF_LIBS ${PROTOBUF_LIB} ${PROTOBUF_LITE_LIB} ${PROTOC_LIB}) +set(PROTOBUF_LIBS protobuf::libprotobuf protobuf::libprotobuf-lite protobuf::libprotoc) ############################## parse proto files ################################### @@ -175,12 +162,23 @@ find_library(MYSQL_LIBRARIES mariadb PATHS "/usr/local/lib/mariadb" REQUIRED) ############################## config and add poco ################################### set(BUILD_LIB_PATH "(/usr/local/lib") -find_library(POCO_FOUNDATION_LIB PocoFoundationd PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_UTIL_LIB PocoUtild PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_NET_SSL_LIB PocoNetSSLd PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_DATA_LIB PocoDatad PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_JSON_LIB PocoJSONd PATHS ${BUILD_LIB_PATH} REQUIRED) -find_library(POCO_NET_LIB PocoNetd PATHS ${BUILD_LIB_PATH} REQUIRED) +IF(CMAKE_BUILD_TYPE MATCHES Debug) + find_library(POCO_FOUNDATION_LIB PocoFoundationd PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_UTIL_LIB PocoUtild PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_NET_SSL_LIB PocoNetSSLd PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_DATA_LIB PocoDatad PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_JSON_LIB PocoJSONd PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_NET_LIB PocoNetd PATHS ${BUILD_LIB_PATH} REQUIRED) + message("use Poco Debug libs") +ELSE() + find_library(POCO_FOUNDATION_LIB PocoFoundation PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_UTIL_LIB PocoUtil PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_NET_SSL_LIB PocoNetSSL PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_DATA_LIB PocoData PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_JSON_LIB PocoJSON PATHS ${BUILD_LIB_PATH} REQUIRED) + find_library(POCO_NET_LIB PocoNet PATHS ${BUILD_LIB_PATH} REQUIRED) + message("use Poco Release libs") +ENDIF() set(POCO_LIBS ${POCO_FOUNDATION_LIB} ${POCO_UTIL_LIB} ${POCO_NET_SSL_LIB} ${POCO_DATA_LIB} ${POCO_JSON_LIB} ${POCO_NET_LIB}) diff --git a/login_server/Dockerfile b/login_server/Dockerfile index 0c7ff2849..93ff96978 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -1,76 +1,42 @@ -######################################################################################################### -# cmake -######################################################################################################### -FROM gcc:9 as cmake-gcc-9 - -ENV DOCKER_WORKDIR="/code" -RUN mkdir -p ${DOCKER_WORKDIR} -WORKDIR ${DOCKER_WORKDIR} - -USER root - -RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 \ - && cd CMake \ - && ./bootstrap \ - && make -j${nproc} \ - && make install - - ######################################################################################################### # Build release ######################################################################################################### -From cmake-gcc-9 as release +FROM gradido/login_dependencies:alpine-release-1 as release ENV DOCKER_WORKDIR="/code" - -USER root - -RUN apt-get update \ - && apt-get -y --no-install-recommends install libboost-all-dev gettext \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - -RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} -COPY . . - -RUN cd dependencies/mariadb-connector-c && \ - mkdir build && \ - cd build && \ - cmake -DWITH_SSL=OFF .. - -RUN chmod +x compile_pot.sh && ./compile_pot.sh - +COPY ./CMakeLists.txt.lib ./CMakeLists.txt +COPY ./src ./src +COPY ./dependencies ./dependencies +COPY ./scripts ./scripts +RUN cd scripts && \ + chmod +x compile_pot.sh && \ + ./compile_pot.sh + RUN mkdir build && \ cd build && \ - cmake .. && \ - make -j$(nproc) protoc grpc_cpp_plugin - -RUN chmod +x unix_parse_proto.sh && ./unix_parse_proto.sh + cmake -DCMAKE_BUILD_TYPE=Release .. && \ + make -j$(nproc) Gradido_LoginServer -RUN cd build && \ - cmake .. && \ - make -j$(nproc) Gradido_LoginServer - -CMD ["./code"] ######################################################################################################### # run release ######################################################################################################### #From alpine:latest as login_server -FROM ubuntu:latest as login_server +FROM alpine:3.13.5 as login_server USER root WORKDIR "/usr/bin" -RUN apt-get update \ - && apt-get -y --no-install-recommends install libsodium-dev libssl-dev \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - COPY --from=release /code/build/bin/Gradido_LoginServer /usr/bin/ -COPY --from=release /code/build/lib/*.so.64 /usr/lib/ -COPY --from=release /code/build/dependencies/mariadb-connector-c/libmariadb/libmariadb.so.3 /usr/lib/ -#COPY --from=release /code/build/lib/libmariadb.so.3 /usr/lib/ + +COPY --from=release /usr/local/lib/mariadb/libmariadb.so.3 /usr/local/lib/ +COPY --from=release /usr/local/lib/libPoco* /usr/local/lib/ +COPY --from=release /usr/lib/libsodium.so.23 /usr/lib/ +COPY --from=release /usr/lib/libstdc++.so.6 /usr/lib/ +COPY --from=release /usr/lib/libgcc_s.so.1 /usr/lib/ + RUN chmod +x /usr/bin/Gradido_LoginServer ENTRYPOINT ["/usr/bin/Gradido_LoginServer"] From 2b3dbc1fc5d9e4297e56362bf297fa0c6d8916c9 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 4 May 2021 12:02:48 +0200 Subject: [PATCH 012/122] use alpine build in test --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 295a3b638..8a1c00e1f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,7 +50,7 @@ jobs: ########################################################################## - name: login server | Build `test` image run: | - docker build --target login_server_debug -t "gradido/login_server:test" -f ./login_server/Dockerfile.debug login_server/ + docker build --target login_server_alpine_debug -t "gradido/login_server:test" -f ./login_server/Dockerfile.alpine-debug login_server/ docker save "gradido/login_server:test" > /tmp/login_server.tar - name: Upload Artifact uses: actions/upload-artifact@v2 From ab6c6160f9707fde365753f9bd4b2cd5cc00f14b Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 4 May 2021 12:04:46 +0200 Subject: [PATCH 013/122] don't checkout recursive because no needed for alpine build --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8a1c00e1f..5212f3e51 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -44,7 +44,7 @@ jobs: - name: Checkout code uses: actions/checkout@v2 with: - submodules: recursive + submodules: true ########################################################################## # BUILD LOGIN SERVER DOCKER IMAGE ######################################## ########################################################################## From b8f1c9c7e9ea3201c371a3b10a7b3cd2d922d9a1 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 4 May 2021 12:07:43 +0200 Subject: [PATCH 014/122] use release Docker because debug build in run step --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5212f3e51..688624549 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,7 +50,7 @@ jobs: ########################################################################## - name: login server | Build `test` image run: | - docker build --target login_server_alpine_debug -t "gradido/login_server:test" -f ./login_server/Dockerfile.alpine-debug login_server/ + docker build --target login_server -t "gradido/login_server:test" -f ./login_server/Dockerfile login_server/ docker save "gradido/login_server:test" > /tmp/login_server.tar - name: Upload Artifact uses: actions/upload-artifact@v2 From bfa9914ce43d2fac345b56dcd8e8715a294cdde1 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 4 May 2021 12:11:58 +0200 Subject: [PATCH 015/122] use recursive because else hedera protofiles are missing --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 688624549..6d854c88f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -44,7 +44,7 @@ jobs: - name: Checkout code uses: actions/checkout@v2 with: - submodules: true + submodules: recursive ########################################################################## # BUILD LOGIN SERVER DOCKER IMAGE ######################################## ########################################################################## From c407b2f38d2bac790cf430fb4210c472e7621656 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 4 May 2021 12:20:27 +0200 Subject: [PATCH 016/122] copy only needed dependencies --- login_server/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/login_server/Dockerfile b/login_server/Dockerfile index 93ff96978..bc3cb9807 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -8,7 +8,9 @@ WORKDIR ${DOCKER_WORKDIR} COPY ./CMakeLists.txt.lib ./CMakeLists.txt COPY ./src ./src -COPY ./dependencies ./dependencies +COPY ./dependencies/cmake-modules ./dependencies/cmake-modules +COPY ./dependencies/spirit-po ./dependencies/spirit-po +COPY ./dependencies/tinf ./dependencies/tinf COPY ./scripts ./scripts RUN cd scripts && \ chmod +x compile_pot.sh && \ From 6a8e0b48eaf8f6eff5baf8832f619c98a733539c Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Wed, 5 May 2021 14:01:31 +0200 Subject: [PATCH 017/122] fix visual studio build on windows --- login_server/CMakeLists.txt | 85 ++++++++++++++++++---------------- login_server/conanfile.txt | 8 +--- login_server/dependencies/poco | 2 +- 3 files changed, 46 insertions(+), 49 deletions(-) diff --git a/login_server/CMakeLists.txt b/login_server/CMakeLists.txt index bfa5fcb72..2813845ad 100644 --- a/login_server/CMakeLists.txt +++ b/login_server/CMakeLists.txt @@ -2,24 +2,20 @@ cmake_minimum_required(VERSION 3.18.2) project(Gradido_LoginServer C CXX) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin" ) -SET ( CMAKE_CXX_FLAGS "-std=c++17" ) +SET(CMAKE_CXX_FLAGS "-std=c++17" ) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -if(WIN32) +IF(WIN32) set(CMAKE_CXX_FLAGS "/MP /EHsc") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3") - set(CMAKE_CXX_FLAGS_RELEASE "-O3") -else() - set(INSTALL_BINDIR "bin") - set(INSTALL_PLUGINDIR "bin") -endif() -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ./lib) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ./lib) +ENDIF() + +set(INSTALL_BINDIR "bin") +set(INSTALL_PLUGINDIR "bin") include_directories( "dependencies" - "dependencies/tinf/src" + "dependencies/tinf/src/" "dependencies/mariadb-connector-c/include" "dependencies/mariadb-connector-c/build/include" "dependencies/spirit-po/include" @@ -56,11 +52,10 @@ if(WIN32) endif() - set(BUILD_TESTING OFF) -set(gRPC_SSL_PROVIDER "package") +#set(gRPC_SSL_PROVIDER "package") add_subdirectory("dependencies/grpc/") -set(gRPC_SSL_PROVIDER "package") +#set(gRPC_SSL_PROVIDER "package") message(STATUS "Using gRPC via add_subdirectory.") set(GRPC_LIBS libprotobuf grpc++_reflection grpc++) @@ -77,10 +72,17 @@ file(MAKE_DIRECTORY ${PROTOBINDING_PATH}/hedera) FILE(GLOB DATAMODEL_GRADIDO_PROTOS "${GRADIDO_PROTO_MODEL_PATH}/gradido/*.proto") FILE(GLOB DATAMODEL_HEDERA_PROTOS "${HEDERA_PROTO_MODEL_PATH}/*.proto") -find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin PATHS "build/dependencies/grpc/bin" REQUIRED) -find_program(PROTOBUF_PROTOC_EXECUTABLE protoc PATHS "build/dependencies/grpc/third_party/protobuf/bin" REQUIRED) +IF(WIN32) + find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin PATHS "build/dependencies/grpc/bin/Debug") + find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin PATHS "build/dependencies/grpc/bin/Release") + find_program(PROTOBUF_PROTOC_EXECUTABLE protoc PATHS "build/dependencies/grpc/third_party/protobuf/bin/Debug" ) + find_program(PROTOBUF_PROTOC_EXECUTABLE protoc PATHS "build/dependencies/grpc/third_party/protobuf/bin/Release" ) +ELSE() + find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin PATHS "build/dependencies/grpc/bin") + find_program(PROTOBUF_PROTOC_EXECUTABLE protoc PATHS "build/dependencies/grpc/third_party/protobuf/bin" ) +ENDIF() FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dependencies/grpc/third_party/protobuf/src GOOGLE_PROTOBUF_INCLUDES) - +MESSAGE("protoc: ${PROTOBUF_PROTOC_EXECUTABLE} in build/dependencies/grpc/bin/${CMAKE_BUILD_TYPE}") FOREACH(proto ${DATAMODEL_GRADIDO_PROTOS}) FILE(TO_NATIVE_PATH ${proto} proto_native) get_filename_component(proto_parsed ${proto} NAME_WLE) @@ -129,8 +131,6 @@ ENDFOREACH(proto) ############################## bind source files ################################### -#set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include") - FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h") FILE(GLOB TINF "dependencies/tinf/src/*.c" "dependencies/tinf/src/*.h") FILE(GLOB HTTPInterface "src/cpp/HTTPInterface/*.h" "src/cpp/HTTPInterface/*.cpp") @@ -146,8 +146,8 @@ FILE(GLOB MODEL_GRADIDO "src/cpp/model/gradido/*.h" "src/cpp/model/gradido/*.cpp FILE(GLOB CRYPTO "src/cpp/Crypto/*.h" "src/cpp/Crypto/*.cpp") FILE(GLOB MAIN "src/cpp/*.cpp" "src/cpp/*.c" "src/cpp/*.h") FILE(GLOB MYSQL "src/cpp/MySQL/*.cpp" "src/cpp/MySQL/*.h" "src/cpp/MySQL/Poco/*.h") -FILE(GLOB PROTO_GRADIDO "${PROTOBINDING_PATH}/gradido/*.cc" "${PROTOBINDING_PATH}/gradido/*.h") -FILE(GLOB PROTO_HEDERA "${PROTOBINDING_PATH}/hedera/*.cc" "${PROTOBINDING_PATH}/hedera/*.h") +FILE(GLOB PROTO_GRADIDO "build/proto/gradido/*.cc" "build/proto/gradido/*.h") +FILE(GLOB PROTO_HEDERA "build/proto/hedera/*.cc" "build/proto/hedera/*.h") # used only for test project FILE(GLOB TEST "src/cpp/test/*.cpp" "src/cpp/test/*.h") @@ -193,6 +193,11 @@ if(MSVC) source_group("Test" FILES ${TEST}) endif() + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + + add_executable(Gradido_LoginServer ${LOCAL_SRCS}) ############################## config and add mariadb ################################### @@ -217,10 +222,10 @@ add_subdirectory("dependencies/mariadb-connector-c") set(DEP_PATH "dependencies") set(MARIADB_CONNECTOR_PATH "${DEP_PATH}/mariadb-connector-c/build/libmariadb") -if(WIN32) - find_library(MYSQL_LIBRARIES mariadbclient PATHS "${MARIADB_CONNECTOR_PATH}/Release" REQUIRED) - find_library(COMPILED_MARIADB_CLIENT_DEBUG mariadbclient PATHS "${MARIADB_CONNECTOR_PATH}/Debug" REQUIRED) -endif() +#if(WIN32) + #find_library(MYSQL_LIBRARIES mariadbclient PATHS "${MARIADB_CONNECTOR_PATH}/Release" REQUIRED) + #find_library(COMPILED_MARIADB_CLIENT_DEBUG mariadbclient PATHS "${MARIADB_CONNECTOR_PATH}/Debug" REQUIRED) +#endif() ############################## config and add poco ################################### #SET(SOME_EXPAT_OPTION OFF CACHE BOOL "Use some expat option") @@ -235,17 +240,15 @@ set(POCO_LIBS PocoFoundation PocoUtil PocoNet PocoNetSSL PocoData) ############################## build login server ################################### -if(UNIX) - set(INSTALL_BINDIR "bin") - set(INSTALL_PLUGINDIR "bin") -endif() -target_link_libraries(Gradido_LoginServer ${GRPC_LIBS} ${POCO_LIBS} sodium) + +target_link_libraries(Gradido_LoginServer ${GRPC_LIBS} ${POCO_LIBS}) if(WIN32) - TARGET_LINK_LIBRARIES(Gradido_LoginServer optimized ${MYSQL_LIBRARIES} Shlwapi) - TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi) + target_link_libraries(Gradido_LoginServer ${CONAN_LIBS}) + #TARGET_LINK_LIBRARIES(Gradido_LoginServer optimized ${MYSQL_LIBRARIES} Shlwapi) + #TARGET_LINK_LIBRARIES(Gradido_LoginServer debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi) else() # unix - target_link_libraries(Gradido_LoginServer libmariadb) + target_link_libraries(Gradido_LoginServer libmariadb sodium) endif() # install @@ -260,26 +263,26 @@ install(DIRECTORY src/LOCALE DESTINATION /etc/grd_login/ endif(UNIX) - +enable_testing() # ---------------------- Test ----------------------------------------- -add_subdirectory("dependencies/grpc/third_party/googletest") -enable_testing() #project(Gradido_LoginServer_Test C CXX) #_TEST_BUILD - +#find_package(gtest) add_executable(Gradido_LoginServer_Test ${LOCAL_SRCS} ${LOCAL_TEST_SRC}) target_compile_definitions(Gradido_LoginServer_Test PUBLIC "_TEST_BUILD") -target_link_libraries(Gradido_LoginServer_Test ${POCO_LIBS} ${GRPC_LIBS} sodium gtest) +target_link_libraries(Gradido_LoginServer_Test ${GRPC_LIBS} ${POCO_LIBS}) if(WIN32) - TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test optimized ${MYSQL_LIBRARIES} Shlwapi) - TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${COMPILED_MARIADB_CLIENT_DEBUG} ${PROTOBUF_DEBUG_LIBS} Shlwapi) + target_link_libraries(Gradido_LoginServer_Test ${CONAN_LIBS} ) + #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() - target_link_libraries(Gradido_LoginServer_Test libmariadb ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS}) + target_link_libraries(Gradido_LoginServer_Test libmariadb sodium) endif() add_test(NAME main COMMAND Gradido_LoginServer_Test) diff --git a/login_server/conanfile.txt b/login_server/conanfile.txt index ae0fcd97b..5f7e8f608 100644 --- a/login_server/conanfile.txt +++ b/login_server/conanfile.txt @@ -1,13 +1,7 @@ [requires] -Poco/1.9.4@pocoproject/stable libsodium/1.0.18@bincrafters/stable boost/1.71.0@conan/stable -gtest/1.8.1@bincrafters/stable +libressl/3.2.1 [generators] cmake - -[options] -Poco:enable_data_sqlite=False -Poco:enable_mongodb=False -Poco:enable_redis=False diff --git a/login_server/dependencies/poco b/login_server/dependencies/poco index 3fc3e5f5b..b95393dcc 160000 --- a/login_server/dependencies/poco +++ b/login_server/dependencies/poco @@ -1 +1 @@ -Subproject commit 3fc3e5f5b8462f7666952b43381383a79b8b5d92 +Subproject commit b95393dcc3640807838e8323b4e600e54d2e8116 From 14324649c837a0a132a716a780864873da86cca0 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Thu, 6 May 2021 14:52:59 +0000 Subject: [PATCH 018/122] update auto-generated transactions/add function to produce a transaction with valid txhash --- .../src/Controller/TransactionsController.php | 13 +++-- .../src/Model/Table/TransactionsTable.php | 54 +++++++++++++++++++ .../src/Template/Transactions/add.ctp | 3 +- 3 files changed, 65 insertions(+), 5 deletions(-) diff --git a/community_server/src/Controller/TransactionsController.php b/community_server/src/Controller/TransactionsController.php index 4f8e04c2b..90e78b7fb 100644 --- a/community_server/src/Controller/TransactionsController.php +++ b/community_server/src/Controller/TransactionsController.php @@ -313,15 +313,20 @@ class TransactionsController extends AppController if ($this->request->is('post')) { $transaction = $this->Transactions->patchEntity($transaction, $this->request->getData()); if ($this->Transactions->save($transaction)) { - $this->Flash->success(__('The transaction has been saved.')); - - return $this->redirect(['action' => 'index']); + $result = $this->Transactions->updateTxHash($transaction, 'start decay'); + if($result === true) { + $this->Flash->success(__('The transaction has been saved.')); + return $this->redirect(['action' => 'index']); + } else { + $this->Flash->error(__('Error by saving: ' . json_encode($result))); + } } $this->Flash->error(__('The transaction could not be saved. Please, try again.')); } $stateGroups = $this->Transactions->StateGroups->find('list', ['limit' => 200]); $transactionTypes = $this->Transactions->TransactionTypes->find('list', ['limit' => 200]); - $this->set(compact('transaction', 'stateGroups', 'transactionTypes')); + $blockchainTypes = $this->Transactions->BlockchainTypes->find('list'); + $this->set(compact('transaction', 'stateGroups', 'transactionTypes', 'blockchainTypes')); } /** diff --git a/community_server/src/Model/Table/TransactionsTable.php b/community_server/src/Model/Table/TransactionsTable.php index 893482e3f..fdd437076 100644 --- a/community_server/src/Model/Table/TransactionsTable.php +++ b/community_server/src/Model/Table/TransactionsTable.php @@ -266,4 +266,58 @@ class TransactionsTable extends Table return $final_transactions; } + + public function updateTxHash($transaction, $signatureMapString) + { + $transaction_id = $transaction->id; + $previousTxHash = null; + if($transaction_id > 1) { + try { + $previousTransaction = $this + ->find('all', ['contain' => false]) + ->select(['tx_hash']) + ->where(['id' => $transaction_id - 1]) + ->first(); + /*$previousTransaction = $transactionsTable->get($this->mTransactionID - 1, [ + 'contain' => false, + 'fields' => ['tx_hash'] + ]);*/ + } catch(Cake\Datasource\Exception\RecordNotFoundException $ex) { + return ['state' => 'error', 'msg' => 'previous transaction not found', 'details' => $ex->getMessage()]; + } + if(!$previousTransaction) { + // shouldn't occur + return ['state' => 'error', 'msg' => 'previous transaction not found']; + } + $previousTxHash = $previousTransaction->tx_hash; + } + try { + //$transactionEntity->received = $transactionsTable->get($transactionEntity->id, ['contain' => false, 'fields' => ['received']])->received; + $transaction->received = $this + ->find('all', ['contain' => false]) + ->where(['id' => $transaction->id]) + ->select(['received'])->first()->received; + } catch(Cake\Datasource\Exception\RecordNotFoundException $ex) { + return ['state' => 'error', 'msg' => 'current transaction not found in db', 'details' => $ex->getMessage()]; + } + + // calculate tx hash + // previous tx hash + id + received + sigMap as string + // Sodium use for the generichash function BLAKE2b today (11.11.2019), mabye change in the future + $state = \Sodium\crypto_generichash_init(); + //echo "prev hash: $previousTxHash\n"; + if($previousTxHash != null) { + \Sodium\crypto_generichash_update($state, stream_get_contents($previousTxHash)); + } + //echo "id: " . $transactionEntity->id . "\n"; + \Sodium\crypto_generichash_update($state, strval($transaction->id)); + //echo "received: " . $transactionEntity->received; + \Sodium\crypto_generichash_update($state, $transaction->received->i18nFormat('yyyy-MM-dd HH:mm:ss')); + \Sodium\crypto_generichash_update($state, $signatureMapString); + $transaction->tx_hash = \Sodium\crypto_generichash_final($state); + if ($this->save($transaction)) { + return true; + } + return ['state' => 'error', 'msg' => 'error by saving transaction', 'details' => $transaction->getErrors()]; + } } diff --git a/community_server/src/Template/Transactions/add.ctp b/community_server/src/Template/Transactions/add.ctp index 59782d944..012d82027 100644 --- a/community_server/src/Template/Transactions/add.ctp +++ b/community_server/src/Template/Transactions/add.ctp @@ -35,7 +35,8 @@ Form->control('state_group_id', ['options' => $stateGroups]); echo $this->Form->control('transaction_type_id', ['options' => $transactionTypes]); - echo $this->Form->control('received'); + echo $this->Form->control('memo', ['type' => 'textarea']); + echo $this->Form->control('blockchain_type_id', ['options' => $blockchainTypes]); ?> Form->button(__('Submit')) ?> From 4a982fc5753481beec22a5e34eeb87cd80b5f0d4 Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Thu, 6 May 2021 14:55:03 +0000 Subject: [PATCH 019/122] add new transaction type to setup script, by existing db please add the line by yourself! --- .../db/setup_db_tables/insert_transaction_types.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/community_server/db/setup_db_tables/insert_transaction_types.sql b/community_server/db/setup_db_tables/insert_transaction_types.sql index 02ef8374a..37919045d 100644 --- a/community_server/db/setup_db_tables/insert_transaction_types.sql +++ b/community_server/db/setup_db_tables/insert_transaction_types.sql @@ -6,5 +6,5 @@ INSERT INTO `transaction_types` (`id`, `name`, `text`) VALUES (5, 'group remove member', 'remove user from group, maybe he was moved elsewhere'), (6, 'hedera topic create', 'create new topic on hedera'), (7, 'hedera topic send message', 'send consensus message over hedera topic'), -(8, 'hedera account create', 'create new account on hedera for holding some founds with unencrypted keys'); - +(8, 'hedera account create', 'create new account on hedera for holding some founds with unencrypted keys'), +(9, 'decay start', 'signalize the starting point for decay calculation, allowed only once per chain'); From 0f29989c64273705fef81d8da2f317d96d6958da Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Fri, 7 May 2021 08:38:59 +0000 Subject: [PATCH 020/122] remove line, left over from stage1, led to wrong balance calculation --- community_server/src/Model/Transactions/TransactionBase.php | 1 - 1 file changed, 1 deletion(-) diff --git a/community_server/src/Model/Transactions/TransactionBase.php b/community_server/src/Model/Transactions/TransactionBase.php index a688daf02..7d1a1c18b 100644 --- a/community_server/src/Model/Transactions/TransactionBase.php +++ b/community_server/src/Model/Transactions/TransactionBase.php @@ -74,7 +74,6 @@ class TransactionBase { if($stateBalanceQuery->count() > 0) { $stateBalanceEntry = $stateBalanceQuery->first(); $stateBalanceEntry->amount = $stateBalanceEntry->partDecay($recordDate) + $addAmountCent; - $stateBalanceEntry->amount += $addAmountCent; } else { $stateBalanceEntry = $stateBalancesTable->newEntity(); $stateBalanceEntry->state_user_id = $stateUserId; From 73443e373b13c587ff569745a782028a09943124 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Fri, 7 May 2021 12:42:59 +0200 Subject: [PATCH 021/122] fix link generation --- login_server/src/cpp/controller/EmailVerificationCode.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/login_server/src/cpp/controller/EmailVerificationCode.cpp b/login_server/src/cpp/controller/EmailVerificationCode.cpp index d685fd925..77384c209 100644 --- a/login_server/src/cpp/controller/EmailVerificationCode.cpp +++ b/login_server/src/cpp/controller/EmailVerificationCode.cpp @@ -122,10 +122,10 @@ namespace controller { std::string EmailVerificationCode::getLink() { std::string link = mBaseUrl; - if (ServerConfig::g_frontend_checkEmailPath.size() > 1 && ServerConfig::g_frontend_checkEmailPath.data()[0] != '/') { - link += '/'; + if (ServerConfig::g_frontend_checkEmailPath.size() > 1) { + link = ServerConfig::g_frontend_checkEmailPath; } - link += ServerConfig::g_frontend_checkEmailPath; + if (link.data()[link.size() - 1] != '/') { link += '/'; } From 118f8308ac4fe0218c9e13ac20d0e6af10ab1f07 Mon Sep 17 00:00:00 2001 From: ogerly Date: Mon, 10 May 2021 15:04:42 +0200 Subject: [PATCH 022/122] Fix: QR Scanner Hide --- .../views/Pages/AccountOverview/GddSend.vue | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.vue b/frontend/src/views/Pages/AccountOverview/GddSend.vue index b7d805988..6b6eeca78 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend.vue @@ -6,6 +6,7 @@ + + @@ -39,6 +40,7 @@ + --> -
-
+
{{ $t('form.receiver') }} @@ -191,15 +193,15 @@ From 35f9c4a5b4d3633f4c9cbf33fbf87e407eabaa63 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 11 May 2021 18:58:12 +0200 Subject: [PATCH 047/122] test that em-dash is shown while balance is loading --- .../Pages/AccountOverview/GddStatus.spec.js | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/frontend/src/views/Pages/AccountOverview/GddStatus.spec.js b/frontend/src/views/Pages/AccountOverview/GddStatus.spec.js index 9adc3b4ca..b414f4e93 100644 --- a/frontend/src/views/Pages/AccountOverview/GddStatus.spec.js +++ b/frontend/src/views/Pages/AccountOverview/GddStatus.spec.js @@ -24,12 +24,30 @@ describe('GddStatus', () => { wrapper = Wrapper() }) - it('it displays the ammount of GDD', () => { - expect(wrapper.findAll('div.card-body').at(0).text()).toEqual('1234 GDD') + describe('balance is loading', () => { + it('it displays em-dash as the ammount of GDD', () => { + expect(wrapper.findAll('div.card-body').at(0).text()).toEqual('— GDD') + }) + + it('it displays em-dash as the ammount of GDT', () => { + expect(wrapper.findAll('div.card-body').at(1).text()).toEqual('— GDT') + }) }) - it('it displays the ammount of GDT', () => { - expect(wrapper.findAll('div.card-body').at(1).text()).toEqual('9876 GDT') + describe('balance is loaded', () => { + beforeEach(() => { + wrapper.setProps({ + pending: false, + }) + }) + + it('it displays the ammount of GDD', () => { + expect(wrapper.findAll('div.card-body').at(0).text()).toEqual('1234 GDD') + }) + + it('it displays the ammount of GDT', () => { + expect(wrapper.findAll('div.card-body').at(1).text()).toEqual('9876 GDT') + }) }) }) }) From b60537c8984b01228d261e880254b76c9dbaee4a Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 11 May 2021 19:45:16 +0200 Subject: [PATCH 048/122] test sidebar component --- .../components/SidebarPlugin/SideBar.spec.js | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 frontend/src/components/SidebarPlugin/SideBar.spec.js diff --git a/frontend/src/components/SidebarPlugin/SideBar.spec.js b/frontend/src/components/SidebarPlugin/SideBar.spec.js new file mode 100644 index 000000000..f15e3ab0c --- /dev/null +++ b/frontend/src/components/SidebarPlugin/SideBar.spec.js @@ -0,0 +1,102 @@ +import { mount, RouterLinkStub } from '@vue/test-utils' +import SideBar from './SideBar' + +const localVue = global.localVue + +describe('SideBar', () => { + let wrapper + + const stubs = { + RouterLink: RouterLinkStub, + } + + const propsData = { + balance: 1234.56, + } + + const mocks = { + $store: { + state: { + email: 'test@example.org', + }, + }, + $i18n: { + locale: 'en', + }, + $t: jest.fn((t) => t), + $n: jest.fn((n) => n), + } + + const Wrapper = () => { + return mount(SideBar, { localVue, mocks, stubs, propsData }) + } + + describe('mount', () => { + beforeEach(() => { + wrapper = Wrapper() + }) + + it('renders the component', () => { + expect(wrapper.find('#sidenav-main').exists()).toBeTruthy() + }) + + describe('balance', () => { + it('shows em-dash as balance while loading', () => { + expect(wrapper.find('div.row.text-center').text()).toBe('— GDD') + }) + + it('shows the when loaded', async () => { + wrapper.setProps({ + pending: false, + }) + await wrapper.vm.$nextTick() + expect(wrapper.find('div.row.text-center').text()).toBe('1234.56 GDD') + }) + }) + + describe('navbar button', () => { + it('has a navbar button', () => { + expect(wrapper.find('button.navbar-toggler').exists()).toBeTruthy() + }) + }) + + describe('static menu items', () => { + describe("member's area", () => { + it('has a link to the elopage', () => { + expect(wrapper.findAll('li').at(0).text()).toBe('members_area') + }) + + it('links to the elopage', () => { + expect(wrapper.findAll('li').at(0).find('a').attributes('href')).toBe( + 'https://elopage.com/s/gradido/sign_in?locale=en', + ) + }) + + describe('with locale="de"', () => { + beforeEach(() => { + mocks.$i18n.locale = 'de' + }) + + it('links to the German elopage when locale is set to de', () => { + expect(wrapper.findAll('li').at(0).find('a').attributes('href')).toBe( + 'https://elopage.com/s/gradido/sign_in?locale=de', + ) + }) + }) + }) + + describe('logout', () => { + it('has a logout button', () => { + expect(wrapper.findAll('li').at(1).text()).toBe('logout') + }) + + it.skip('emits logout when logout is clicked', async () => { + const spy = jest.spyOn(wrapper.vm, 'logout') + wrapper.findAll('li').at(1).find('a').trigger('click') + await wrapper.vm.$nextTick() + expect(spy).toHaveBeenCalled() + }) + }) + }) + }) +}) From bb0a0d607cee1347856c5b023fd6c1fc66916ee2 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 11 May 2021 20:09:32 +0200 Subject: [PATCH 049/122] finish tests for sidebar --- .../components/SidebarPlugin/SideBar.spec.js | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/SidebarPlugin/SideBar.spec.js b/frontend/src/components/SidebarPlugin/SideBar.spec.js index f15e3ab0c..cc56b00f1 100644 --- a/frontend/src/components/SidebarPlugin/SideBar.spec.js +++ b/frontend/src/components/SidebarPlugin/SideBar.spec.js @@ -58,6 +58,22 @@ describe('SideBar', () => { it('has a navbar button', () => { expect(wrapper.find('button.navbar-toggler').exists()).toBeTruthy() }) + + it('calls showSidebar when clicked', async () => { + const spy = jest.spyOn(wrapper.vm.$sidebar, 'displaySidebar') + wrapper.find('button.navbar-toggler').trigger('click') + await wrapper.vm.$nextTick() + expect(spy).toHaveBeenCalledWith(true) + }) + }) + + describe('close siedbar', () => { + it('calls closeSidebar when clicked', async () => { + const spy = jest.spyOn(wrapper.vm.$sidebar, 'displaySidebar') + wrapper.find('#sidenav-collapse-main').find('button.navbar-toggler').trigger('click') + await wrapper.vm.$nextTick() + expect(spy).toHaveBeenCalledWith(false) + }) }) describe('static menu items', () => { @@ -90,11 +106,10 @@ describe('SideBar', () => { expect(wrapper.findAll('li').at(1).text()).toBe('logout') }) - it.skip('emits logout when logout is clicked', async () => { - const spy = jest.spyOn(wrapper.vm, 'logout') + it('emits logout when logout is clicked', async () => { wrapper.findAll('li').at(1).find('a').trigger('click') await wrapper.vm.$nextTick() - expect(spy).toHaveBeenCalled() + expect(wrapper.emitted('logout')).toEqual([[]]) }) }) }) From 8eb4364f64dea43e213dff61ed973427ce98c83b Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 May 2021 01:19:08 +0200 Subject: [PATCH 050/122] make qr code scanner a component --- .../views/Pages/AccountOverview/GddSend.vue | 67 +++---------------- .../Pages/AccountOverview/GddSend/QrCode.vue | 65 ++++++++++++++++++ 2 files changed, 74 insertions(+), 58 deletions(-) create mode 100644 frontend/src/views/Pages/AccountOverview/GddSend/QrCode.vue diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.vue b/frontend/src/views/Pages/AccountOverview/GddSend.vue index 7c78f993c..68457d460 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend.vue @@ -6,42 +6,7 @@ - - + From 5155318dd32b06a683e813a2b58563549d504372 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 May 2021 01:52:27 +0200 Subject: [PATCH 051/122] make transaction form a component --- .../views/Pages/AccountOverview/GddSend.vue | 164 ++--------------- .../Pages/AccountOverview/GddSend/QrCode.vue | 2 +- .../GddSend/TransactionForm.vue | 168 ++++++++++++++++++ 3 files changed, 181 insertions(+), 153 deletions(-) create mode 100644 frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.vue b/frontend/src/views/Pages/AccountOverview/GddSend.vue index 68457d460..c01650139 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend.vue @@ -1,133 +1,10 @@ - From d5a6927ff37ce6a2e6b5a1e749a94fc1e31dd8cb Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 May 2021 02:59:24 +0200 Subject: [PATCH 054/122] tests are running again --- .../Pages/AccountOverview/GddSend.spec.js | 106 +-------------- .../GddSend/TransactionForm.spec.js | 121 ++++++++++++++++++ .../GddSend/TransactionForm.vue | 2 +- 3 files changed, 128 insertions(+), 101 deletions(-) create mode 100644 frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.spec.js diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.spec.js b/frontend/src/views/Pages/AccountOverview/GddSend.spec.js index d7130aeca..c7005ddf5 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.spec.js +++ b/frontend/src/views/Pages/AccountOverview/GddSend.spec.js @@ -1,29 +1,18 @@ import { mount } from '@vue/test-utils' import GddSend from './GddSend' -import Vuex from 'vuex' const localVue = global.localVue describe('GddSend', () => { let wrapper - const state = { - user: { - balance: 1234, - balance_gdt: 9876, - }, - } - - const store = new Vuex.Store({ - state, - }) - const mocks = { - // $n: jest.fn((n) => n), $t: jest.fn((t) => t), - $moment: jest.fn((m) => ({ - format: () => m, - })), + $store: { + state: { + sessionId: 1234, + }, + }, $i18n: { locale: jest.fn(() => 'en'), }, @@ -31,7 +20,7 @@ describe('GddSend', () => { } const Wrapper = () => { - return mount(GddSend, { localVue, store, mocks }) + return mount(GddSend, { localVue, mocks }) } describe('mount', () => { @@ -42,88 +31,5 @@ describe('GddSend', () => { it('renders the component', () => { expect(wrapper.find('div.gdd-send').exists()).toBeTruthy() }) - - describe('warning messages', () => { - it('has a warning message', () => { - expect(wrapper.find('div.alert-default').find('span').text()).toBe('form.attention') - }) - }) - - describe('transaction form', () => { - describe('email field', () => { - it('has an input field of type email', () => { - expect(wrapper.find('#input-group-1').find('input').attributes('type')).toBe('email') - }) - - it('has an envelope icon', () => { - expect(wrapper.find('#input-group-1').find('svg').attributes('aria-label')).toBe( - 'envelope', - ) - }) - - it('has a label form.receiver', () => { - expect(wrapper.findAll('div.text-left').at(0).text()).toBe('form.receiver') - }) - - it('has a placeholder "E-Mail"', () => { - expect(wrapper.find('#input-group-1').find('input').attributes('placeholder')).toBe( - 'E-Mail', - ) - }) - }) - - describe('ammount field', () => { - it('has an input field of type number', () => { - expect(wrapper.find('#input-group-2').find('input').attributes('type')).toBe('number') - }) - - it('has an GDD text icon', () => { - expect(wrapper.find('#input-group-2').find('div.h3').text()).toBe('GDD') - }) - - it('has a label form.amount', () => { - expect(wrapper.findAll('div.text-left').at(1).text()).toBe('form.amount') - }) - - it('has a placeholder "0.01"', () => { - expect(wrapper.find('#input-group-2').find('input').attributes('placeholder')).toBe( - '0.01', - ) - }) - }) - - describe('message text box', () => { - it('has an textarea field', () => { - expect(wrapper.find('#input-group-3').find('textarea').exists()).toBeTruthy() - }) - - it('has an chat-right-text icon', () => { - expect(wrapper.find('#input-group-3').find('svg').attributes('aria-label')).toBe( - 'chat right text', - ) - }) - - it('has a label form.memo', () => { - expect(wrapper.findAll('div.text-left').at(2).text()).toBe('form.memo') - }) - }) - - describe('cancel button', () => { - it('has a cancel button', () => { - expect(wrapper.find('button[type="reset"]').exists()).toBeTruthy() - }) - - it('has the text "form.cancel"', () => { - expect(wrapper.find('button[type="reset"]').text()).toBe('form.reset') - }) - - it.skip('clears the email field on click', async () => { - wrapper.find('#input-group-1').find('input').setValue('someone@watches.tv') - wrapper.find('button[type="reset"]').trigger('click') - await wrapper.vm.$nextTick() - expect(wrapper.vm.form.email).toBeNull() - }) - }) - }) }) }) diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.spec.js b/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.spec.js new file mode 100644 index 000000000..61656f86c --- /dev/null +++ b/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.spec.js @@ -0,0 +1,121 @@ +import { mount } from '@vue/test-utils' +import TransactionForm from './TransactionForm' + +const localVue = global.localVue + +describe('GddSend', () => { + let wrapper + + const mocks = { + $t: jest.fn((t) => t), + $moment: jest.fn((m) => ({ + format: () => m, + })), + $i18n: { + locale: jest.fn(() => 'en'), + }, + $n: jest.fn((n) => String(n)), + $store: { + state: { + email: 'user@example.org', + }, + }, + } + + const Wrapper = () => { + return mount(TransactionForm, { localVue, mocks }) + } + + describe('mount', () => { + beforeEach(() => { + wrapper = Wrapper() + }) + + it('renders the component', () => { + expect(wrapper.find('div.transaction-form').exists()).toBeTruthy() + }) + + describe('warning messages', () => { + it('has a warning message', () => { + expect(wrapper.find('div.alert-default').find('span').text()).toBe('form.attention') + }) + }) + + describe('transaction form', () => { + describe('email field', () => { + it('has an input field of type email', () => { + expect(wrapper.find('#input-group-1').find('input').attributes('type')).toBe('email') + }) + + it('has an envelope icon', () => { + expect(wrapper.find('#input-group-1').find('svg').attributes('aria-label')).toBe( + 'envelope', + ) + }) + + it('has a label form.receiver', () => { + expect(wrapper.findAll('div.text-left').at(0).text()).toBe('form.receiver') + }) + + it('has a placeholder "E-Mail"', () => { + expect(wrapper.find('#input-group-1').find('input').attributes('placeholder')).toBe( + 'E-Mail', + ) + }) + }) + + describe('ammount field', () => { + it('has an input field of type number', () => { + expect(wrapper.find('#input-group-2').find('input').attributes('type')).toBe('number') + }) + + it('has an GDD text icon', () => { + expect(wrapper.find('#input-group-2').find('div.h3').text()).toBe('GDD') + }) + + it('has a label form.amount', () => { + expect(wrapper.findAll('div.text-left').at(1).text()).toBe('form.amount') + }) + + it('has a placeholder "0.01"', () => { + expect(wrapper.find('#input-group-2').find('input').attributes('placeholder')).toBe( + '0.01', + ) + }) + }) + + describe('message text box', () => { + it('has an textarea field', () => { + expect(wrapper.find('#input-group-3').find('textarea').exists()).toBeTruthy() + }) + + it('has an chat-right-text icon', () => { + expect(wrapper.find('#input-group-3').find('svg').attributes('aria-label')).toBe( + 'chat right text', + ) + }) + + it('has a label form.memo', () => { + expect(wrapper.findAll('div.text-left').at(2).text()).toBe('form.memo') + }) + }) + + describe('cancel button', () => { + it('has a cancel button', () => { + expect(wrapper.find('button[type="reset"]').exists()).toBeTruthy() + }) + + it('has the text "form.cancel"', () => { + expect(wrapper.find('button[type="reset"]').text()).toBe('form.reset') + }) + + it.skip('clears the email field on click', async () => { + wrapper.find('#input-group-1').find('input').setValue('someone@watches.tv') + wrapper.find('button[type="reset"]').trigger('click') + await wrapper.vm.$nextTick() + expect(wrapper.vm.form.email).toBeNull() + }) + }) + }) + }) +}) diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue b/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue index 62b910bcd..3967bbec0 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue @@ -1,5 +1,5 @@ @@ -28,6 +40,10 @@ import GddStatus from './AccountOverview/GddStatus.vue' import GddSend from './AccountOverview/GddSend.vue' import GddTable from './AccountOverview/GddTable.vue' import GddTableFooter from './AccountOverview/GddTableFooter.vue' +import TransactionForm from './AccountOverview/GddSend/TransactionForm.vue' +import TransactionConfirmation from './AccountOverview/GddSend/TransactionConfirmation.vue' +import TransactionResult from './AccountOverview/GddSend/TransactionResult.vue' +import communityAPI from '../../apis/communityAPI.js' export default { name: 'Overview', @@ -36,11 +52,23 @@ export default { GddSend, GddTable, GddTableFooter, + TransactionForm, + TransactionConfirmation, + TransactionResult, }, data() { return { - showTransactionList: true, + showContext: true, timestamp: Date.now(), + transactionData: { + email: '', + amount: 0, + target_date: '', + memo: '', + }, + error: false, + transactionSteps: ['transaction-form', 'transaction-confirmation', 'transaction-result'], + currentTransactionStep: 0, } }, props: { @@ -52,14 +80,37 @@ export default { transactionCount: { type: Number, default: 0 }, }, methods: { - toggleShowList(bool) { - this.showTransactionList = bool + setTransaction(data) { + this.transactionData.email = data.email + this.transactionData.amount = data.amount + this.transactionData.memo = data.memo + this.transactionData.target_date = new Date(Date.now()).toISOString() + this.showContext = false + this.currentTransactionStep = 1 }, - updateBalance(data) { - this.$emit('update-balance', data.ammount) + async sendTransaction() { + const result = await communityAPI.send( + this.$store.state.sessionId, + this.transactionData.email, + this.transactionData.amount, + this.transactionData.memo, + this.transactionData.target_date, + ) + if (result.success) { + this.error = false + this.$emit('update-balance', this.transactionData.amount) + } else { + this.error = true + } + this.currentTransactionStep = 2 }, - updateTransactions() { - this.$emit('update-transactions') + onReset() { + this.transactionData.email = '' + this.transactionData.amount = 0 + this.transactionData.memo = '' + this.transactionData.target_date = '' + this.showContext = true + this.currentTransactionStep = 0 }, }, } diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.vue b/frontend/src/views/Pages/AccountOverview/GddSend.vue index dd7518b2c..53e0910c9 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend.vue @@ -1,100 +1,13 @@ From e8aad2e317eab68d20aae91c7253af64e279f5dc Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 May 2021 04:30:15 +0200 Subject: [PATCH 056/122] get the test working. ToDo: Test this component! --- .../src/views/Pages/AccountOverview.spec.js | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/frontend/src/views/Pages/AccountOverview.spec.js b/frontend/src/views/Pages/AccountOverview.spec.js index 1454ada5c..68d91ee98 100644 --- a/frontend/src/views/Pages/AccountOverview.spec.js +++ b/frontend/src/views/Pages/AccountOverview.spec.js @@ -34,30 +34,5 @@ describe('AccountOverview', () => { it('has a transactions table', () => { expect(wrapper.find('gdd-table-stub').exists()).toBeTruthy() }) - - describe('updateBalance method', () => { - beforeEach(async () => { - wrapper.find('gdd-send-stub').vm.$emit('update-balance', { - ammount: 42, - }) - await wrapper.vm.$nextTick() - }) - - it('emmits updateBalance with correct value', () => { - expect(wrapper.emitted('update-balance')).toEqual([[42]]) - }) - }) - - describe('toggleShowList method', () => { - beforeEach(async () => { - wrapper.setProps({ showTransactionList: false }) - wrapper.find('gdd-send-stub').vm.$emit('toggle-show-list', true) - await wrapper.vm.$nextTick() - }) - - it('changes the value of property showTransactionList', () => { - expect(wrapper.vm.showTransactionList).toBeTruthy() - }) - }) }) }) From 8c33d5e9131cfa3616329defa42edd987f459f10 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 May 2021 06:30:47 +0200 Subject: [PATCH 057/122] more compact code --- frontend/src/apis/communityAPI.js | 7 ++-- frontend/src/views/Pages/AccountOverview.vue | 35 ++++++++----------- .../views/Pages/AccountOverview/GddSend.vue | 9 +++-- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/frontend/src/apis/communityAPI.js b/frontend/src/apis/communityAPI.js index 5d56f4a1b..5340140d0 100644 --- a/frontend/src/apis/communityAPI.js +++ b/frontend/src/apis/communityAPI.js @@ -51,14 +51,11 @@ const communityAPI = { } return apiPost(CONFIG.COMMUNITY_API__URL + 'createCoins/', payload) }, */ - send: async (sessionId, email, amount, memo, targetDate) => { + send: async (sessionId, data) => { const payload = { session_id: sessionId, - email, - amount, - memo, - target_date: targetDate, auto_sign: true, + ...data, } return apiPost(CONFIG.COMMUNITY_API_URL + 'sendCoins/', payload) }, diff --git a/frontend/src/views/Pages/AccountOverview.vue b/frontend/src/views/Pages/AccountOverview.vue index d0257809d..4ad4c27ba 100644 --- a/frontend/src/views/Pages/AccountOverview.vue +++ b/frontend/src/views/Pages/AccountOverview.vue @@ -4,7 +4,7 @@
- + @@ -58,7 +58,6 @@ export default { }, data() { return { - showContext: true, timestamp: Date.now(), transactionData: { email: '', @@ -67,7 +66,6 @@ export default { memo: '', }, error: false, - transactionSteps: ['transaction-form', 'transaction-confirmation', 'transaction-result'], currentTransactionStep: 0, } }, @@ -79,23 +77,19 @@ export default { }, transactionCount: { type: Number, default: 0 }, }, + computed: { + showContext() { + return this.currentTransactionStep === 0 + }, + }, methods: { setTransaction(data) { - this.transactionData.email = data.email - this.transactionData.amount = data.amount - this.transactionData.memo = data.memo - this.transactionData.target_date = new Date(Date.now()).toISOString() - this.showContext = false + data.target_date = new Date(Date.now()).toISOString() + this.transactionData = { ...data } this.currentTransactionStep = 1 }, async sendTransaction() { - const result = await communityAPI.send( - this.$store.state.sessionId, - this.transactionData.email, - this.transactionData.amount, - this.transactionData.memo, - this.transactionData.target_date, - ) + const result = await communityAPI.send(this.$store.state.sessionId, this.transactionData) if (result.success) { this.error = false this.$emit('update-balance', this.transactionData.amount) @@ -105,11 +99,12 @@ export default { this.currentTransactionStep = 2 }, onReset() { - this.transactionData.email = '' - this.transactionData.amount = 0 - this.transactionData.memo = '' - this.transactionData.target_date = '' - this.showContext = true + this.transactionData = { + email: '', + amount: 0, + memo: '', + target_date: '', + } this.currentTransactionStep = 0 }, }, diff --git a/frontend/src/views/Pages/AccountOverview/GddSend.vue b/frontend/src/views/Pages/AccountOverview/GddSend.vue index 53e0910c9..cfab0899a 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend.vue @@ -1,13 +1,18 @@ From 1b1f4adb9364daa50a3c53d728835129108d4b02 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 12 May 2021 06:49:57 +0200 Subject: [PATCH 058/122] even more compact code --- frontend/src/views/Pages/AccountOverview.vue | 21 +++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/frontend/src/views/Pages/AccountOverview.vue b/frontend/src/views/Pages/AccountOverview.vue index 4ad4c27ba..0149daebe 100644 --- a/frontend/src/views/Pages/AccountOverview.vue +++ b/frontend/src/views/Pages/AccountOverview.vue @@ -45,6 +45,13 @@ import TransactionConfirmation from './AccountOverview/GddSend/TransactionConfir import TransactionResult from './AccountOverview/GddSend/TransactionResult.vue' import communityAPI from '../../apis/communityAPI.js' +const _emptyTransactionData = { + email: '', + amount: 0, + memo: '', + target_date: '', +} + export default { name: 'Overview', components: { @@ -59,12 +66,7 @@ export default { data() { return { timestamp: Date.now(), - transactionData: { - email: '', - amount: 0, - target_date: '', - memo: '', - }, + transactionData: { ..._emptyTransactionData }, error: false, currentTransactionStep: 0, } @@ -99,12 +101,7 @@ export default { this.currentTransactionStep = 2 }, onReset() { - this.transactionData = { - email: '', - amount: 0, - memo: '', - target_date: '', - } + this.transactionData = { ..._emptyTransactionData } this.currentTransactionStep = 0 }, }, From bb63eaeab49e0a69bca446d7799d6c3ac19157a6 Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 12 May 2021 09:30:20 +0200 Subject: [PATCH 059/122] css mobil style, language in extra componente --- frontend/src/App.vue | 24 +------------------ frontend/src/components/LanguageSwitch.vue | 22 +++++++++++++++++ .../views/Layout/DashboardLayout_gdd.spec.js | 2 +- .../src/views/Layout/DashboardLayout_gdd.vue | 10 +++++--- frontend/src/views/Layout/DashboardNavbar.vue | 7 ++++-- frontend/src/views/Pages/AccountOverview.vue | 4 ++-- .../Pages/AccountOverview/GddStatus.spec.js | 2 +- .../views/Pages/AccountOverview/GddStatus.vue | 21 +++++----------- .../views/Pages/AccountOverview/GddTable.vue | 8 +++---- .../Pages/UserProfileTransactionList.vue | 2 +- 10 files changed, 49 insertions(+), 53 deletions(-) create mode 100644 frontend/src/components/LanguageSwitch.vue diff --git a/frontend/src/App.vue b/frontend/src/App.vue index b47b9caf0..7cc476759 100755 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,20 +1,6 @@