Merge pull request #423 from gradido/login_build_alpine

Login build alpine
This commit is contained in:
Ulf Gebhardt 2021-05-14 02:12:23 +02:00 committed by GitHub
commit 063da15977
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
58 changed files with 815 additions and 462 deletions

View File

@ -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 -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

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
*.log
/node_modules/*
.vscode
messages.pot
.skeema
nbproject

9
.gitmodules vendored
View File

@ -27,5 +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/src/proto"]
path = login_server/src/proto
url = https://github.com/gradido/gradido_protocol.git

View File

@ -4,8 +4,9 @@ All notable changes to this project will be documented in this file. Dates are d
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
#### [1.0.1](https://github.com/gradido/gradido/compare/0.9.4...1.0.1)
#### [1.0.0](https://github.com/gradido/gradido/compare/0.9.4...1.0.0)
- Release fix [`#428`](https://github.com/gradido/gradido/pull/428)
- Send button only click [`#427`](https://github.com/gradido/gradido/pull/427)
- use new function for balance overview in old frontend, update balance… [`#422`](https://github.com/gradido/gradido/pull/422)
- thx.vue coloured background removed. design adapted to app [`#426`](https://github.com/gradido/gradido/pull/426)

View File

@ -26,8 +26,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:
@ -35,8 +35,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_conan:/code/build_vol
- login_build_alpine:/code/build
#########################################################
@ -101,5 +103,4 @@ services:
volumes:
frontend_node_modules:
login_build_conan:
login_build_alpine:

View File

@ -1,6 +1,6 @@
{
"name": "bootstrap-vue-gradido-wallet",
"version": "1.0.1",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "node run/server.js",

View File

@ -2,10 +2,17 @@ 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)
set(CMAKE_CXX_FLAGS "/MP /EHsc")
ENDIF()
set(INSTALL_BINDIR "bin")
set(INSTALL_PLUGINDIR "bin")
include_directories(
"dependencies"
"dependencies/tinf/src/"
@ -14,13 +21,119 @@ include_directories(
"dependencies/spirit-po/include"
"dependencies/grpc/include"
"dependencies/grpc/third_party/protobuf/src"
"src/cpp/proto"
"dependencies/grpc/third_party/googletest/googletest/include"
"build"
"build/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)
IF(UNIX)
include_directories(
"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"
)
ENDIF()
############################## 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")
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)
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 ###################################
FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h")
FILE(GLOB TINF "dependencies/tinf/src/*.c" "dependencies/tinf/src/*.h")
@ -37,8 +150,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 "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")
@ -84,12 +197,15 @@ if(MSVC)
source_group("Test" FILES ${TEST})
endif()
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
IF(WIN32)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
#add_compile_definitions(POCO_NETSSL_WIN)
ENDIF()
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,99 +227,34 @@ add_subdirectory("dependencies/mariadb-connector-c")
set(DEP_PATH "dependencies")
set(MARIADB_CONNECTOR_PATH "${DEP_PATH}/mariadb-connector-c/build/libmariadb")
set(GRPC_PATH "${DEP_PATH}/grpc/build")
set(GRPC_ABSL_PATH "${GRPC_PATH}/third_party/abseil-cpp/absl/types")
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)
#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")
IF(UNIX)
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(POCO_LIBS PocoFoundation PocoUtil PocoNet PocoNetSSL PocoData)
ENDIF()
############################## build login server ###################################
target_link_libraries(Gradido_LoginServer ${GRPC_LIBS})
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/")
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})
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})
target_link_libraries(Gradido_LoginServer mariadbclient ${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 ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS})
target_link_libraries(Gradido_LoginServer ${POCO_LIBS} libmariadb sodium)
endif()
# install
@ -228,15 +279,15 @@ enable_testing()
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 ${GRPC_LIBS} )
if(WIN32)
TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test optimized ${MYSQL_LIBRARIES} Shlwapi)
TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi)
TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS})
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 ${GRPC_LIBS} ${CMAKE_DL_LIBS} ${PROTOBUF_LIBS})
target_link_libraries(Gradido_LoginServer_Test ${POCO_LIBS} libmariadb sodium)
endif()
add_test(NAME main COMMAND Gradido_LoginServer_Test)

View File

@ -0,0 +1,189 @@
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/spirit-po/include"
"/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(PROTOBUF_LIBS protobuf::libprotobuf protobuf::libprotobuf-lite protobuf::libprotoc)
############################## 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")
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 "${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")
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})
############################## find mariadb ###################################
find_library(MYSQL_LIBRARIES mariadb PATHS "/usr/local/lib/mariadb" REQUIRED)
############################## config and add poco ###################################
set(BUILD_LIB_PATH "(/usr/local/lib")
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})
############################## build login server ###################################
target_link_libraries(Gradido_LoginServer gRPC::grpc++ ${PROTOBUF_LIBS} ${MYSQL_LIBRARIES} ${POCO_LIBS} sodium pthread)

View File

@ -1,50 +1,45 @@
#########################################################################################################
# Build release
#########################################################################################################
From conanio/gcc9 as release
FROM gradido/login_dependencies:alpine-release-1 as release
ENV DOCKER_WORKDIR="/code"
USER root
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/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 && \
./compile_pot.sh
RUN mkdir build && \
cd build && \
conan install .. --build=missing && \
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 alpine:latest as login_server
FROM alpine:3.13.5 as login_server
USER root
WORKDIR "/usr/bin"
COPY --from=release /code/build/bin/Gradido_LoginServer /usr/bin/
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"]
CMD Gradido_LoginServer
#CMD Gradido_LoginServer

View File

@ -0,0 +1,14 @@
FROM gradido/login_dependencies:alpine-debug-1 as login_server_alpine_debug
ENV DOCKER_WORKDIR="/code"
EXPOSE 1200
EXPOSE 1201
WORKDIR ${DOCKER_WORKDIR}
COPY ./CMakeLists.txt.lib ./CMakeLists.txt
COPY ./scripts ./scripts
CMD cd scripts; ./build_debug.sh; cd ..; ./build/bin/Gradido_LoginServer

View File

@ -1,3 +1,19 @@
#########################################################################################################
# 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 debug
@ -5,14 +21,15 @@
From gradido/login_dependencies:stage2 as debug
ENV DOCKER_WORKDIR="/code"
USER root
WORKDIR ${DOCKER_WORKDIR}
COPY . .
COPY . .
RUN chmod +x unix_parse_proto.sh
RUN chmod +x compile_pot.sh
RUN cd scripts \
&& chmod +x ./prepare_build.sh \
&& ./prepare_build.sh
RUN ./compile_pot.sh
RUN ./unix_parse_proto.sh
@ -30,13 +47,14 @@ ENV DOCKER_WORKDIR="/code"
# apt-get autoremove && \
# apt-get clean && \
# rm -rf /var/lib/apt/lists/*
VOLUME /var/log/grd_login
VOLUME /code/src
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_vol/bin/Gradido_LoginServer

View File

@ -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

View File

@ -0,0 +1,79 @@
##### 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
RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 && \
cd CMake && \
./bootstrap --parallel=$(nproc) && \
make -j$(nproc) && \
make install
######### BUILD grpc ##############
FROM alpine-gxx-cmake as alpine-gxx-grpc
ARG BUILD_TYPE=Debug
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
# 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
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
ARG BUILD_TYPE=Debug
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 alpine-libs
# 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
# 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

View File

@ -1,48 +0,0 @@
#!/bin/bash
cp build/conan* build_vol/
cd build_vol
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j${CPU_COUNT} protoc grpc_cpp_plugin
cd ..
if [ ! -f "./src/cpp/proto/gradido/TransactionBody.pb.h" ] ; then
chmod +x unix_parse_proto.sh
echo "parse proto files"
./unix_parse_proto.sh
fi
chmod +x compile_pot.sh
./compile_pot.sh
cd build_vol
cmake ..
make -j$(nproc) Gradido_LoginServer
#echo "building done"
chmod +x ./bin/Gradido_LoginServer
#./bin/Gradido_LoginServer
: '
cd build
conan install .. --build=missing -s build_type=Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j${CPU_COUNT} 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
'

View File

@ -1,3 +1,5 @@
sudo apt install libsodium-dev
# get dependencies
git submodule update --init --recursive

View File

@ -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

View File

@ -2,12 +2,7 @@
Poco/1.9.4@pocoproject/stable
libsodium/1.0.18@bincrafters/stable
boost/1.71.0@conan/stable
gtest/1.8.1@bincrafters/stable
[generators]
cmake
[options]
Poco:enable_data_sqlite=False
Poco:enable_mongodb=False
Poco:enable_redis=False

@ -0,0 +1 @@
Subproject commit 8aedf4733884a25434b5c17c79c7e7dee27e6eb0

@ -1 +1 @@
Subproject commit 3fc3e5f5b8462f7666952b43381383a79b8b5d92
Subproject commit b95393dcc3640807838e8323b4e600e54d2e8116

View File

@ -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

View File

@ -0,0 +1,12 @@
#!/bin/sh
cd ../scripts
chmod +x compile_pot.sh
./compile_pot.sh
cd ../build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j$(nproc) Gradido_LoginServer
chmod +x ./bin/Gradido_LoginServer

View File

@ -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

View File

@ -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 ../../

View File

@ -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

View File

@ -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

View File

@ -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
#endif //GRADIDO_LOGIN_SERVER_CONTROLLER_HEDERA_ID_INCLUDE

View File

@ -6,6 +6,7 @@
#include <memory>
#include <cstring>
#include <stdlib.h>
using namespace std;

View File

@ -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<Poco::Data::BLOB>& nullableBin);
inline std::string binToHex(const MemoryBin* data) { return binToHex(data->data(), data->size());}

View File

@ -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;
}
}
}
}

View File

@ -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
#endif

View File

@ -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<TransactionBody> 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<Poco::Mutex> _lock(mWorkMutex);
@ -76,7 +76,7 @@ namespace model {
}
auto body = TransactionBody::create("", user, proto::gradido::GroupMemberUpdate_MemberUpdateType_ADD_USER, group_model->getAlias());
Poco::AutoPtr<Transaction> result = new Transaction(body);
auto model = result->getModel();
model->setHederaId(topic_id->getModel()->getID());
@ -87,7 +87,7 @@ namespace model {
Poco::AutoPtr<Transaction> Transaction::createCreation(
Poco::AutoPtr<controller::User> 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<Transaction> 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<controller::Group> 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> Transaction::createTransfer(
const MemoryBin* senderPubkey,
Poco::AutoPtr<controller::User> receiver,
std::string senderGroupAlias,
Poco::UInt32 amount,
const MemoryBin* senderPubkey,
Poco::AutoPtr<controller::User> receiver,
std::string senderGroupAlias,
Poco::UInt32 amount,
const std::string& memo,
BlockchainType blockchainType
)
@ -268,7 +268,7 @@ namespace model {
//std::vector<Poco::AutoPtr<TransactionBody>> 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> Transaction::load(model::table::PendingTask* dbModel)
{
@ -335,10 +335,10 @@ namespace model {
if (!finished) {
transaction->ifEnoughSignsProceed(nullptr);
}
return transaction;
}
bool Transaction::insertPendingTaskIntoDB(Poco::AutoPtr<controller::User> 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<Poco::Mutex> _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 || TRANSACTION_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> transaction)
: UniLib::controller::CPUTask(ServerConfig::g_CPUScheduler), mTransaction(transaction)
@ -938,4 +938,4 @@ namespace model {
}
}
}
}

View File

@ -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<Transaction> createGroupMemberUpdate(Poco::AutoPtr<controller::User> user, Poco::AutoPtr<controller::Group> group);
//! \brief transfer
//! \return
//! \return
static Poco::AutoPtr<Transaction> createTransfer(
Poco::AutoPtr<controller::User> sender,
const MemoryBin* receiverPubkey,
Poco::AutoPtr<controller::Group> receiverGroup,
Poco::UInt32 amount,
const std::string& memo,
Poco::AutoPtr<controller::User> sender,
const MemoryBin* receiverPubkey,
Poco::AutoPtr<controller::Group> receiverGroup,
Poco::UInt32 amount,
const std::string& memo,
BlockchainType blockchainType,
bool inbound = true);
Poco::AutoPtr<Transaction> createTransfer(
const MemoryBin* senderPubkey,
const MemoryBin* senderPubkey,
Poco::AutoPtr<controller::User> 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<TransactionBody> getTransactionBody() { Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex); return mTransactionBody; }
//! \brief get current body bytes from proto transaction and save it into db

View File

@ -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
#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_BASE_INCLUDE

View File

@ -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<TransactionBody> create(const std::string& memo, Poco::AutoPtr<controller::User> 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<TransactionBody> create(
const std::string& memo,
Poco::AutoPtr<controller::User> sender,
const MemoryBin* receiverPublicKey,
Poco::UInt32 amount,
Poco::AutoPtr<controller::User> sender,
const MemoryBin* receiverPublicKey,
Poco::UInt32 amount,
BlockchainType blockchainType,
Poco::Timestamp pairedTransactionId = Poco::Timestamp(),
Poco::Timestamp pairedTransactionId = Poco::Timestamp(),
Poco::AutoPtr<controller::Group> group = nullptr
);
static Poco::AutoPtr<TransactionBody> create(const std::string& memo, const MemoryBin* senderPublicKey, Poco::AutoPtr<controller::User> receiver, Poco::UInt32 amount, Poco::Timestamp pairedTransactionId = Poco::Timestamp(), Poco::AutoPtr<controller::Group> group = nullptr);
static Poco::AutoPtr<TransactionBody> 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<TransactionBody> create(
const std::string& memo,
Poco::AutoPtr<controller::User> receiver,
Poco::UInt32 amount,
const std::string& memo,
Poco::AutoPtr<controller::User> 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<Poco::Mutex> _lock(mWorkMutex); return mType == TRANSACTION_CREATION; }
bool isTransfer() { Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex); return mType == TRANSACTION_TRANSFER; }
bool isGroupMemberUpdate() { Poco::ScopedLock<Poco::Mutex> _lock(mWorkMutex); return mType == TRANSACTION_GROUP_MEMBER_UPDATE; }
@ -97,4 +97,4 @@ namespace model {
}
}
#endif //GRADIDO_LOGIN_SERVER_MODEL_GRADIDO_TRANSACTION_BASE_H
#endif //GRADIDO_LOGIN_SERVER_MODEL_GRADIDO_TRANSACTION_BASE_H

View File

@ -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
#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_CREATION_INCLUDE

View File

@ -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
#endif //GRADIDO_LOGIN_SERVER_MODEL_TRANSACTION_TRANSFER_INCLUDE

View File

@ -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<controller::HederaId> autoRenewHederaAccountId, Poco::UInt32 autoRenewPeriod);
@ -29,4 +29,4 @@ namespace model {
}
#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_CREATE_TOPIC_H
#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_CREATE_TOPIC_H

View File

@ -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
#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_SUBMIT_MESSAGE_H

View File

@ -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
#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CONSENSUS_GET_TOPIC_INFO_RESPONSE_H

View File

@ -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
#endif //__GRADIDO_LOGIN_MODEL_HEDERA_CRYPTO_CREATE_TRANSACTION_H

View File

@ -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
#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_CRYPTO_TRANSFER_TRANSACTION_H

View File

@ -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
#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_QUERY_H

View File

@ -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<ConsensusTopicInfo> 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
#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_RESPONSE_H

View File

@ -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> keyPairHedera, const TransactionBody* transactionBody);
bool sign(std::unique_ptr<KeyPairHedera> keyPairHedera, std::unique_ptr<TransactionBody> 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
#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_H

View File

@ -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
#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_BODY_H

View File

@ -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<QueryHeader> mQueryHeader;
proto::TransactionGetReceiptQuery mProtoReceiptQuery;
};
}
}
#endif //GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_GET_RECEIPT_QUERY_H
#endif //GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_GET_RECEIPT_QUERY_H

View File

@ -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
#endif //_GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_ID_H

View File

@ -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
{

View File

@ -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
#endif //__GRADIDO_LOGIN_SERVER_MODEL_HEDERA_TRANSACTION_RESPONSE_H

View File

@ -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());

View File

@ -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;
};
}
}

View File

@ -1,5 +1,5 @@
#include "TestHederaId.h"
#include "../SingletonManager/ConnectionManager.h"
#include "../../SingletonManager/ConnectionManager.h"
namespace controller {
void TestHederaId::SetUp()

View File

@ -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;
};
}
}

View File

@ -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);
// */
}
}

View File

@ -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 --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

View File

@ -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

View File

@ -1,6 +1,6 @@
{
"name": "gradido",
"version": "1.0.1",
"version": "1.0.0",
"description": "Gradido",
"main": "index.js",
"repository": "git@github.com:gradido/gradido.git",