From df5a910368e571371ba81084986aef4734ef4965 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Thu, 26 Aug 2021 20:43:26 +0200 Subject: [PATCH 1/2] update scripts and doc for setup without docker --- .gitmodules | 3 + login_server/README | 31 ----- login_server/README.md | 147 ++++++++++++++++++++++ login_server/dependencies/protobuf | 1 + login_server/scripts/build_debug.sh | 5 +- login_server/scripts/prepare_build.sh | 4 +- login_server/scripts/unittest_coverage.sh | 8 ++ 7 files changed, 162 insertions(+), 37 deletions(-) delete mode 100644 login_server/README create mode 100644 login_server/README.md create mode 160000 login_server/dependencies/protobuf create mode 100644 login_server/scripts/unittest_coverage.sh diff --git a/.gitmodules b/.gitmodules index 70fda6a17..22790ccc7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -31,3 +31,6 @@ [submodule "login_server/src/proto"] path = login_server/src/proto url = https://github.com/gradido/gradido_protocol.git +[submodule "login_server/dependencies/protobuf"] + path = login_server/dependencies/protobuf + url = https://github.com/protocolbuffers/protobuf.git diff --git a/login_server/README b/login_server/README deleted file mode 100644 index 400aee30a..000000000 --- a/login_server/README +++ /dev/null @@ -1,31 +0,0 @@ -sudo apt install libsodium-dev - -# get dependencies -git submodule update --init --recursive - - -cd dependencies/mariadb-connector-c -mkdir build -cd build -cmake -DWITH_SSL=OFF .. -cd ../../../ - - -# get more dependencies with conan (need conan from https://conan.io/) -mkdir build && cd build -# // not used anymore -# conan remote add inexor https://api.bintray.com/conan/inexorgame/inexor-conan -# not needed, but bincrafter -# conan install .. -s build_type=Debug -conan install .. - -# build Makefile with cmake -cmake .. - -make grpc -# under windows build at least release for protoc.exe and grpc c++ plugin -cd ../ -./unix_parse_proto.sh -cd build -make - diff --git a/login_server/README.md b/login_server/README.md new file mode 100644 index 000000000..80b951118 --- /dev/null +++ b/login_server/README.md @@ -0,0 +1,147 @@ +# Build Login-Server yourself +## Linux (Ubuntu) Packets +install build essentials + +```bash +sudo apt install -y gcovr build-essential gettext libcurl4-openssl-dev libssl-dev libsodium-dev libboost-dev +``` + +## CMake +I use CMake for build file generation and the Login-Server needs at least version v3.18.2 +You can build and install it from source. +The Version in apt is sadly to old. + +```bash +git clone https://github.com/Kitware/CMake.git --branch v3.18.2 +cd CMake +./bootstrap --parallel=$(nproc) && make -j$(nproc) && sudo make install +``` + +## dependencies +load git submodules if you haven't done it yet + +```bash +git submodule update --init --recursive +``` + +## build tools +build protoc and page compiler needed for generating some additional code + +```bash +cd scripts +./prepare_build.sh +``` + +## build +build login-server in debug mode + +```bash +cd scripts +./build_debug.sh +``` + +## multilanguage text +Login-Server uses gettext translations found after build in src/LOCALE +On Linux Login-Server expect the *.po files in folder /etc/grd_login/LOCALE +on windows next to Binary in Folder LOCALE. +So please copy them over by yourself on first run or after change. + +If you like to update some translations your find a messages.pot in src/LOCALE. +Use it together with poedit and don't forget to copy over *.po files after change to /etc/grd_login/LOCALE +To update messages.pot run + +```bash +./scripts/compile_pot.sh +``` +This will be also called by ./scripts/build_debug.sh + +## database +Login-Server needs a db to run, it is tested with mariadb +table definitions are found in folder ./skeema/gradido_login +Currently at least one group must be present in table groups. +For example: +```sql +INSERT INTO `groups` (`id`, `alias`, `name`, `url`, `host`, `home`, `description`) VALUES +(1, 'docker', 'docker gradido group', 'localhost', 'localhost', '/', 'gradido test group for docker with blockchain db'); +``` + +## configuration +Login-Server needs a configuration file to able to run. +On Linux it expect it to find the file /etc/grd_login/grd_login.properties +and /etc/grd_login/grd_login_test.properties for unittest + +Example configuration (ini-format) +```ini +# Port for Web-Interface +HTTPServer.port = 1200 +# Port for json-Interface (used by new backend) +JSONServer.port = 1201 +# default group id for new users, if no group was choosen +Gradido.group_id = 1 + +# currently not used +crypto.server_admin_public = f909a866baec97c5460b8d7a93b72d3d4d20cc45d9f15d78bd83944eb9286b7f +# Server admin Passphrase +# nerve execute merit pool talk hockey basic win cargo spin disagree ethics swear price purchase say clutch decrease slow half forest reform cheese able +# + +# TODO: auto-generate in docker build step +# expect valid hex 32 character long (16 Byte) +# salt for hashing user password, should be moved into db generated and saved per user, used for hardening against hash-tables +crypto.server_key = a51ef8ac7ef1abf162fb7a65261acd7a + +# TODO: auto-generate in docker build step +# salt for hashing user encryption key, expect valid hex, as long as you like, used in sha512 +crypto.app_secret = 21ffbbc616fe + +# for url forwarding to old frontend, path of community server +phpServer.url = http://localhost/ +# host for community server api calls +phpServer.host = localhost +# port for community server api calls +phpServer.port = 80 + +# Path for Login-Server Web-Interface used for link-generation +loginServer.path = http://localhost/account +# default language for new users and if no one is logged in +loginServer.default_locale = de + +# db setup tested with mariadb, should also work with mysql +loginServer.db.host = localhost +loginServer.db.name = gradido_login +loginServer.db.user = root +loginServer.db.password = +loginServer.db.port = 3306 + +# check email path for new frontend for link generation in emails +frontend.checkEmailPath = http://localhost/vue/reset + +# disable email all together +email.disable = true + +# setup email smtp server for sending emails +#email.username = +#email.sender = +#email.admin_receiver = +#email.password = +#email.smtp.url = +#email.smtp.port = + +# server setup types: test, staging or production +# used mainly to decide if using http or https for links +# test use http and staging and production uses https +ServerSetupType=test +dev.default_group = docker + +# Session timeout in minutes +session.timeout = 15 + +# Disabling security features for faster develop and testing +unsecure.allow_passwort_via_json_request = 1 +unsecure.allow_auto_sign_transactions = 1 +unsecure.allow_cors_all = 1 + +# default disable, passwords must contain a number, a lower character, a high character, special character, and be at least 8 characters long +unsecure.allow_all_passwords = 1 + +``` diff --git a/login_server/dependencies/protobuf b/login_server/dependencies/protobuf new file mode 160000 index 000000000..0b8d13a1d --- /dev/null +++ b/login_server/dependencies/protobuf @@ -0,0 +1 @@ +Subproject commit 0b8d13a1d4cd9be16ed8a2230577aa9c296aa1ca diff --git a/login_server/scripts/build_debug.sh b/login_server/scripts/build_debug.sh index 99a0d6d1a..27e5740dd 100755 --- a/login_server/scripts/build_debug.sh +++ b/login_server/scripts/build_debug.sh @@ -1,12 +1,9 @@ #!/bin/sh - -cd ../scripts - chmod +x compile_pot.sh +./compile_pot.sh cd ../build cmake -DCMAKE_BUILD_TYPE=Debug .. -./compile_pot.sh make -j$(nproc) Gradido_LoginServer chmod +x ./bin/Gradido_LoginServer diff --git a/login_server/scripts/prepare_build.sh b/login_server/scripts/prepare_build.sh index fe9c70e46..5598e0318 100755 --- a/login_server/scripts/prepare_build.sh +++ b/login_server/scripts/prepare_build.sh @@ -9,9 +9,9 @@ fi mkdir build cd build cmake -DWITH_SSL=OFF .. -cd ../../ +cd ../../../ -if [! -d "./build" ] ; then +if [ ! -d "./build" ] ; then mkdir build fi cd build diff --git a/login_server/scripts/unittest_coverage.sh b/login_server/scripts/unittest_coverage.sh new file mode 100644 index 000000000..b0bd1a4c9 --- /dev/null +++ b/login_server/scripts/unittest_coverage.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +cd ../build +cmake -DCMAKE_BUILD_TYPE=Debug -DCOLLECT_COVERAGE_DATA=ON -DCOVERAGE_TOOL=gcovr .. && \ +make -j$(nproc) Gradido_LoginServer_Test +make coverage + + From 81242a83a1fa7caca940e772ab8abfde2fe7363b Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 2 Sep 2021 13:49:12 +0200 Subject: [PATCH 2/2] Update login_server/README.md Co-authored-by: Ulf Gebhardt --- login_server/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login_server/README.md b/login_server/README.md index 80b951118..73f5deea0 100644 --- a/login_server/README.md +++ b/login_server/README.md @@ -7,7 +7,7 @@ sudo apt install -y gcovr build-essential gettext libcurl4-openssl-dev libssl-de ``` ## CMake -I use CMake for build file generation and the Login-Server needs at least version v3.18.2 +CMake is used for build file generation and the Login-Server needs at least version v3.18.2 You can build and install it from source. The Version in apt is sadly to old.