From 5b71a86092b5f6060198fba5d267dad3f924415f Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 Feb 2021 16:21:06 +0100 Subject: [PATCH 01/16] login server api --- docu/login_server.api.md | 65 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 docu/login_server.api.md diff --git a/docu/login_server.api.md b/docu/login_server.api.md new file mode 100644 index 000000000..5167146e8 --- /dev/null +++ b/docu/login_server.api.md @@ -0,0 +1,65 @@ +# login server api + +Gradido js-Frontend vereinfachte Zusammenarbeit mit Login-Server und Community-Server + +Es ist mit einer Zusatz-Option möglich das Login und Registrieren via ajax-Request passiern kann. +Dafür muss in der Login-Server Config + +unsecure.allow_passwort_via_json_request = 1 + +gesetzt sein. + +In diesen Beispielen gehe ich jetzt davon aus, das du das gesamte Gradido Projekt mit Docker gebaut hast und auf dem lokalen Rechner laufen lässt. + +Login +Einloggen über: + + +# unsecureLogin + +POST http://localhost/login_api/unsecureLogin +data: {"username": "", "password": ""} + +Wenn alles okay ist erhältst du: +{"state":"success", "session_id": , "clientIP":"", + "user": { + "created": , + "disabled": , // login will fail if user is disabled + "email": "", + "email_checked": , // true if user has already clicked on email verification code link in his emails + "first_name": "", + "group_alias": "", + "ident_hash": , + "last_name": "", + "public_hex": "<64 character hex (contain only a-f and 0-9)>", + "role": "", // should be only valid for login-server + "username": "", + "balance": , // 174500 = 17,45 GDD + "id": , + "errorCount": +}} + +Anmelden +Registrieren kannst du einen neuen Benutzer mit: + + +## createUser + +POST http://localhost/login_api/createUser +data: {"email":"", "first_name":"", "last_name":"" , + "emailType": 2, "password":""} + +Wenn alles okay ist erhältst du: +{"state":"success"} + +Dann wurde für den Benutzer ein neues Konto angelegt, seine Schlüssel generiert und ihm eine Bestätigungs-Email geschickt. + + +## Logout + +Abmelden +POST http://localhost/login_api/logout +data: {"session_id": } + +Wenn alles okay ist erhältst du: +{"state":"success"} \ No newline at end of file From c90762549a18143df07cf148edf5ea3be026ffbf Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 18 Feb 2021 16:23:41 +0100 Subject: [PATCH 02/16] more style --- docu/login_server.api.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docu/login_server.api.md b/docu/login_server.api.md index 5167146e8..1342d8284 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -18,9 +18,12 @@ Einloggen über: # unsecureLogin POST http://localhost/login_api/unsecureLogin +``` data: {"username": "", "password": ""} +``` Wenn alles okay ist erhältst du: +``` {"state":"success", "session_id": , "clientIP":"", "user": { "created": , @@ -38,6 +41,7 @@ Wenn alles okay ist erhältst du: "id": , "errorCount": }} +``` Anmelden Registrieren kannst du einen neuen Benutzer mit: @@ -46,11 +50,15 @@ Registrieren kannst du einen neuen Benutzer mit: ## createUser POST http://localhost/login_api/createUser +``` data: {"email":"", "first_name":"", "last_name":"" , "emailType": 2, "password":""} +``` Wenn alles okay ist erhältst du: +``` {"state":"success"} +``` Dann wurde für den Benutzer ein neues Konto angelegt, seine Schlüssel generiert und ihm eine Bestätigungs-Email geschickt. @@ -59,7 +67,11 @@ Dann wurde für den Benutzer ein neues Konto angelegt, seine Schlüssel generier Abmelden POST http://localhost/login_api/logout +``` data: {"session_id": } +``` Wenn alles okay ist erhältst du: -{"state":"success"} \ No newline at end of file +``` +{"state":"success"} +``` \ No newline at end of file From 1168feb85f2e3925d89469b7fe86bcfce9aa536d Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 18 Feb 2021 16:26:10 +0100 Subject: [PATCH 03/16] adding Access-Control-Allow-Origin:* headers for login-server json-api --- configs/login_server/grd_login.properties | 1 + login_server | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/configs/login_server/grd_login.properties b/configs/login_server/grd_login.properties index 7719bc563..27dcf3aee 100644 --- a/configs/login_server/grd_login.properties +++ b/configs/login_server/grd_login.properties @@ -47,3 +47,4 @@ session.timeout = 15 # Disabling security features for faster develop and testing unsecure.allow_passwort_via_json_request = 1 unsecure.allow_auto_sign_transactions = 1 +unsercure.allow_cors_all = 1 diff --git a/login_server b/login_server index a89e0c8e1..1636a07e2 160000 --- a/login_server +++ b/login_server @@ -1 +1 @@ -Subproject commit a89e0c8e1360edfac81b3e73923690f7f1da7b5e +Subproject commit 1636a07e2e98e6b881f6013359a70ff5f107cba6 From c2619a1c5da591f20f457d49f1db42c48b6b6298 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 22 Feb 2021 12:24:45 +0100 Subject: [PATCH 04/16] add additional new option in login-server, add json to code block, maybe github has syntax highlighting for that also --- docu/login_server.api.md | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/docu/login_server.api.md b/docu/login_server.api.md index 1342d8284..e97aff36b 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -5,10 +5,19 @@ Gradido js-Frontend vereinfachte Zusammenarbeit mit Login-Server und Community-S Es ist mit einer Zusatz-Option möglich das Login und Registrieren via ajax-Request passiern kann. Dafür muss in der Login-Server Config +```ini unsecure.allow_passwort_via_json_request = 1 +``` gesetzt sein. +mit: +```ini +unsercure.allow_cors_all = 1 +``` +Wird bei allen JSON-Requests zum Header: Access-Control-Allow-Origin:* +hinzugefügt. + In diesen Beispielen gehe ich jetzt davon aus, das du das gesamte Gradido Projekt mit Docker gebaut hast und auf dem lokalen Rechner laufen lässt. Login @@ -18,12 +27,12 @@ Einloggen über: # unsecureLogin POST http://localhost/login_api/unsecureLogin -``` +```json data: {"username": "", "password": ""} ``` Wenn alles okay ist erhältst du: -``` +```json {"state":"success", "session_id": , "clientIP":"", "user": { "created": , @@ -50,13 +59,13 @@ Registrieren kannst du einen neuen Benutzer mit: ## createUser POST http://localhost/login_api/createUser -``` +```json data: {"email":"", "first_name":"", "last_name":"" , "emailType": 2, "password":""} ``` Wenn alles okay ist erhältst du: -``` +```json {"state":"success"} ``` @@ -67,11 +76,11 @@ Dann wurde für den Benutzer ein neues Konto angelegt, seine Schlüssel generier Abmelden POST http://localhost/login_api/logout -``` +```json data: {"session_id": } ``` Wenn alles okay ist erhältst du: -``` +```json {"state":"success"} ``` \ No newline at end of file From 7e63b2dc170cb5700b7dc65b771a63384060ab85 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 22 Feb 2021 12:59:33 +0100 Subject: [PATCH 05/16] update format, add additional informations --- docu/login_server.api.md | 57 ++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/docu/login_server.api.md b/docu/login_server.api.md index e97aff36b..c864456ba 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -24,33 +24,46 @@ Login Einloggen über: -# unsecureLogin +## unsecureLogin POST http://localhost/login_api/unsecureLogin ```json -data: {"username": "", "password": ""} +data: {"email": "max.musterman@gmail.de", "password": "123abcDE&"} ``` -Wenn alles okay ist erhältst du: +Wenn alles okay ist erhältst du zum Beispiel: ```json -{"state":"success", "session_id": , "clientIP":"", +{"state":"success", "session_id": -127182, "clientIP":"52.68.96.58", "user": { - "created": , - "disabled": , // login will fail if user is disabled - "email": "", - "email_checked": , // true if user has already clicked on email verification code link in his emails - "first_name": "", - "group_alias": "", - "ident_hash": , - "last_name": "", - "public_hex": "<64 character hex (contain only a-f and 0-9)>", - "role": "", // should be only valid for login-server - "username": "", - "balance": , // 174500 = 17,45 GDD - "id": , - "errorCount": + "created": 1293872400, + "disabled": false, + "email": "max.musterman@gmail.de", + "email_checked": true, + "first_name": "Max", + "group_alias": "gdd1", + "ident_hash": 1829912, + "public_hex": "c6e7d6a697fa74d6c247580edf1546989d43487575e21e398abe3cc2094bd63e", + "last_name": "Musterman", + "role": "none", + "username": "", + "balance": 174500, + "id": 1, + "errorCount": 0 }} ``` +- clientIP: should be the same as where the js-client is running, else maybe a man-in-the-middle attacks is happening or +nginx was wrong configured. +- session_id: can be also negative +- created: unix timestamp in seconds +- disabled: if set to true, login and every transaction must fail. Currently used if use would like to have there account deleted. +- email_checked: true if user has already clicked on email verification code link in his emails, needed for tranactions +- ident_hash: string hash from email, used for speed up creation validation +- public_hex: hexadecimal representation of 32 Byte public key of user [0-9a-f] +- role: not intended for future use, just ignore, login-server admin will be independently from community-server admin +- username: for later use +- balance: Gradido Cent, 4 Nachkommastellen (2 Reserve), 174500 = 17,45 GDD +- id: login-server user id, only needed for debugging +- errorCount: errors occured in this session, should be normally 0 Anmelden Registrieren kannst du einen neuen Benutzer mit: @@ -60,10 +73,14 @@ Registrieren kannst du einen neuen Benutzer mit: POST http://localhost/login_api/createUser ```json -data: {"email":"", "first_name":"", "last_name":"" , - "emailType": 2, "password":""} +data: {"email":"max.musterman@gmail.de", "first_name":"Max", "last_name":"Musterman" , + "emailType": 2, "password":"123abcDE&"} ``` +- emailType: control email-text sended with email verification code + - 2: default, if user has registered directly + - 5: if user was registered by an admin + Wenn alles okay ist erhältst du: ```json {"state":"success"} From 772a4af0e98f84486bd710c4be928099f3c757aa Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 22 Feb 2021 13:08:11 +0100 Subject: [PATCH 06/16] exchange placeholder with example value --- docu/login_server.api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docu/login_server.api.md b/docu/login_server.api.md index c864456ba..c4eb123eb 100644 --- a/docu/login_server.api.md +++ b/docu/login_server.api.md @@ -94,7 +94,7 @@ Dann wurde für den Benutzer ein neues Konto angelegt, seine Schlüssel generier Abmelden POST http://localhost/login_api/logout ```json -data: {"session_id": } +data: {"session_id": -127182} ``` Wenn alles okay ist erhältst du: From 6fc53c159a23f1653660e1a574f2ffca504013ce Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 22 Feb 2021 13:14:16 +0100 Subject: [PATCH 07/16] fix wrong character in config --- configs/login_server/grd_login.properties | 2 +- docu/community-server.api.md | 1 + login_server | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 docu/community-server.api.md diff --git a/configs/login_server/grd_login.properties b/configs/login_server/grd_login.properties index 27dcf3aee..76b4b2d10 100644 --- a/configs/login_server/grd_login.properties +++ b/configs/login_server/grd_login.properties @@ -47,4 +47,4 @@ session.timeout = 15 # Disabling security features for faster develop and testing unsecure.allow_passwort_via_json_request = 1 unsecure.allow_auto_sign_transactions = 1 -unsercure.allow_cors_all = 1 +unsecure.allow_cors_all = 1 diff --git a/docu/community-server.api.md b/docu/community-server.api.md new file mode 100644 index 000000000..a6d77e83f --- /dev/null +++ b/docu/community-server.api.md @@ -0,0 +1 @@ +# community server api diff --git a/login_server b/login_server index 1636a07e2..98d52617c 160000 --- a/login_server +++ b/login_server @@ -1 +1 @@ -Subproject commit 1636a07e2e98e6b881f6013359a70ff5f107cba6 +Subproject commit 98d52617c896a1a50c0a2bab2305eb6e890e882b From f8f82a24c62358f045841c5eeef5e825fd814d1b Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 22 Feb 2021 15:28:39 +0100 Subject: [PATCH 08/16] add community server api md, update community server --- community_server | 2 +- docu/community-server.api.md | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/community_server b/community_server index 3bbd8d0b7..0a30e2992 160000 --- a/community_server +++ b/community_server @@ -1 +1 @@ -Subproject commit 3bbd8d0b7cc5ba2f03a1d7e8c95f0f9290ae265a +Subproject commit 0a30e29924c1cc4e6f8b696aa562362c88182028 diff --git a/docu/community-server.api.md b/docu/community-server.api.md index a6d77e83f..4b70fc9c4 100644 --- a/docu/community-server.api.md +++ b/docu/community-server.api.md @@ -1 +1,14 @@ # community server api + +In this examples I assume that you use gradido with or docker-compose build on your local maschine + +## Konto Overview +return current account balance +Ajax: +GET http://localhost/state-balances/ajaxGetBalance/-127182 + +If session is valid, return: +{"state":"success","balance":174500} + +- balance: Gradido Cent, 4 Nachkommastellen (2 Reserve), 174500 = 17,45 GDD + From 918a6ec7a486427f706a3e7c8fcbd563a28f4c4c Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 22 Feb 2021 18:53:24 +0100 Subject: [PATCH 09/16] make http://localhost/state-balances/ajaxListTransactions wokring and add it to doc --- community_server | 2 +- docu/community-server.api.md | 54 ++++++++++++++++++++++++++++++++++-- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/community_server b/community_server index 0a30e2992..8cbfecc98 160000 --- a/community_server +++ b/community_server @@ -1 +1 @@ -Subproject commit 0a30e29924c1cc4e6f8b696aa562362c88182028 +Subproject commit 8cbfecc988d3b4f815daa496c9bff854a6758d99 diff --git a/docu/community-server.api.md b/docu/community-server.api.md index 4b70fc9c4..1368bf11e 100644 --- a/docu/community-server.api.md +++ b/docu/community-server.api.md @@ -4,11 +4,61 @@ In this examples I assume that you use gradido with or docker-compose build on y ## Konto Overview return current account balance -Ajax: + GET http://localhost/state-balances/ajaxGetBalance/-127182 If session is valid, return: +```json {"state":"success","balance":174500} - +``` - balance: Gradido Cent, 4 Nachkommastellen (2 Reserve), 174500 = 17,45 GDD +## List Transactions +List all transactions from logged in user, currently without paging +Ajax: +GET http://localhost/state-balances/ajaxListTransactions/-127182 + +Antwort: +Wenn alles okay: +```json +{"state":"success", "transactions": + [ + { + "name": "Max Mustermann", + "email": "Maxim Mustermann", + "type": "send", + "transaction_id": 2, + "date": "2021-02-19T13:25:36+00:00", + "balance": 1920000, + "memo": "a piece of cake :)", + "pubkey": "038a6f93270dc57b91d76bf110ad3863fcb7d1b08e7692e793fcdb4467e5b6a7" + + } + ], + "transactionExecutingCount": 0, + "count": 1, + "gdtSum": 0 + "timeUsed": 0.04562687873840332 +} +``` + +- name: name of other involved party or empty if unknown (if other party don't belong to group) + - if type is send, name is name of receiver + - if type is receive, name is name of sender + - if type is creation currently I use a static string ("Gradido Akademie) +- email: optional, only if type is send or receive and other user is known +- pubkey: optional, only if type is send or receive and other user isn't known +- type: type of transaction + - creation: user has get gradidos created + - send: user has send another user gradidos + - receiver: user has received gradidos from another user +- transaction_id: id of transaction in db, in stage2 also the hedera sequence number of transaction +- date: date of ordering transaction (booking date) +- balance: Gradido Cent, 4 Nachkommastellen (2 Reserve), 1920000 = 192,00 GDD +- memo: Details about transaction +- pubkey: optional, if other party isn't known, hexadecimal representation of 32 Byte public key of user [0-9a-f] + +- transactionExecutingCount: how many transaction for this user currently pending and waiting for signing +- count: sum of finished transactions user is involved +- gdtSum: sum of gdt of user in cent with 2 places (Nachkommastellen) +- timeUsed: time used for getting data from db in seconds, only for analyse backend performance \ No newline at end of file From 859239326f0fef2a3a3585b1cc2d9fa6dd6affca Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Mon, 22 Feb 2021 18:57:29 +0100 Subject: [PATCH 10/16] add missing comma --- docu/community-server.api.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docu/community-server.api.md b/docu/community-server.api.md index 1368bf11e..983caa8c2 100644 --- a/docu/community-server.api.md +++ b/docu/community-server.api.md @@ -32,12 +32,11 @@ Wenn alles okay: "balance": 1920000, "memo": "a piece of cake :)", "pubkey": "038a6f93270dc57b91d76bf110ad3863fcb7d1b08e7692e793fcdb4467e5b6a7" - } ], "transactionExecutingCount": 0, "count": 1, - "gdtSum": 0 + "gdtSum": 0, "timeUsed": 0.04562687873840332 } ``` From 5bc8454edb7ed9cc7550ef65007c323b610a3f82 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Mon, 22 Feb 2021 14:32:42 +0100 Subject: [PATCH 11/16] vue frontend authentication discussion (image) --- docu/frontend_vue.drawio | 91 +++++++++++++++++++++++++++++++++++++++ docu/frontend_vue.png | Bin 0 -> 42015 bytes 2 files changed, 91 insertions(+) create mode 100644 docu/frontend_vue.drawio create mode 100644 docu/frontend_vue.png diff --git a/docu/frontend_vue.drawio b/docu/frontend_vue.drawio new file mode 100644 index 000000000..98002cf5c --- /dev/null +++ b/docu/frontend_vue.drawio @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docu/frontend_vue.png b/docu/frontend_vue.png new file mode 100644 index 0000000000000000000000000000000000000000..9647f51b0de375d5c255bc7da28c21183b00ef56 GIT binary patch literal 42015 zcmeFZ2UJwewk@nc6O|kVp~-^e3^o}Ff<(cV93@DOO@<~b5)}{;B#9&e1qq_k1W76i z5|q>=Ndiqq1bo$i=Xk;m@Bi=p&iCHCV=%PYU3*vURaI-vHP4KsLge8yX&ACxW~oK*73Tdo$b+m zB0?g<{6Zr9A|h9WML9(kMTNjW;z9!AqSD4k?XB$XT#q{u7Z3suI0qLN<`h)|pR^oZ zeGuS(gp`DZgcuL_r0DMMY+Q$$rH zoy`q5>@7wH%3wr3E}*?I=vDwbMr8+2Hy6-KRZ3DoNI*+%+tbYz z+gMmYL;!ou!0Nh{r{izkVV~e@=jr7L+8r53R6tk=J9g|hcHUO@N0(i^{5*B9*dh## zw4J=w5DqRz?qH1AHs1d3c1LaOT&#hqz(vuE!0@(?R`#A&V5mZl$M$pevGDM`tnGh8 z%E(1eEx?N3*U;(c8Ln2~4Gz241t#PNBRzhI3qsA)%H83zo2{KQc#_XyxhY=J&VFuDdxOzvJ=4+`()7%}v+~1~yjC|9JJPqpi2YQCley$)mTxwpO=u zw0HQ`v#^Bp(KjwuzZxIEiI;DzJl; z{@O;%&CMOW33kUg*?D{WAJ3bWkGC7R?*-N z`S2I)3OW46)!Wk_d(&Tj`Ry+3cYnR@@V8(09lam+rNF)5mw#fR<4ay{KAtwmt$}-liID?@mS$l#{_SjG7z)bjg*?9ujf*tH{bNIJ20}I=LurL(Z2d^ZU50BMf_K2_+_hKw)-ul zNdGrE&BOHyfc0-7*v-Yo$JNmr8}a|71`-iEw#FY|pkH(G+xqyEhLu0o_knEjA8@1a z9|atLb^hD3y>#`;zkDN${2lrc{e=~OTc=|GO&eMG{{}Gq&kXk82BrZsa=3zjTSSLw z`d^%2h#l=B5uxK~@Xu`W-xWE3b^V)3)a+dCJRL#C1j51L9{c+s>VhSOK&0@(GBX<3 zlnDI#o45RTiBe2+KAIDZ9Dda0K-1zZejS{7PYucd7V4$)0}|ZT_owsmMQK?EeEOevxCu z@b4H*`gn8wmmBOj{QS1A{tQWpsMK+s|94FC%eDQNo8*5AcYmqn{Y~NSINA6c|97}@ z{|Ntg9De`&na=;m;POw5d&K7a5yt&TR`$2x^7ruh{{T=e{x9?%$G-eGhx#W6)k1$8 zeZ+oM2mT1icuY?IW~@IWsQx<(iT~nM|LZLT6byeAs2s`}epC4zdIE6qmwxEi@5e$e z(Tnn$4}wmdfS%A$QM`gM|Mq~On&#s3=vq8I?^x1@NH!ccy^|*?uHb1P&na@AZYGb^ zi_3c)fu|u#iHE01%^}(qk4q|tPlWHeb~5FZkUA|VNnW$bPv+fMEi;jFxuq@pH~7=W zyc$XyUY9&s-+p2iXu-?9Yeh|K}SaJ~kWF zxm(>6b4>YEVtAhOtoKsQVAs~taG@m%$x|$N_pUCcAcbp@?Z}AXJ4AKYCp2o%pXw)PLBuUL5zj`aA6R4x?|gQM`LZKo7?71d@?2HrH*@| z_63^h0&CxAb2OJn>I=Q+dp!^K{O^g_-GtL-M-Y%*D$;&XVB493{Q2|X$BNy?+(*xq zm)i{z^yd(!%01Bm`N+N)8w_O20_^>^^B)&gSBv1s5Vy{07$x z-=$ugfpQb>a+BILm*MC212fdHC%N`5zt;U_)OxR`U}ul~PrizmTgJw8Go7hwY5XQ! zXJx!~&+Cjf_-wwYvS}}QsPVc0VueR=T@w>|u%!Ch08^*L~i_MC6 z@5?sn-QDQZ>1TU({oNU}-b`t)M;ptdCcZ0U> zTw7uPF0;Q+672Z-<%zcBLrY1iSQf{QtmuyVmhN9v`5LEAB~QfsLUOid>KvkRfW49V z$OKe)miof;#2zXtYxt;Un>?>9hX`alQAt_qk+)gI(;{Zx!JMj}tNRwn!d&6!T(Fpr zUcJ$?+HkZAQ&=taF$mvuBasvPz5gLSY4Ba*y+tRO zW)Zq?XfwC5IHu2y7^_zt^>*mjV2 zrt#nBGp*B2!ndA!b6dX*UIiaq7+&E)1P%K%x*xttI0vCE9OX4==BEKxqCnhz(a?jS z%O?WX-$|BY=Eq*X$dd9Q2o%(Gv z&QNt%JsUfWOOjfwgtECQHq3fxISgg^sq=_3Z3Szc*c499w2t0FO}meI7d_XeHHxo2 zdnDk0ZDy#-hWCo)zW=wXcH5q8*YHjAQWm+gX8Sks49KP^gCcElIoflGcy{}UqbFXb3Aocm&pU>dDm9@$Lux)vciq)YvI|Bxg+KM0)xIa; zV*JH}T%)5FGEwcfV*akuwE<5Lv%@V{J3mIM9mo|C1&PTN^=qDe$M8h)N&opCw`gkE z&|Sl)wi=_!{rPHSHO=3Ks+7~SlE|z5*T3plJLoY8TSrzqf7X9>uzRBzUX@p7TCbnL zA|G-OEselD1ha6l{d`)TYuyC?=BA=+dCiT%l0rf`*_Q#Ey`20zo4Oc|p9mAOWIea- zX~FyAt;$e!V%h8;TbQb#v1V`5H#`OqQ_?p!hXa|rJNm+}^h9`sa9SlXE#Kq%s(|g~ za_ug1K6jNje(o}=U%lbM82>m||7>X56{&xX6tkim22*1SaUT;+e|q7?%|sX*~nX z5F?Li@69)HJ;_UYcXq-RclUvF4Px5)`WC##xI$t`Zq{QSgfp34qU>wa-lwBpD5(!N zQ-VB?sbLxu>+PN3SqD(&bzUCCIfOMSrGR6bO6%-7uDoe7!rm1Eh|by+YF!-9u_=K0 z`Ad>%mCGm_w*q&KTbjnt)ozLs;LmRZpL9=nve-C6%u*I2v3e^PShq?x0NB=3quaL! zGIcly5C8cb)D_TBQRL)j#HPqY)nBtv!#WcQdIrf0PA>WnZ3!e%i9-@!CO32P3pjpe z=6TOVUocKa%xwQAw#ex;uqX9Ut6($|gsQE%f3PPim0B(|iwQi5Y*M%)1+?P+3Y|zX z`cKSddUaiaU0{Kfmt|6j{5eDx1ABIfxH|5DfhE;zdN47}!};wtJ%Z`g&fBI!q#Hv! zn#8=2|HSl7+(4~QCCXnKe-&&u*66?1rz5WsjsuylpUqB{aQWgOXy2J~k(3#B?uFk< z8h18A32ey4$bg^CQ6&1$u3x@ZX&G+n({D)BKk-!qOq;8xmep{A_NSbnwK&*X2m4dt zF6ws|O8W$U%;toqF}gMC(efK}_>KA76T5MX8(L*eUh^v1xkqC3JZqBD{$=)4OsoGA z4CaAj&JY?muGpbGJ%^X|iAGh50jJ1wrb|Cx_4NGs>(|roADFz_nI!SwnTW9iZiqL4 z59I}L-@>#-fqHVJz|5dU=-skw&$<9qJBOfT>qzaTaNqMkZ`M$~G2f?V{M`B8zy|o< z_HBmnQ|mTj9pBhKB!T48RRL;PHq+C_b2${4@~GMJ+OZUmsW+W(ZZirhCUowBd)Lqr zWYIO4J%GKOXplAdhae2Vo=e#_0d9KQoTX4p`vv-<>a-Netb~Z(M(W zLBCj^^ZQ(W;s#uv#uxz`G)W*~hB1O@bhqsmUC}7aoK(hp4k|h7otm)3Z}NQ3FDLY% zKEbO|NF`7%>yd*JX6G&mB(X0)anl|T=M@bsqt2?HLE6){HH5gfKs;c>;o9qvm&6%w z?}>I>9IVkj*a0Xs(}-o^peOWzy>`_1{vM`*$zE1eF!Z==GUINXpex6s)KlirdnhX2qg$xXdlpQm}`{|kQk}(a;BIJAFNYMJb-LnS=U+=qdxQ#VZ!x$zUh5Qo1 zE01*L9Bgo(eSwRAN_SjhC&#Luj`o2%?Z45P{n~WrLSm&=OSI?Hq)U(m-D&)(r87rkuuXdMeT1Fdga@&=8@Afem*=;3TeK-+Vlt8eePQEW`92%lx=H~Nq-Q2r6-8x;LD(g+P$iF; z*VCI55Vb0Y(PkqYzHh)2U$XAru^vee1~Azic8ivoapxSuVWLV{3qeT4p%sSYw(>rZ zPDZvPEKo7_9T(f}b}>V(I@r+d^%x^WsU8c4sWi0bLkUS-Jy?4yz(3`etrCF^#u}$s zvM=EX6Cw05mN%qR!e|9d;VqNwHMqoFt@?$RI>FosY>#;9yuB|P+!RN}?R`rS$znX{ zynCj(Mh)1WPM7c!~4k*wgxfw=vLrFc6+Zu9mo z5ozCbhvy6u$5|I+QP881EgSh*y#OlK2H=^vf=x*`*uN!Oc^6~0QR|vTGgrt?4cNzr z&EoYG<%IBd%tk;R)zL(#h#_c(Lh_LN4rW3G{^OQ-8@FL$^y9Xf&<9-9xC8%+nV32l#S21-h8l z0x$bsI`XH#S)&Ic?o`vlD=CF>*#6N&t2Z$H`am zufG`h`OXCUbRiAW0(WfLB?A&^$O(bXDZi!th^qiy9KgqhgMG&>o*=CR~!gM zycbHNKr!_g)O*fsh^mOH-SJZ4R@+Bh2M}8o>&^@OR>pQ27Fspqh)8rEqfxRyC&)sR zK*Hcqy*bsMxF|c-Ml^`DXV}J{AWV+5KeLU~O}<# zKG+nj|FQhSZe{G{7m2q$exp9=+QKCP2;8E+N;S(q}E&%F^#@(1Sik*a7zu?5_O4rJYw!I;jdae zVg+vd+qT`LS$iwm(*ay_jX7uCt#S^1yWESe9tYG2RSSUo{t zPy{>(*tXOfQiS-V4iPh91{UB%kzU&6a;NcC^Nl}_1I^ScCPRNhl$mZ^$wCQC?1RxAyjNlsp{F{j%;6`B0Mc6V58s6 z$efm_D^$O?x85T|VFKyCgs^D|Wp%L3j&2G^qio5j_V2sBD&`8ri)aytu8@~0XV6!* z;@>!}bzmgzjt<);f*J%m{215<%u!$M)WQCbKx=y7dh!^R1le3kbi`1&r5tIR80AEk zpgmm^h%`D$fqDP}XJXyuN7?M3Ks(h6= z>+8ypg;T*lwisw&4vbmQ14}dHx=6N7W0)lmS(+6b1@%QQuJ>QHC^Qqqqf9_~f$gwT zG8d5)c<_C;{|k*HX%mS7#}jfG8UWcuhYRX&Z>Eb8Gxx|QHa#sPmX?c&Bid?HZ1CKS#atmbd zFSIcTs@4G6v9FlVAhGWk#PMn3wr`E4kkPP4R=}&QzlbPGp&}$@;3d$EMqR-Ad>~0T zjR3eIt$niXR`*D~myffJsmnSn&^p0 zhmMFwvYIRz7QzPSXFA1rXX0sl{b)Uw~W?`xU z#yhOa(Q~#0RI*zAnD8c*7$QapEgKlV1x_A;+f&4%@&$Liwt~2T)q!ZqSMEzwF%T*a zuFDy3ULG0bJqdI5i5qxnH5lc1;RNB^_7I~Sb@{g#&1cOp^hKQay9jL|R}51;qoj6M zx?n|GpF5JECyq1Iom2&~7Yj|vGVg8HBu?x3Adt3=wkJ?Lspi~RsnCJSBoU7EKOrbz z=`is*N{6NFCFW%d?Bsak2Q%ZHQ$}o+EuLm|($F(k;rFfdqTA?ct=^Ihse@Gb>Fmd? zTgqL=Z^LLH^V=<6NCKlXa0Bx0H;E9ptf4eg3&M&!AP24xy1XVMr5AIOzM{`FB^Z6b zPj+iBz|lk|haES62&BTr7q+s{s8Mt|;o_K(;*Vm>VHqZ6)&b1G{9Q_rKGHnWFel)4 z0$HDO2gv#$iA&ieZ^D@wLp2mP3(y)135Yd2JfxTC%=OJ-2)bO*9WX&M8@L{>jbTIi6Qcpp!p(|-mm z37*P0i&GFXuoON{Rn4XYE+kNZo*=+^j}roTPM)9xDQWN|mR1{cPS8r{tzt80c}DCG zQ=7`2y^}`_O$ZF}DjKZLo|fl+;aG;|+ihwAM-PqeEp?BtO@L=AAY!)Htui8`z+75W zBxChh(y!!eQo>m!$8@bTW^k6Xgzo9>ZY`Z(|N1U9CuCQHnED*FM|L|4ATzG)5RauH z00E7jyNwG-jv?|tm0dHS<%2`7n)w)ZRdB~5xo48#tcSe20-6v{38R3%^2GES$TC?$ z3{D5`uA9yxh?Pu!uksX=)Camedw`Sl3)CsjT3&m0{jR9}d$2YUBaLeVqQV=f*In_$&@+v?rWB zOzM?mNIO@j+6x1>m)AfQr~8T7i|HpXmQw(T|01`%-Xou0lpS#Cx%20|LF8-jx{frK zpe~XLSOwMh*|O)=5}ErKGbCIxjeYn?dd^ogvaK|(Ct$hiFEux~LB4u-raS$HS>V>U zWNbZWdGy6h*ZB%92dUoXRC0;z!|`*Vy>PEM@ z(dGNo3#AoCieCGhgWV4mBYN@3(kA&xbO5PYy$`r&^9FyPhMzegM1&$8o8iwL$d*3An|w3k;!~UM_dAV}q?O?Y;q}N9BE6U35&u%0%_4ae6))D;^Rf zmJ3R6o}k0!KY-l+;rkA3yK$DBumr`)<#WHA|#HBT~>rr4Vvd$bhXx0LD0kN=sPabLh(* z=iw#SB>0$*;%J)*5MJ%M(*sY+C>HYn2ROvc8Thz43x0lMMGkDXV{j;+z!e=N{nV zOYaR*OfXmzEU_+#Fir=*3KoUKsos*7VO@P(%ZL=4;>E!%C`F*V%IWvAf zqpGwLsDp8}L+-t-%K95oNmeUK11}}VFuD$RrH@=DP>npt~Xx59g z0D*Ze|L4u=Qp?lF>)0|YOqhgh*?D_;lve?58PCaQ%d;|6m5;5IKe)pRN5{smpuP7d zZwZ$46XX=tVjjxbO2s50|Gg5`E8xuRJI)-f!nfGf@OC^~(s(*0O>#Hn26F}=jq`5DMj3A~H;7jGYoMK$#R9F!41jv#;zY2Z<5R4G# zX5mvx;_NHEwr0mhB$q!q$OkK?g+3a%?I&u|3;a04oi^7-UHlt=R$ueXXwEmkY9K+2w8?X zk2VD1*XFG+3B867pk7#Ao5kJs~S3pT(<@ z8i69T$7xx{BbWm{=|-IWD)>hiP?OmKmfz9rj-;D;&4L2qX=WH4gw6bM)EXACcjM^* z?Un7|6SIJ~4L*wnAp3dhGAuFJkcDg)-*C=2j;f732=jn>&hJ3(Hd8ZbuDO^8^Iz+D zYS&!=QY5FDVw2h@A(9|c(umEcS3~2`P0mEwA6}2n`4KZqK7MxjaQTPFt2``<)uK*L zrEvY?rD+WErD9{-fwF7)n#Le?y91c~Zjb`?H$)Vc04+=Dxd3!Hf%j)80F%>q0PA2| z!1_M$2zo+KCX2GATvMr(6O)R^co<@sWW3cy?BC4n*Ea4<-r9AWY>jI$g~Uu_f%Sug z?z`u?u{AvVY=2egP0z1yc_75pN!Z*7RHGG9Egye{Ertw*s}u~pZ1>O)`PkU|h*$>k zbl8GL?B6rhf6cs6pcsMA8x2wzHlQ_019**F|3Q@(D9WD_XFQS?b~NFIkSD|FR(_hw zOn6N;L*}5N)ZacWfM}g1<8ujni@4LL4@-++UN<*R>tYZMfe4SIWhX!m=VjYwbl9e& zxW~DE7(zT_%m~or^@5yQbMouk9C-_>urW|E<_&7_TM+;WD|u|BT=1?ss5{yLg;gf! zSw-SRCTX_2yoSA@vVqNEoFXB6h|99!QnInl@zvC^eG%x$q2~z?qrj5v4>C1*?wkxz zTnAtc&Mq`}mlmRhqccw*!}LgnhY&K6hqW%lMlbR}i9o;HSlsc`<79v`m7nFL^BAZC zaV2-*rMvo8py*?V)i^N823*1BlJ_NC^ffmNMWG#jiT~HWdhG%He5HlMTd?r0o6oNWrn?JYNvyax=+nVei+$V-?B#26iZx#De|h0o zaUCvcrUXe0oix7xsC7$=Lfz+~puynT^0RVR&F3KI%H)I@Su8l`5tZjlLE_)QUJ6JN zrzotdRY01R)d3_Cg$^I{M66p09X~%U3<7k7ewFpbYxSOmO!6UnA}Fj!1zg0<1i@dZ zIby{4#^4h}O^ToZY;i}^7_+z(7k_a(F^*tm`>)?+%k#aNaceY zm|aA*7nwGbvOw~zV9UC)C4`I+fO``NAya%+q+z9{;=9}ZFZ|qm^rJ1q*+pJO^a+a; zwJb#R^qC-ZEdXoe6L?`SqzvRn)C_V#bptUoPe2V_11N6$9q%FA<330DJfgtts$4>) zR^gWpw&$C?R0Oqg*V`}SKP+=<8k;{qVH^40eU160T(Uk!>hq7W(&5FakNnmkeViH? z>Ly&$2jz3~X#NaMW7kcw^y=oM?OlZTjmjh-L@==tWUtmlrBVcduHKnHI%G@_&H-hV zGZ`&2y(GYjb;;k?@hWr*OnY}%>X7*?SwAX8aWvl&PHzI1XF-67YUaz03YylhVO05} z$T~)>h{4sX#-ve>d1*|oBoRmpvacla3~c`dNKvH2;qXn^du!b+zW*5iDL}=grJEaJ zMn+CCba@ppHs+MA-Njb7h8Qm1q)z6$_H@W~5(tRW09ka+&wYsBoF&nBg}uKWh$wVQ z+NpuqwA0ry0t66ezRKz++{Y4cVBLzn!k@Gb z`nkU?0^}_9+hc(cvuDOG=;g!Wm*w;VVg+ z1V{p8r>g){IL*v}i72}1PsIjjc7gdBvj%~5zUDm~ z*}luzeMM>oD_II5(4<)CP8ZA}W>%4Xx!kZQKmh|3&GQE&K(~fUruZsWAzyUZX&yQ* zkuH%Gn^{D}p8_jUK+EA#z!*^Bv_a>`01sDjAddNr1y9CKAiDj(!eO-eSQ}e5s(~DexT-i3+$=UAL^SP)0E$1ZWeRu z%YG3t4+fH=f}X=IwdV(YpCPPVTiDW$uc>3#opu)}3rc+O?>?yNOs>}Y9c&249cP37cG94 zSWDdHOeTlqF3EqNPSpn|4(71}Xn)&@S8HA8H_5-@lo^$0Zmf)3_;I}96?jVqst5f% za(mgx_Lv809h}4W)TxRk4QK0watjxFZTfA7o2g3kpusDft8=uAa8v9F0N{VA`Ph|C z{RBF#%(oQpzXB1i>m|VppxcjlWRn`#jGBNX>{uhIw6br8wnExv}8_;A&{&F6a~D@SPnE-X2|em@vZ;oA_e6LGvb^AoJF` zjL$;B($MhBz*>Ry=7u}+p&_TEr7fFIjE)lIA~6K+neFdi`!0Pc&Nw6Hki?H#-(9Te z267QwfMKX%bPucGSsZ|%;4mZWKYN4C=Z8KIVr2Q`v!%dbSZ3ks&+^YRNHgEqs>o1s z`JuRNpjT5prC8}XbLq4a(X20F0T2^(gHaWQSWn2c(_Ev?2K@hmf9#;`UC>7tP&Eov zO0g14`EKSmO-8`=f#Rc<69N4IB5Q%7pyLD(&h6IcqdhV!)fQ?mBscifgUFEVS7cU^ zsOI;0Pm+?)^YKOA%2-RH$3Xh*7=s0~*t&^3bBv990Xg1dI&1~evQY7CY}46!FHMX> zW790Y^&4JyMEi1M=+7VHncJtWyD4D<^6ZrfxtKOkTz^cb$Tv|M!C4NJl}?ZG_S^Z?7Gf&23z4&l%$t|>xlXx#| zg8wYUZPi^S%7(Wq^kAK3e=H98{<&7!;o?40I=CqmPHxDUOI&ib;z@Aa9k!23-}lUS659lShPr(1xec#%v0SUJtl513l+a4 zDauqgIg@a|AYcg+DvRR&GVl(tz#5=HCQig&rnF;)06NtEZzO%fzN$eRAJxuOztd?u zj7yot%c24Zj0CABhYC5KjJ{FRIL`YLP?Y-kLv@78R-!^T7f`Il$(H$Nfwz}%MI|eP z5u8IX&1-C*-z-NfDqV!TR)(A{jx_1LnI`+Cgv_U33IC*wooEACGGpslHlF=&jY{P_mO91;VEJ6F>UK?elIPJ5n89?I+k=X;AGpu zxl>y-J4P7qg-;rT$b3jSF*hR5E-@O7lF)3V$w#|6KZ~@$ORvrfBnOP94P!$=ROY30 zf%0yH%CP2onpHh?-7Y{d=KG%LDcquuA3zPsl%-(O8LMNz63;$BF;h4>c~x~x#o#jq z!YhjXY+igct=572he$6ADHIidpco!$76!fNOvJo*yVe@qv^7@f117SER{Acp|1`zf z`<3WZ3?eEI(m+>aCnK0N0c^OM{LFh^f3ywPLNaTx&clW{d#CC`06w-fn~xiR_m&$! zjL@F6PZsI$5(JJEQG4xCnYba+0pD(SB)9R_oH~*~o_>fT+{_BIzG||%tFmB&>N8N` zy4lf5XwzIpNA&GI>OEa|4>&PlvydKvm2zT_#|X4d-ctylk`3|`N|@MAll#oU4_lV+ zHxJbwWt(o^Q($4Pl^LG!4L*-(f|$HtmAGXa5W5ss`BgSxLzhbK5_n&i#p@g>+*@R0 zv8&2Rv>9e;)gaEE&Bx}}GXP&o8dl`2gufvkjf-mX#%KVYuDm*OHdRMX?>z0^owD)|Xk__z$9m-4E3E#zO%_F*!Hemg-r>6{DExQ0=r$X>N@LnI$z5%@4m|o)OB{qk{syJ5`T^p;COD4OKRAy4EE#v#`@k!F;_miML z(BQlaip)32RXEt&f+kcvusF^mk6l)m8n04=hw{ zvtz|_(e+sf?9dKm{MQO(T$Ni#JiGbVfUL0%lcyyISjx^9^9HTAVcd0KOmZeh z)GnrEOd}J0Q3@ropH2x!6cmt)fdh)!s_tWeKDz?+dr3jmI0P3Cny3au@qF91E7KG? zSSvYwf3o5RmfRv)ZxN>Ge6aAtGI$xV%^t7Gm|i0hT>6sFrCwn0(=UBhQ{h-?BX*pq zQk2MEb;xgsjoF*m3DvjYg7cskV_5uDtYR*5r=a6#pR?V&QRVf7%GCNAq6vHI@k|u6 z+)Z@kgJ2^RR}x_LiXjAYmKX+Q|L-&DhR|zPicn;w7kS>fek|0W&A#H7r?vpjv#F~| z`7=~;>DSguy#N41Nr0dZ!^ ze`bdnqCEnC6TZo2JajYTG?#xEmFYLa?3aPtP6%8nua*^}?yE+q>!%ACi;ZhauxB;P zWdN|%zIOhW3`8g8K~LXp?BQMH=TTK_fOXtFwyMw`F6n76*m>&*Y;LztJH6g;-hC5?@WHGM%J=5xRtN^6bc2X`kR$nTfu5 zYBCzxK2OoK`+y6rfr==fQOCJy27!mF!6>M;2mwKn0t(k=%k{I&MW0*Eega@3CPADQ zRdyrc1to!Ytax(6%eK$$$o3j3SR5%;<4gI~R;pc_#B-CeR#E&*T$*L88C^HR<%zR3 z;2!8|=eu;~2t^N zA0_OF!6y~>cz3MJjB9uYf(teRD-zr9j5#yiP1Z!f0kqwih_e~lo!13?X=BtxIZlG- zJfsKIt9{PWcqH3}Z=Kv1NQuLRNX&=LY6p z@5GTXQ~0gtIBr(8%>cJ;++G3N_)kk2gw|3Ztv4H1wKaA|MM4P3SO)3=$#dp;uqiuE zlT~-=)u$za!E8QON}`+bXQ*JlwWm#JnWakD^rh1RDwl?C_B!LlgY<+5{}CU|bySmg z*ay3FHS7oi9t!|XsY-a%haF&_PkA;(%mud-E=b0N+N$+Y!k6C?#alRl5d}% zl{P6=@^jckUL?r5efEM;OL;!&&U8Gzu+sXPB|{mIzB_(YYaz-8TAO(jF}zf|n}gi? z08$x@PCB9@=uXCZebW}X2DqHdPYGRanKq~TS%nDkBR(+SI*Ef7Vp{Bcwd{6y+$X|x zTMvp%TG|1Jfu0F)S`qQRL^qKNNb$D#)04IjtwI)0cO|hZd)F@ldGP`X-fI@Tf#x-8 zVm=kPh%&uzEHgahQW{_J5>$wxm2x2%oG$5Kpn4Mg4T&P9=gXPtNN!P}d*gacb~rl} zOE-f9RR<162!ck13|_zrJ(4PL8p#_DWOPey#v)p`>6)BTXgJ;*O$(FXeniBho zGIW2@qEID{vbZija={(EhyWr3$(5T+F{nYWmQ4k#>}|?K!X-lZGIT5XgE5vI@3vG| zcgf6wA*Kocp>YI!{dN3&1GOn4KAC zt)Q3ivYh2rLRiL8rMXbI$|={8@_l4qp>3vnC;)GmD2gSARz4&H$CbYS=mhk>AW-{cY-crI--dtsZcg%^qQHx31lj z4}B#d9kq*r<8Z%3qXe$lro}jf+Yz>-1PQDZEZb0?XZXY_-&is@zt58HExlS%z1v5^ zY-`q@LbDLHNx*3=5r9<%M-gx-05_C$&hKD5J4dTn=D+s~q> z=ysCf6mX6`L$@Z@)%=*zigs0i6Y}Legb$}vIP`gn-5!V?Y`0Mg(|6Yo03h0OUQ!-Z zvv{ply-ab^9=u6pspwXA=X%pi%_r%LM~3$SoPX;trcdaGe*t3qU79pDYUgw{2Qt(1 zN`6=s_JccChL;2pmE9y$OQ4=OSS@$%~nl0m2y|9?N?`aN!R^*K$G?8Ud^ov4UZv7(RdZAqDU`?Za zJqQ`)z+^iS8|vvCG>YgTx{$yG$?h`IrhSIvV_O1!t2XMsB#w(JU=5nr!HKC-9f&V# zx;tG5*N3f=sq6%tR1rq|txRzgGZ>cYB!;pXS*3zu`2~)wf zDkgo_E7;>VCbz2Y;DnOL@<>&Ep@6})?@794f6dEB$A!lF?@QnQnV|0#eTW8}8r~b! zfZ}Ayg{&9!M_lfE)T`>R8FDZwrVxf9oOmoz)`@heO@596zD=KMB3mxl7@`k~gyJ1c zK?2Re2@)XRk_^crkUv!lr4Yz6u<}6qoEVPLvs^{_+U-ORQNYL@hA!f%T?5H+Oa>s& zcUI1c+aG%2f=7!mLs0i9YG|pyh0T7OBfm0zlfokdf8_&*__9dg+y~ZCfq2+e_fu~~ zD6+2Vk&{6t31^|(q-A22kD4w;$W-pp{LYgNeT-1a`+2ba+9yz?HH{Nd_Iimho9lAs z-0}msqaikMVwuq-O~l$Elj==m%ir~#T9JsB$@xOa^oijnk5(<5FFy~8vqo+1BI14awS#p8sxeaH z&*3YfUQhi6Ok^%_ZQ=pAcHI`0x;wTNavOwjR|*br47K)+xvE1tlAC>FtM4YT)WVP-)1?`iH+D^+2pS6rALSBydSsOtwXc*eK6G9gMP<>6S?blP z@Ebk+9ee=Snl+pIp+js8c0Q$#R4pC?P7K<1L+XrgNA5vde7M3h!I^FgXg`mw!}VVG zpSH(3hkW5k)VZdpX5bU0;u)ur4Dv5uqV+ZGNn7U-Pi@NUoVe(+d68X@1sNMDk@&s$ zLDU`&y|O-kDxp1Z37;?jR8O3*3SAF=0{Vo2IzwYrT)2P)1mRCakz1gtS7*XHZ;4twwUThE&~dEzuZD06qh{qDL-;;2cJsbg4)mVYMFE;} z>lBK7PavPPcO&vwLp$S>fEY9=hn7dI0UptOJzjqSm4gYf@Pn8f5G5{Oh~?&a zmMQ~C4c5uuyEYOn;W8`TIc0y#rnn9aix(*37++exDeh-fI|oC~sv;y5;x!g0QVCO=I*XNsN*1tXEZPEr1*i5M-b1ZnEbx`Ln6#k z;qC!gR>7uopEbUZR2A;oqkF+)vQN94uWf+_00%UIKNmjj`Xo0ro4-{rfx*D*#{S7X z=w#nL>ftw7bmxG8j7?D{KUVZYB0GlWg$uTGJtI7-FTrz9YL5_<0aey&>^zb&fI z+9!rkjztxH2kZ0A@OSKgxJ8CY$70_CbSxCz6t)CIQ3%e!6UIJbHM*mIxjMf@re@v$djG`(YD|^2) zK!Tl}hhN{8c*K%)GmobwAHF85eHu~(Sz$gqtRiijWf<}{{rdNbwa{rW1oDT{;$b0- z&g^}4U8kd!laMy>a+ZD<(fzIL;GKW{O;R|qT$bEWN6;vx>*V*oyoxh#g|wQRK*65A zm0=B0*L-cNLH^v_A?RCNjTzGF=#N=q0Uap=BFG&O3V3Af2_|;-$yXI!5J|CK1#6v7 zHN=$vE1yWjpN8C>6GutSXaG58575iKPnKV=vZB)Jf2c>Nl^c zIi$^hd~R})Q8HMK$2h@Xy%Wjnc;d+smkVaECp&(X8@y_Rt4O;pDVt#zNR|?=24k`U zS=y>qq`0!%Wbf4kL>Aj00nWX}ugW|CS!$<2%8hUJvg(F~|+sJ_cR) zhH6L1`#(>hs};$^>Z4;{SAjZVefJ$gqD5GN>RSJ_jYfz=iA_%rz?y$R1YuyQ?E%y2 z7sBA*o?%WtN_TLpl6m~KYX{e)sQhpCAtD7!rl5b!ol`@!f64@~?AGeTMNwZlyF34b z8M~PouCdPjVfw#66Mh*k@JDw-`rlU)Mb84y8!GF~AII0KtMLXqj|Nb|PBs_e{(Q=fnUqTm zS^rVv2@J+t5|#%#!RiDC%A-cN#RZ|hy9t4-4#eJ3cYZ1zx*D%Rb?}5&F(_3C4=d+z z&@K30+O2KyH)TNg{WVZ?W=32=4*Q1@Ta>7Zr##dT<|+iYGfBATl5ciT7RW~_;O{cp z-rDqpw5hz$p!9Fh2qvM$p9;2W=L1;q#t7Y2K9>$Ybfy{=YIg`@yHD z8oE|V&#!?gPFR3gmJKiZ0X~Y_7>;mB&F<=8sY}=$q8C&zvm;f;$@VpVIY?I>N`|i| zGJwr_4acxsQ>BC}QxS~iUWgpo-gwrqGU5ZiaWOMKdkC3b0E=2N20VHLKVK#B7DgV} zyu}&K!jmb3XIrb;zX?IQJwermyTPHG=q2`>@j`*}Ehd-!3}*l+W}N`ORi6unKEO%p z1E1wEIC)N7EVEL&ymFR9j|oExmvu0~VScmngD`(Xu`Q(Z&!i?0cvM$D0X-PICzeH{ zgcb+hUc;~5wGG?pkOVg0Hpx~o&nP6OTp0~||D-nsIa7t(QxVST$ks^0|^PaKT6;sDrGTzDL$ea_%WDZ44C;Uk+bnBmos{0HU z;TmCrFuTYkm$bXAprJ63dpR~-bM7AEgM^f-G(>U>U-crMws)m2M|vND$FFzv^Q6tE%&@+0{s`+v_qBUsJee}RN% z+2R=?`Y5dOh_UTQ#D9uDW**SQv&E>eUe<<8NQG{?tdk_DbGN`nY4j#bDX8_(qDRO3&E=! z_3fWZW!A?+psTO^{D0N%T^%V}vfr;(D>O94!3Usb-V%{!W~I(AE*R2XRR@Wg-q-ik zr-&|*8Do2gt`EnU%F+&^Zp^XH8#9sY89rNTTymDcwp# z0X`;AnNK{d8t=^bR-f$*?a^?tLI~OQ%UrRMz|yN1U)iD$Z}c!su%V`G8*qn~%u=od zw)@5l@nZj$Jm~+ULzf!*THNbxqryP_pbI^Q*P%V@CWj3wg%1AHqyDVH75-n_57u&5f*GH8o)zk#!6yUPeVwPZ_6i$A=&;2cT*0&tzed~V~QaA zL?j9N4iwH0A0uoJk;B0}m}EA<0RI@%!@KWK8>RfcF)W(a762>hX5%F*#5$$ho)k3| zuybM!;6i^?aarKrk^0##&h81hO zIZ1?E?yV()_GIN%W5l)7WB@CZ^pIGd*fke%Wo!19(YOjNPJ}3WNfH57JalizFRF|I z6P3^Te{zvNqNoVaTk2yK+M2uAgpBh}m+duMJV+gmmw!}MKo9KA<=X}!3!P$l5Yy{} z_gn~A&8h6m!4hv&ED2c*BnpD?C4oGldTJTroV>hDcCQH=FY1q>GNb6dr5=M^%i%+l z&A+q#*_bh)z@&r7-G!j|5aTge%e7LazCx1Z6DZ-ggZm-&lV@;KNYa#50-OtA;g&=U z@HWf9kC<5&Iynh{oC|MG^SjXP&82>bYn_t&Vj#TT<0u%3`edNiGOh>{2;>Oc?I@NP zf17ENHo%O0%Ww4g6N578!w95ci@}(1u4(fCtb)^!1}7MIuhzp#*9P43kGKntY>;$1 zvy=)Q!#0;AXZzqy?9@ikk-@;9RNvUAWCXDW5r{IR9&&$W5YH<5uCEes+^UyXijd69 z3=RMmNWz5Ggk)EfbYrN1DM()mdLNjRZ_UOQGXis=%1wFY7l~Yz74bt?QDPra&`V`N z5rBh{3jjQeDsO8fA!b!%XYR9K{ZeI-OOx}bkSX5IY}IEQ;H|%jpf3B~j$ZsM1EdY> z1co9R1V+X#=Zu-13Yvb$VoaKaH8XgDM9XBq{A&gE^f;1$J3CToSkk!W?e)GS=lT=q zXAHAqN}INxpY_!2AtU1*LG}pfzN>5o)7&w<`w9y@iQ&o_mGqjXpHYY{Z)YU#+|5A= z$RON;LTlzo+&!pSx&UA$f#kgq4?aZ4p2PzEv{X{pro>SK!U?6>e+wU9pmgj1*&3R3 zUIwoKP(Af?Nbb%y8*+EQ0gpw+`B<)L!{UG$uIMv<92^Os5mL1;h&z>#h3|yizXaAz z{m_$59Kppq+Hb06;YEBkua;0;hFh6FIN+<#_tsOUo zr}y6Qe0XGQK6z~u2@5jot5D0L5TTqxieb8W!8Vs51N2LZd;8kU zP5i-)Ujzq(Wli855ToB$`n)T6aPA<|fhjqMurI`7kTw&W8Rmh{P&|8)S?lD7$7c6* zP0c!0%hM|%_%8;iy#eJTnYClz;^LW4{j}mFz5L7eY@tc6Yvc=Hpe`k{BRv1e91;Iq zUA%+z6*Mv1%Qr0X9V3;Qka|krd6lsP0$6`qY1z!XP$1@AJ-jQxU}~5()6dJ}=9avPf?o@Ukl5@HCX#ezZ@sJ3NX z8n0x@nHSys@@R@9mF=%D*cbloDRq3$TLzp?3_7rOKeubwfCxncxJD^hfRlYHXz3Y> zDSM;r3)?oU1Uz3A*W(`O#2yH|WYiNciiKe5W3~yfbcjG0Ztd%P08tEs9ku(%!+A#{ z^pM4|&!T>--(-a?2(mSRaCUD8DKmkh98j4pa6O6kge)7;1|9Fp>ku+i38V=t2|d zI12l{X$v;L!jyoL7C%T?Z|+9JH#->aiP$2%GN@Dk8ov^5oxA>OE*aW~Pvgj&kgVoN zwQpg)c1tLq_t-E*(WtFCGmG>}^8My`VFxTF?m7MG0>cn}KT=JpaN?l?Z`{Kb>qyS`xg+;%=c!$Qz+ zEb@kW= zim;8I<2a-OeRj5$#pC!zaIR0w3w8fwP64KClV8ndEC1I0MoN<5HxOn9>1Nm{ib7%5 zIYh-YCwOu0h^;If=bUea8TG3z!t4XguOuooIg>*>EO3eUmk5ZCmn_#V{s%gsmYc#Zi8A9 zz4;L=Rrj3`Gn}Zb6n3Aq-_TduSYtFFDLROTD$Ko();PIb8l%FuMO(W9=}8cQNn=e| z!<{43|L2jpMr_CqeWH;%dIkY72i^U;y+PP^tj>+$cRBkjy0)CQjV;}T*v!=#K$wZ7 z{zdkhcH<7S=z!$VD0!@b&t0F|^=s}2i)4qgXd}o!^GoY!Ek&>M+;kFr`UyJ$CRgU1 zbRxOVtTd88E1{sq$hh#&oYOs@D2naXh%CcXaLLr9Bp*1=q|qo*C$eL3q3qNrNFnfR z?^mk5*7zs^`=J;`@B%tDY8@{=vi+OzT#;&lvcOrSM;bM>BHd@|Rkrhv4!>@5MKR*As$zCg z{htW*zFi>s)|I6O1ol2~qfg)R|SXmm{i^R=?T{b*3#o6-v>{qsOz|D@jS#~0si#7H_Rr9e~CKUt|&TI zBTF-9AE)X2%R7tjmPMhbj+e$J3Wz(ZTwT=phANJI$~VX^F)x=Hz(k&7st{MdWk>M- z$l-jWntnz`x`M0yg-sL}rT>D?JTmAeV#z&M_c?K4uKj#J@HIPA*XhLrcE!0zG>TLg zXN)+U^ibt{nMG)hP#~deeHa&e$7o!&q6Y|)2CZaahfu^tw}5f`7!IyTYB?^uo?q^} z-`Y<8m81mAW_p#%OJWDiqcVOPSi-UM)`jV$ZISUWB>3ha>vKDDk(}q8D(!?EwO_Z| zZkJ8E{rU`)q1-XXvgkyL*pS)35PHhPQ#==^PZVFu!PPVdx7#UC(Ps$4-G|_ z9(%Y)?(@xjZIksR#bzU6met*DJRVaeS7GQ_C{JG$8PElb_F>JeXoE;Gi&p{CQEE=v zSR0tG#jZ+8s?NE?(r2ID5|TSKc*CsFQBS3{`04UbFFWehk9Y!0<8@{ggVW@=GMwNB zsxh{TUWjIn%&tX$&x#cnzj|pqGq>=-FT&b}3A7kpw^a|t?`ycCpSAFI|0CgF=L-6S zh1~SQ6#d5V>MdsUY7!^&G(R2KsBIgYRn#*zcDIci}4v#F-64Q3ms5ZiDO{0FKMpax!%poEwEr ze#85Ca*M%=mLDg`#hc+Y4?iu0V+*DiqENotdvZ9!atol`0}ms9ny2V9zE&x7cBMX< zdt<`%{P}VFDq(DjHuabYv74buOxnesYQHS=UT|YS-N(Xf!)r`(y_lb-mlLU94p^wo zl-07Uw0u!HU)w~yNejGQ*CX3miXNmr2f!1Ib@xPG`yp<07#llU0F|#RPPx&GMEaiB zGe=U_Ewy;^#I`=`e;I#Ti4PyeywC1dj!`iyTQ7QL z>5GY^UT*mh8+H-cuxK)uY8*CUA1U*h9tG*NjOybm+)f)Fbhs&4U1oc(Z)FG1M+!poe6mA6V$1@}Ny+|!ZBuXM^Bo{{OQX$co_RCi)7l19 z;>jI@jH>)5_k;b~liQ)!^IfT)@RVN-bH`@|dGVwk)2Ckgc$*G~h@CO0hs!4-Pp`}l zKbN9xp{%DNHpI21ud>7to0AXs88=TR@UQz1*RvGRNpQLL=o!)K+8#X>;6WREr^c&4 zKkI~$;~?qG2Z#QeWZi84g6L-=8?+Yo$T1^>C2+F2;(AW^BJi_etdeNLt@o(8H?QYh z{B+ZfyPxGZx0jSaW{Ms!1nBIl+e}&CQ3_Hu(Y0BX*9Q$jM?o?+GGqGTPP7|50e{a4 zu3c12DAb0F>o8cd5%!fLFo7rZ1wurVVqNh}k{0`QyFMibg?iX-f8O47i73$KVG_Z& z$uhO&XnIFMiKlWl7&&CXI6vp5Q64i3C;fU5k4fd_jHkux;cFl=^_HE~ zQD;bcP&U*Yp=k5!f?WilcHR1~^FyJww152RWcMA*nV2|jTJm~_*iglY10Ob>)$i@p zRYObvQCCTDVah%s&1D&pF%*+VRLmaxzOhU+{%vFE<*HsyS6z5ICXl$o@^<+Z1H>Dy zrU46=urrs(Dx%!)NcXJ_f>qqFosp)E9=|Ly^N98EZB`DFlLfIA1^adqQUGiAvKdhhqp?vyU=)jO}|4==I; z7?0HvBT59TlO*1Q$|IzHIQ9a zO(i%+cjVJPQ_|UwwdTcE9X7bG@mykjS_q%9iQUuITbxBUq*R2I78sv)h<9EiC6m49 zBhd+pR7JeP`LEr%)r{*@`k+gwLdvpsiDJFE~^&7+$b z({;e(BfHZUKaICneL;*%f3e@#xoLaz=Rg3Y6-n#(TeRt&Wx1>pYS_vj#c-*!)5a># z{*X4dc2SYQ`X|Dxru9Tj(Tv?nYlS7Ggq1>sH;UankHr!rG-Kr0<=?n_(LLn6=kCR@ zWrbwnSAP1|jOLp=o0sN{Kcacp^J8^>FD-6wB(?F>-u}Vt^s{2ZngTf9cihFUb$kTr zqVh6D;VM+isoUb_Lc_)et5;yUX=K5eJ`OgleMWiVp^~4aEVdcVNjVvfGdnV?3BWE!CRL6Tc?@pU zcPY!-c(W2-Pkvk2dCUS`u?;d%A_O+Le(zi;oL5OOmSsw%J+M#A4K-XvT8+1@cs~t= z#jwNj^l#`{q4`8+>A{z6?Iw$_P;c=PSlRov6}J2Fp+&!LVUw6eu|~IKF&t?JC1;w$ zEklYz(XEcR-no38BS=u1O8O&OA>zwdSX4b#qOBK&EPUyHbeR;VT%b6~D|(wx8>>tE z{-(zH%dnVRc7%%ni1eHQ$68r^Xe#`gNH`#YmHl}D-cOBt-Dw;}sLUcGsUM<@YsciX zegcJE=SY$BixU}h^V@V>fGdZ%jT*TRV|v257t1zp?#1}?Ligh>iHW4pc8y%u{o0V0 z8nZmm_*u_RhWD;Dt@LOp7A_=CyeHUBGs$qYd9%G_y_%Nz~$xE)|tr@KS zU00rqisvo(vFYOjAUUE&}b`N4o zMw$6~iB-NV$y9y0Sa9K(r)Qo-U7=~+^yK8DWQ`L+zpi`UCYhgo^t7Zs@Z^(s$qT6x zQT5~3CgZDOD zAA%L}n|vFu#M{%$nU2b=ZoK{JQMLCHE2g{)%%j&_E(F+mY>Kk~+?Guu(vSx(OECX^ zsv%=*?3gNRMO)Vj(-cXLXjAEF*sRLy%xejaYx;b+ER>m^UQD61+*=_+%9@0%n3~#$ zkbugZ15AkxN+ULwmuNh-lbxEL6U`6P=H>SWiKf5vEQw^q zEltV8heBLdMa`bRz7kk_LtFPwoghc&$0w_<-JTOZa^y3W#Op#UC(^gu85YLk0R=`& z1q10Nlz6rgw^N%j;rsAx6dowE(G(U;kb;pvlXGnln(xR42fg&6T-_q?>ow*wY9VeG zb$Pv)M9-+EF%(Dqz#D#T$|-V*ksW+EiEm7-&uI| zR05xOa4O{Jpsij2z}_e1Q%-w&4udbr=||l)zxl|=4@%!G3y_hcHOVNQjg* zDD+>W=N`Y_r2#hClHS<_xyCbfb#)Sgm!RQ&8hUI&!F?5;#`PhK2O`C~tXn@ahm)ZM zQUX!?UJ!>N_x5FK>H~m>E)rT*gJ&~GYXe{lgZ-!07D3VfNML1GRaISSp_3beNaI<6 zP7J~xaqFAEJ{LDMd_-CVAAlgV342GbfDZS35B zmWF}g`~xb3%8Cm4i~O+9U66B5X6$L`g08&P=Z6iGHfMopQ{B>{tp*c#y^Wz^Jkog# zo*&oq8F-o|r__H0E1#hgBv20%M@c_ zk{|#dD_gvOuWzwLrm6u9#Ru(nyFY)5qEiUVnK>NRT{Nyyc7@+KLlf?Qa^l`YE$o#2 z)xHi~Qo?dQu&5mUX@;4P{_(M{-`7h*)9#S`_0qR?a@t4v_~bT$#(f&0w;FbU%K;DZ z*HfSYEJ$P73H^{1?0@nMc8TeD(ACouJn_ER;WSVIX+3<B!)oK-zob>*0}#tU1U1P{zt_^zMh>k z6M7w34$O7x6BQoubVs43{m3NqARfUt6C$U|+xgD(N%*!x@XS_r#X$cD$7+#)cRc9r zc(!Oh_uXgU4vk0x@y@wZh22GW?tI6wpX8CdLP3M`xJsrq_v2^NcCg!H=(1LWrYw*V z=+1(PUs^nua4qvy^Q~?Tt5Uc?&GwPZNSbg_0p?5i1Ft<*Y|;X0?sj({vu%G`RMb82+2ZB-kVq@*P_QYKT#3$F zd$JY+30S8uL7v$3p|@AMo)?|%1PwAcsQdzh_0f!2iK1&nngqo~WO%|G_m(E9%}+~D zN7Trw>p?+5$I8#o=Zsb}($c0KsA$qa?Zd$8Qwt5SWH?lw zxk+b{?rJVjp<&rO4JK~aUM6I_)y zh+bJodunzD135Zc5}PIIS6!JkojP?{2f0(470hs^BoStepynys-D|2TgM$Cfq>dCr zbsQt#9Tm_M@}WfI&iqzT+c{88GA1+hU*S-M%3J=q<)r`jKSGp6YYUS~w<(OQmCk?Y S!OxPxe};Odx+U7Kk^crUV9JvK literal 0 HcmV?d00001 From 1b12a531bf411d8c2a0b24ba8ed1885fed81966d Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Mon, 22 Feb 2021 23:07:10 +0100 Subject: [PATCH 12/16] gitignore for logs folder --- logs/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 logs/.gitignore diff --git a/logs/.gitignore b/logs/.gitignore new file mode 100644 index 000000000..c96a04f00 --- /dev/null +++ b/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file From 5c77a9871b97318f678fd653826aefe5ba531cb9 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 23 Feb 2021 13:32:10 +0100 Subject: [PATCH 13/16] add ajax transfer function to community server and api doc md --- community_server | 2 +- docu/community-server.api.md | 31 ++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/community_server b/community_server index 8cbfecc98..164e1e715 160000 --- a/community_server +++ b/community_server @@ -1 +1 @@ -Subproject commit 8cbfecc988d3b4f815daa496c9bff854a6758d99 +Subproject commit 164e1e715bd773814fba10dade7a4b3aff65d0ed diff --git a/docu/community-server.api.md b/docu/community-server.api.md index 983caa8c2..329881fda 100644 --- a/docu/community-server.api.md +++ b/docu/community-server.api.md @@ -60,4 +60,33 @@ Wenn alles okay: - transactionExecutingCount: how many transaction for this user currently pending and waiting for signing - count: sum of finished transactions user is involved - gdtSum: sum of gdt of user in cent with 2 places (Nachkommastellen) -- timeUsed: time used for getting data from db in seconds, only for analyse backend performance \ No newline at end of file +- timeUsed: time used for getting data from db in seconds, only for analyse backend performance + +## Send Coins Transaction +Make a simple GDD Transaction, send Coins from one user to other. +With new Option set in Login-Server: +```ini +unsecure.allow_auto_sign_transactions = 1 +``` +transactions can be auto-signed directly with handing in transaction. +Normally a forwarding to login-server check transactions side is neccessary to minimize security risks. + +POST http://localhost/transaction-send-coins/ajaxCreate +```json +{"session_id" : -127182, "amount": 2000000, "email": "maxim.mustermann@gmail.com", "memo":"Thank you :)"} +``` +- amout: amount to transfer, 2000000 = 200,00 GDD +- email: receiver email address, must be differ from user email +- memo: Details about transaction + +return if everything is ok: +```json +{"state":"success", "timeUsed": 0.0122} +``` +- timeUsed: time used for getting data from db in seconds, only for analyse backend performance + +Than the transaction was created on community server, send to login-server, signed (if unsecure.allow_auto_sign_transactions = 1) +and send back to community server and put into db. +After you get this answear you see the new transaction if you list transactions or call for the balance + + From 16af5409fd87f73c25f50eaba4ecbd1b1f2e3dc7 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 23 Feb 2021 13:50:23 +0100 Subject: [PATCH 14/16] add option in ajax request in send coins transaction for auto-sign enable/disable --- community_server | 2 +- docu/community-server.api.md | 10 +++++++--- login_server | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/community_server b/community_server index 164e1e715..7ebc7909e 160000 --- a/community_server +++ b/community_server @@ -1 +1 @@ -Subproject commit 164e1e715bd773814fba10dade7a4b3aff65d0ed +Subproject commit 7ebc7909eaf9e74ca81f561b0aac64797c3d0112 diff --git a/docu/community-server.api.md b/docu/community-server.api.md index 329881fda..0c889d7ae 100644 --- a/docu/community-server.api.md +++ b/docu/community-server.api.md @@ -73,11 +73,12 @@ Normally a forwarding to login-server check transactions side is neccessary to m POST http://localhost/transaction-send-coins/ajaxCreate ```json -{"session_id" : -127182, "amount": 2000000, "email": "maxim.mustermann@gmail.com", "memo":"Thank you :)"} +{"session_id" : -127182, "amount": 2000000, "email": "maxim.mustermann@gmail.com", "memo":"Thank you :)", "auto_sign": true} ``` - amout: amount to transfer, 2000000 = 200,00 GDD - email: receiver email address, must be differ from user email - memo: Details about transaction +- auto_sign: set to true to directly sign transaction if unsecure.allow_auto_sign_transactions = 1 is set return if everything is ok: ```json @@ -85,8 +86,11 @@ return if everything is ok: ``` - timeUsed: time used for getting data from db in seconds, only for analyse backend performance -Than the transaction was created on community server, send to login-server, signed (if unsecure.allow_auto_sign_transactions = 1) +Than the transaction was created on community server, send to login-server, signed (if unsecure.allow_auto_sign_transactions = 1 and auto_sign = true) and send back to community server and put into db. -After you get this answear you see the new transaction if you list transactions or call for the balance +After you get this answear you see the new transaction if you list transactions or call for the balance. + +Without auto-sign the transaction is pending on login-server and waits for the user to review it at +http://localhost/account/checkTransactions diff --git a/login_server b/login_server index 98d52617c..9b9115290 160000 --- a/login_server +++ b/login_server @@ -1 +1 @@ -Subproject commit 98d52617c896a1a50c0a2bab2305eb6e890e882b +Subproject commit 9b9115290c8d2ead756d64b70ae63a6571aa4693 From 1979b90e65e1c857fd380c79da9b9f17f02ee8ee Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 23 Feb 2021 14:10:19 +0100 Subject: [PATCH 15/16] update doc --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 620cff8d1..09ac2e24f 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Currently we only support `docker` as environment to run all services, since man - [docker](https://www.docker.com/) ## How to run? - +`git submodule update --recursive --init` `docker-compose up` ## Useful Links From 2b56fe6ea85883cb1f794793a57eee4e260f60bc Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Tue, 23 Feb 2021 14:10:59 +0100 Subject: [PATCH 16/16] update doc --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 09ac2e24f..7559c30ac 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,10 @@ Currently we only support `docker` as environment to run all services, since man - [docker](https://www.docker.com/) ## How to run? -`git submodule update --recursive --init` -`docker-compose up` +```bash +git submodule update --recursive --init +docker-compose up +``` ## Useful Links