mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
update grpc to new version, update some things they don't work for create the first query to hedera
This commit is contained in:
parent
71edd964ac
commit
43dd1a5082
@ -98,6 +98,7 @@ set(GRPC_PATH "dependencies/grpc/_build/Debug")
|
||||
set(GRPC_ABSL_PATH "dependencies/grpc/_build/third_party/abseil-cpp/absl/types/Debug")
|
||||
set(GRPC_CARES_PATH "dependencies/grpc/_build/third_party/cares/cares/lib/Debug")
|
||||
set(GRPC_BORING_SSL_PATH "dependencies/grpc/_build/third_party/boringssl-with-bazel/Debug")
|
||||
set(GRPC_RE2_PATH "dependencies/grpc/_build/third_party/re2/Debug")
|
||||
find_library(GRPC_PLUSPLUS grpc++ PATHS ${GRPC_PATH} REQUIRED)
|
||||
find_library(GRPC_UNSECURE grpc++_unsecure PATHS ${GRPC_PATH} REQUIRED)
|
||||
find_library(GRPC_REFLECTION grpc++_reflection PATHS ${GRPC_PATH} REQUIRED)
|
||||
@ -110,13 +111,17 @@ find_library(GRPC_ADDRESS_SORTING address_sorting PATHS ${GRPC_PATH} REQUIRED)
|
||||
find_library(GRPC_CARES cares PATHS ${GRPC_CARES_PATH} REQUIRED)
|
||||
find_library(GRPC_BORING_SSL_CRYPTO crypto ${GRPC_BORING_SSL_PATH} REQUIRED)
|
||||
find_library(GRPC_BORING_SSL_SSL ssl ${GRPC_BORING_SSL_PATH} REQUIRED)
|
||||
find_library(GRPC_RE2 re2 ${GRPC_RE2_PATH} REQUIRED)
|
||||
|
||||
find_library(GRPC_ABSL_BAD_OPTIONAL_ACCESS absl_bad_optional_access ${GRPC_ABSL_PATH} REQUIRED)
|
||||
set(GRPC_LIBS
|
||||
${GRPC_PLUSPLUS} ${GRPC_REFLECTION} ${GRPC_UNSECURE} ${GRPC_LIB}
|
||||
${GRPC_ERROR_DETAILS} ${GRPC_RLIB} ${GRPC_UPB} ${GRPC_ALTS}
|
||||
${GRPC_ABSL_BAD_OPTIONAL_ACCESS} ${GRPC_ADDRESS_SORTING}
|
||||
${GRPC_CARES} ${GRPC_BORING_SSL_CRYPTO} ${GRPC_BORING_SSL_SSL}
|
||||
${GRPC_CARES}
|
||||
${GRPC_BORING_SSL_CRYPTO}
|
||||
${GRPC_BORING_SSL_SSL}
|
||||
${GRPC_RE2}
|
||||
)
|
||||
|
||||
set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include")
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
CREATE TABLE `crypto_keys` (
|
||||
`id` int unsigned NOT NULL AUTO_INCREMENT,
|
||||
`private_key` varbinary(64) NOT NULL,
|
||||
`private_key` binary(80) NOT NULL,
|
||||
`public_key` binary(32) NOT NULL,
|
||||
`crypto_key_type_id` int NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`),
|
||||
|
||||
@ -162,8 +162,13 @@ MemoryBin* KeyPairHedera::getCryptedPrivKey(const Poco::AutoPtr<SecretKeyCryptog
|
||||
if (password.isNull()) return nullptr;
|
||||
if (!mPrivateKey) return nullptr;
|
||||
|
||||
auto private_key_hex_string = DataTypeConverter::binToHex(mPrivateKey);
|
||||
printf("[KeyPairHedera::getCryptedPrivKey] private key hex: %s\n", private_key_hex_string.data());
|
||||
|
||||
MemoryBin* encryptedKey = nullptr;
|
||||
if (SecretKeyCryptography::AUTH_ENCRYPT_OK == password->encrypt(mPrivateKey, &encryptedKey)) {
|
||||
auto encrypted_private_key_hex_string = DataTypeConverter::binToHex(encryptedKey);
|
||||
printf("[KeyPairHedera::getCryptedPrivKey] encryptet private key hex: %s\n", encrypted_private_key_hex_string.data());
|
||||
return encryptedKey;
|
||||
}
|
||||
else {
|
||||
|
||||
@ -48,16 +48,14 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
auto uri_query = uri.getQueryParameters();
|
||||
std::string action = "";
|
||||
std::string account_id_from_query;
|
||||
if(uri_query.size() >= 2) {
|
||||
if(uri_query[0].first == "action") {
|
||||
action = uri_query[0].second;
|
||||
}
|
||||
if(uri_query[1].first == "account_id") {
|
||||
account_id_from_query = uri_query[1].second;
|
||||
}
|
||||
for(auto it = uri_query.begin(); it != uri_query.end(); it++) {
|
||||
printf("first: %s, second: %s\n", it->first.data(), it->second.data());
|
||||
}
|
||||
|
||||
if(action == "updateBalance") {
|
||||
int account_id = 0;
|
||||
if(DataTypeConverter::strToInt(account_id_from_query, account_id) != DataTypeConverter::NUMBER_PARSE_OKAY) {
|
||||
@ -67,7 +65,7 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
if(!hedera_account.size() || hedera_account[0].isNull()) {
|
||||
addError(new Error("Action Update Balance", "hedera id not found"));
|
||||
} else {
|
||||
hedera_account[0]->updateBalanceFromHedera(user);
|
||||
hedera_account[0]->updateBalanceFromHedera(user, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -227,7 +225,7 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t\t<div class=\"content\">";
|
||||
// end include header_large.cpsp
|
||||
responseStream << "\n";
|
||||
#line 152 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 150 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( getErrorsHtml() );
|
||||
responseStream << "\n";
|
||||
responseStream << "<div class=\"center-form-container\">\n";
|
||||
@ -244,38 +242,38 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t\t\t\t<div class=\"cell header-cell c5\">Aktionen</div>\n";
|
||||
responseStream << "\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 166 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 164 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
for(auto it = hedera_accounts.begin(); it != hedera_accounts.end(); it++) {
|
||||
auto hedera_account_model = (*it)->getModel();
|
||||
auto updateUrl = ServerConfig::g_serverPath + "/hedera_account?action=updateBalance&account_id=" + std::to_string(hedera_account_model->getID());
|
||||
responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<div class=\"row\">\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c2\">";
|
||||
#line 171 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 169 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( (*it)->getHederaId()->getModel()->toString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c3\">";
|
||||
#line 172 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 170 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( hedera_account_model->getBalanceDouble() );
|
||||
responseStream << " hbar</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c2\">";
|
||||
#line 173 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 171 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( model::table::HederaAccount::hederaNetworkTypeToString(hedera_account_model->getNetworkType()) );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c3\">";
|
||||
#line 174 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 172 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( hedera_account_model->getUpdatedString() );
|
||||
responseStream << "</div>\n";
|
||||
responseStream << "\t\t\t\t\t<div class=\"cell c5\">\n";
|
||||
responseStream << "\t\t\t\t\t<button class=\"form-button\" title=\"Anfrage an Hedera, kostet etwas\" onclick=\"window.location.href='";
|
||||
#line 176 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 174 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( updateUrl );
|
||||
responseStream << "'\" >\n";
|
||||
responseStream << "\t\t\t\t\t\tUpdate Balance\n";
|
||||
responseStream << "\t\t\t\t\t</button>\n";
|
||||
responseStream << "\t\t\t\t</div>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 180 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 178 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t</div>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
@ -283,7 +281,10 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t <h3>Einen neuen Account anlegen</h3>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div class=\"center-form-form\">\n";
|
||||
responseStream << "\t\t<form method=\"POST\">\n";
|
||||
responseStream << "\t\t<form method=\"POST\" action=\"";
|
||||
#line 185 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( ServerConfig::g_serverPath );
|
||||
responseStream << "/hedera_account\">\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\">Hedera Account ID</label>\n";
|
||||
responseStream << "\t\t\t<input class=\"form-control\" id=\"account-shard-num\" placeholder=\"shard\" type=\"number\" name=\"account-shard-num\"/>\n";
|
||||
responseStream << "\t\t\t<input class=\"form-control\" id=\"account-realm-num\" placeholder=\"realm\" type=\"number\" name=\"account-realm-num\"/>\n";
|
||||
@ -295,21 +296,21 @@ void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"account-network-type\">Network Type</label>\n";
|
||||
responseStream << "\t\t\t<select class=\"form-control\" name=\"account-network-type\" id=\"account-network-type\">\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 198 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 196 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
for(int i = 0; i < model::table::HEDERA_NET_COUNT; i++) { responseStream << "\n";
|
||||
responseStream << "\t\t\t\t<option value=\"";
|
||||
#line 199 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( i );
|
||||
responseStream << "\">";
|
||||
#line 199 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 197 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( model::table::HederaAccount::hederaNetworkTypeToString((model::table::HederaNetworkType)i) );
|
||||
responseStream << "</option>\n";
|
||||
responseStream << "\t\t\t";
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 198 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "\t\t\t</select>\n";
|
||||
responseStream << "\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"submit\" value=\"";
|
||||
#line 202 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
#line 200 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( gettext("Add Account") );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t</form>\n";
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
|
||||
#include "CryptoKey.h"
|
||||
#include "../SingletonManager/ErrorManager.h"
|
||||
#include "../lib/DataTypeConverter.h"
|
||||
|
||||
namespace controller {
|
||||
|
||||
@ -72,6 +73,9 @@ namespace controller {
|
||||
return nullptr;
|
||||
}
|
||||
MemoryBin* clearPassword = nullptr;
|
||||
auto encrypted_private_key = model->getPrivateKeyEncrypted();
|
||||
auto encrypted_private_key_hex_string = DataTypeConverter::binToHex(encrypted_private_key);
|
||||
printf("[CryptoKey::getKeyPair] encrypted private key hex: %s\n", encrypted_private_key_hex_string.data());
|
||||
if (password->decrypt(model->getPrivateKeyEncrypted(), &clearPassword) != SecretKeyCryptography::AUTH_DECRYPT_OK) {
|
||||
printf("[CryptoKey::getKeyPair] return null, error decrypting\n");
|
||||
return nullptr;
|
||||
|
||||
@ -73,7 +73,7 @@ namespace controller {
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
bool HederaAccount::updateBalanceFromHedera(Poco::AutoPtr<controller::User> user)
|
||||
bool HederaAccount::updateBalanceFromHedera(Poco::AutoPtr<controller::User> user, ErrorList* errorReceiver/* = nullptr*/)
|
||||
{
|
||||
static const char* functionName = "HederaAccount::updateBalanceFromHedera";
|
||||
|
||||
@ -101,7 +101,15 @@ namespace controller {
|
||||
query->sign(std::move(hedera_key_pair));
|
||||
|
||||
HederaRequest request;
|
||||
try {
|
||||
request.request(query);
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
printf("[HederaAccount::updateBalanceFromHedera] exception calling hedera request: %s\n", ex.displayText().data());
|
||||
}
|
||||
if (errorReceiver) {
|
||||
errorReceiver->getErrors(&request);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -27,7 +27,7 @@ namespace controller {
|
||||
inline void setHederaId(Poco::AutoPtr<controller::HederaId> hederaId) { mHederaID = hederaId; }
|
||||
inline Poco::AutoPtr<controller::HederaId> getHederaId() { return mHederaID; }
|
||||
|
||||
bool updateBalanceFromHedera(Poco::AutoPtr<controller::User> user);
|
||||
bool updateBalanceFromHedera(Poco::AutoPtr<controller::User> user, ErrorList* errorReceiver = nullptr);
|
||||
|
||||
protected:
|
||||
HederaAccount(model::table::HederaAccount* dbModel);
|
||||
|
||||
@ -1,9 +1,21 @@
|
||||
#include "NodeServer.h"
|
||||
#include "../SingletonManager/ErrorManager.h"
|
||||
#include "../SingletonManager/ConnectionManager.h"
|
||||
#include "Poco/RegularExpression.h"
|
||||
|
||||
namespace controller {
|
||||
|
||||
Poco::RegularExpression g_filterHttp("^https?://");
|
||||
|
||||
std::string NodeServerConnection::getUriWithPort() const
|
||||
{
|
||||
std::string protocol;
|
||||
g_filterHttp.extract(url, protocol);
|
||||
return url.substr(protocol.size()) + ":" + std::to_string(port);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
NodeServer::NodeServer(model::table::NodeServer* dbModel)
|
||||
{
|
||||
@ -74,12 +86,13 @@ namespace controller {
|
||||
if (model::table::NodeServerIsHederaNode(type)) {
|
||||
select << ", node_hedera_id";
|
||||
}
|
||||
select << " from node_servers ORDER BY RAND() LIMIT 1"
|
||||
select << " from node_servers where server_type = ? ORDER BY RAND() LIMIT 1"
|
||||
, Poco::Data::Keywords::into(result.url)
|
||||
, Poco::Data::Keywords::into(result.port);
|
||||
if (model::table::NodeServerIsHederaNode(type)) {
|
||||
select, Poco::Data::Keywords::into(hedera_node_id);
|
||||
}
|
||||
select , Poco::Data::Keywords::bind((int)type);
|
||||
try {
|
||||
if (1 == select.execute()) {
|
||||
if (model::table::NodeServerIsHederaNode(type)) {
|
||||
|
||||
@ -15,7 +15,11 @@ namespace controller {
|
||||
NodeServerConnection(const std::string& _url, int _port) : url(_url), port(_port) {}
|
||||
NodeServerConnection() :port(0) {};
|
||||
|
||||
std::string getUrlWithPort() const { return url + ":" + std::to_string(port); }
|
||||
// with http:// or https://
|
||||
inline std::string getUrlWithPort() const { return url + ":" + std::to_string(port); }
|
||||
|
||||
// without http:// or https://
|
||||
std::string getUriWithPort() const;
|
||||
|
||||
bool isValid() { return url != "" && port; }
|
||||
std::string url;
|
||||
|
||||
@ -31,6 +31,7 @@ namespace DataTypeConverter {
|
||||
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());}
|
||||
inline std::string binToHex(const std::vector<unsigned char>& data) { return binToHex(data.data(), data.size()); }
|
||||
|
||||
//! \param pubkey pointer to array with crypto_sign_PUBLICKEYBYTES size
|
||||
std::string pubkeyToHex(const unsigned char* pubkey);
|
||||
|
||||
@ -24,7 +24,7 @@ namespace model {
|
||||
bool sign(std::unique_ptr<KeyPairHedera> keyPairHedera);
|
||||
|
||||
inline const proto::Query* getProtoQuery() const { return &mQueryProto; }
|
||||
inline std::string getConnectionString() const { return mConnection.getUrlWithPort(); }
|
||||
inline std::string getConnectionString() const { return mConnection.getUriWithPort(); }
|
||||
|
||||
protected:
|
||||
Query(const controller::NodeServerConnection& connection);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user