update proto files matching with pauls proto version, update code which use them

This commit is contained in:
Dario 2020-09-21 18:54:11 +02:00
parent 8d3783611a
commit 0552420cc2
9 changed files with 101 additions and 139 deletions

View File

@ -33,7 +33,7 @@ void DecodeTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
const char* pageName = "Decode Transaction";
model::messages::gradido::TransactionBody transactionBody;
proto::gradido::TransactionBody transactionBody;
bool decoded = false;
bool adminUser = false;
if(mSession && mSession->getNewUser()) {
@ -182,58 +182,51 @@ void DecodeTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
#line 82 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
if(transactionBody.has_transfer()) {
auto transfer = transactionBody.transfer();
char hex[65]; memset(hex, 0, 65);
responseStream << "\n";
responseStream << "\t\t<h3>Transfer</h3>\n";
responseStream << "\t\t<b>Sender</b>\n";
responseStream << "\t\t";
#line 87 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
for(int i = 0; i < transfer.senderamounts_size(); i++) {
auto sender = transfer.senderamounts(i);
char hex[65]; memset(hex, 0, 65);
sodium_bin2hex(hex, 65, (const unsigned char*)sender.ed25519_sender_pubkey().data(), sender.ed25519_sender_pubkey().size());
responseStream << "\t\t\t";
#line 86 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
if(transfer.has_local()) {
auto local_transfer = transfer.local();
auto sender_pubkey = local_transfer.sender().pubkey();
auto receiver_pubkey = local_transfer.receiver();
sodium_bin2hex(hex, 65, (const unsigned char*)sender_pubkey.data(), sender_pubkey.size());
responseStream << "\n";
responseStream << "\t\t\t<p>pubkey: ";
#line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( hex );
responseStream << "</p>\n";
responseStream << "\t\t\t<p>amount: ";
responseStream << "\t\t\t\t<h3>Local Transfer</h3>\n";
responseStream << "\t\t\t\t<b>From: </b>";
#line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( TransactionBase::amountToString(sender.amount()) );
responseStream << " GDD</p>\n";
responseStream << "\t\t";
#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t<b>Receiver</b>\n";
responseStream << "\t\t";
#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
for(int i = 0; i < transfer.receiveramounts_size(); i++) {
auto receiver = transfer.receiveramounts(i);
char hex[65]; memset(hex, 0, 65);
sodium_bin2hex(hex, 65, (const unsigned char*)receiver.ed25519_receiver_pubkey().data(), receiver.ed25519_receiver_pubkey().size());
responseStream << "\n";
responseStream << "\t\t\t<p>pubkey: ";
#line 101 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( hex );
responseStream << "</p>\n";
responseStream << "\t\t\t<p>amount: ";
#line 102 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( TransactionBase::amountToString(receiver.amount()) );
responseStream << " GDD</p>\n";
responseStream << "\t\t";
#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << "\n";
responseStream << "\t\t\t\t";
#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
sodium_bin2hex(hex, 65, (const unsigned char*)receiver_pubkey.data(), receiver_pubkey.size()); responseStream << "\n";
responseStream << "\t\t\t\t<b>To: </b>";
#line 95 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( hex );
responseStream << "\n";
responseStream << "\t\t\t\t<b>Amount: </b>";
#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( TransactionBase::amountToString(local_transfer.sender().amount()) );
responseStream << "\n";
responseStream << "\t\t\t";
#line 97 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t\t\t<h3>- Not implemented yet (Group Transfer) -</h3>\n";
responseStream << "\t\t\t";
#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t";
#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 101 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} else if(transactionBody.has_creation()) {
auto creation = transactionBody.creation();
auto receiver = creation.receiveramount();
auto receiver = creation.receiver();
char hex[65]; memset(hex, 0, 65);
sodium_bin2hex(hex, 65, (const unsigned char*)receiver.ed25519_receiver_pubkey().data(), receiver.ed25519_receiver_pubkey().size());
sodium_bin2hex(hex, 65, (const unsigned char*)receiver.pubkey().data(), receiver.pubkey().size());
Poco::AutoPtr<controller::User> user = nullptr;
if(adminUser) {
user = controller::User::create();
if(!user->load((const unsigned char*)receiver.ed25519_receiver_pubkey().data())) {
if(!user->load((const unsigned char*)receiver.pubkey().data())) {
user.assign(nullptr);
}
}
@ -241,32 +234,32 @@ void DecodeTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\n";
responseStream << "\t\t<h3>Creation</h3>\n";
responseStream << "\t\t";
#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 117 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
if(!adminUser || user.isNull() || !user->getModel()) { responseStream << "\n";
responseStream << "\t\t<p>pubkey: ";
#line 121 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( hex );
responseStream << "</p>\n";
responseStream << "\t\t";
#line 122 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\t<p>user: </p>\n";
responseStream << "\t\t<p>";
#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 121 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( user->getModel()->toHTMLString() );
responseStream << "</p>\n";
responseStream << "\t\t";
#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 122 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t<p>amount: ";
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 123 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( TransactionBase::amountToString(receiver.amount()) );
responseStream << " GDD</p>\n";
responseStream << "\t\t";
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t";
#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "</div>\n";
// begin include footer.cpsp

View File

@ -2,7 +2,7 @@
#include "Poco/DateTimeFormatter.h"
#include <sodium.h>
TransactionCreation::TransactionCreation(const std::string& memo, const model::messages::gradido::TransactionCreation& protoCreation)
TransactionCreation::TransactionCreation(const std::string& memo, const proto::gradido::GradidoCreation& protoCreation)
: TransactionBase(memo), mProtoCreation(protoCreation), mReceiverUser(nullptr)
{
memset(mReceiverPublicHex, 0, 65);
@ -19,13 +19,13 @@ TransactionCreation::~TransactionCreation()
int TransactionCreation::prepare()
{
const static char functionName[] = { "TransactionCreation::prepare" };
if (!mProtoCreation.has_receiveramount()) {
if (!mProtoCreation.has_receiver()) {
addError(new Error(functionName, "hasn't receiver amount"));
return -1;
}
auto receiverAmount = mProtoCreation.receiveramount();
auto receiver_amount = mProtoCreation.receiver();
auto receiverPublic = receiverAmount.ed25519_receiver_pubkey();
auto receiverPublic = receiver_amount.pubkey();
if (receiverPublic.size() != 32) {
addError(new Error(functionName, "receiver public invalid (size not 32)"));
return -2;

View File

@ -12,26 +12,26 @@
#pragma warning(disable:4800)
#include "TransactionBase.h"
#include "../proto/gradido/TransactionCreation.pb.h"
#include "../proto/gradido/GradidoCreation.pb.h"
#include "User.h"
class TransactionCreation : public TransactionBase
{
public:
TransactionCreation(const std::string& memo, const model::messages::gradido::TransactionCreation& protoCreation);
TransactionCreation(const std::string& memo, const proto::gradido::GradidoCreation& protoCreation);
~TransactionCreation();
int prepare();
inline User* getUser() { return mReceiverUser; }
inline google::protobuf::int64 getAmount() { return mProtoCreation.receiveramount().amount(); }
inline google::protobuf::int64 getAmount() { return mProtoCreation.receiver().amount(); }
inline char* getPublicHex() { return mReceiverPublicHex; }
inline std::string getAmountString() { return amountToString(getAmount()); }
std::string getTargetDateString();
protected:
const model::messages::gradido::TransactionCreation& mProtoCreation;
const proto::gradido::GradidoCreation& mProtoCreation;
char mReceiverPublicHex[65];
User* mReceiverUser;
};

View File

@ -46,7 +46,7 @@ void TransactionTransfer::KontoTableEntry::composeAmountCellString(google::proto
// ********************************************************************************************************************************
TransactionTransfer::TransactionTransfer(const std::string& memo, const model::messages::gradido::Transfer& protoTransfer)
TransactionTransfer::TransactionTransfer(const std::string& memo, const proto::gradido::GradidoTransfer& protoTransfer)
: TransactionBase(memo), mProtoTransfer(protoTransfer)
{
@ -61,67 +61,41 @@ int TransactionTransfer::prepare()
{
lock();
const static char functionName[] = { "TransactionTransfer::prepare" };
if (mProtoTransfer.senderamounts_size() == 0) {
addError(new Error(functionName, "hasn't sender amount(s)"));
unlock();
return -1;
}
if (mProtoTransfer.receiveramounts_size() == 0) {
addError(new Error(functionName, "hasn't receiver amount(s)"));
unlock();
return -2;
}
mKontoTable.reserve(mProtoTransfer.senderamounts_size() + mProtoTransfer.receiveramounts_size());
mKontoTable.reserve(2);
//auto receiverAmount = mProtoTransfer.receiveramount();
//auto senderAmount
int senderSum = 0;
int receiverSum = 0;
char pubkeyHexTemp[65];
for (int i = 0; i < mProtoTransfer.senderamounts_size(); i++) {
auto senderAmount = mProtoTransfer.senderamounts(i);
auto pubkey = senderAmount.ed25519_sender_pubkey();
senderSum += senderAmount.amount();
if (pubkey.size() != 32) {
addError(new ParamError(functionName, "invalid public key for sender ", i));
unlock();
return -3;
}
//User user((const unsigned char*)pubkey.data());
auto user = controller::User::create();
if (!user->load((const unsigned char*)pubkey.data())) {
sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)pubkey.data(), pubkey.size());
mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, senderAmount.amount(), true));
if (mProtoTransfer.has_local())
{
auto local_transfer = mProtoTransfer.local();
auto sender = local_transfer.sender();
auto sender_pubkey = sender.pubkey();
auto receiver_pubkey = local_transfer.receiver();
auto amount = sender.amount();
auto sender_user = controller::User::create();
auto receiver_user = controller::User::create();
if (!sender_user->load((const unsigned char*)sender_pubkey.data())) {
sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)sender_pubkey.data(), sender_pubkey.size());
mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, -amount, true));
}
else {
mKontoTable.push_back(KontoTableEntry(user->getModel(), senderAmount.amount(), true));
mKontoTable.push_back(KontoTableEntry(sender_user->getModel(), -amount, true));
}
}
for (int i = 0; i < mProtoTransfer.receiveramounts_size(); i++) {
auto receiverAmount = mProtoTransfer.receiveramounts(i);
auto pubkey = receiverAmount.ed25519_receiver_pubkey();
receiverSum += receiverAmount.amount();
if (receiverAmount.ed25519_receiver_pubkey().size() != 32) {
addError(new ParamError(functionName, "invalid public key for receiver ", i));
unlock();
return -4;
}
auto user = controller::User::create();
if (!user->load((const unsigned char*)pubkey.data())) {
sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)pubkey.data(), pubkey.size());
mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, receiverAmount.amount(), false));
if (!receiver_user->load((const unsigned char*)receiver_pubkey.data())) {
sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)receiver_pubkey.data(), receiver_pubkey.size());
mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, amount, true));
}
else {
mKontoTable.push_back(KontoTableEntry(user->getModel(), receiverAmount.amount(), false));
mKontoTable.push_back(KontoTableEntry(sender_user->getModel(), amount, true));
}
}
if (senderSum != receiverSum) {
addError(new Error(functionName, "sender amounts sum != receiver amounts sum"));
unlock();
return -5;
}
}
// TODO: add version for group transfer
/*

View File

@ -12,14 +12,14 @@
#pragma warning(disable:4800)
#include "TransactionBase.h"
#include "../proto/gradido/Transfer.pb.h"
#include "../proto/gradido/GradidoTransfer.pb.h"
#include "../controller/User.h"
class TransactionTransfer : public TransactionBase
{
public:
TransactionTransfer(const std::string& memo, const model::messages::gradido::Transfer& protoTransfer);
TransactionTransfer(const std::string& memo, const proto::gradido::GradidoTransfer& protoTransfer);
~TransactionTransfer();
int prepare();
@ -44,7 +44,7 @@ protected:
void composeAmountCellString(google::protobuf::int64 amount, bool negativeAmount);
};
const model::messages::gradido::Transfer& mProtoTransfer;
const proto::gradido::GradidoTransfer& mProtoTransfer;
std::vector<KontoTableEntry> mKontoTable;
};

View File

@ -56,7 +56,7 @@ protected:
TransactionType mType;
std::string mProtoMessageBase64;
model::messages::gradido::TransactionBody mTransactionBody;
proto::gradido::TransactionBody mTransactionBody;
TransactionBase* mTransactionSpecific;
HASH mHash;

View File

@ -11,8 +11,6 @@
#include "../lib/Profiler.h"
#include "../proto/gradido/Transaction.pb.h"
#include "sodium.h"
#include "../ServerConfig.h"
@ -96,8 +94,8 @@ int SigningTransaction::run() {
}
}
// get body bytes
model::messages::gradido::Transaction transaction;
auto bodyBytes = transaction.mutable_bodybytes();
proto::gradido::GradidoTransaction transaction;
auto bodyBytes = transaction.mutable_body_bytes();
*bodyBytes = mProcessingeTransaction->getBodyBytes();
if (*bodyBytes == "") {
getErrors(mProcessingeTransaction);
@ -132,7 +130,7 @@ int SigningTransaction::run() {
}
*/
// add to message
auto sigMap = transaction.mutable_sigmap();
auto sigMap = transaction.mutable_sig_map();
auto sigPair = sigMap->add_sigpair();
auto pubkeyBytes = sigPair->mutable_pubkey();
@ -147,7 +145,7 @@ int SigningTransaction::run() {
/*std::string protoPrettyPrint;
google::protobuf::TextFormat::PrintToString(transaction, &protoPrettyPrint);
printf("transaction pretty: %s\n", protoPrettyPrint.data());
model::messages::gradido::TransactionBody transactionBody;
proto::gradido::TransactionBody transactionBody;
transactionBody.MergeFromString(transaction.bodybytes());
google::protobuf::TextFormat::PrintToString(transactionBody, &protoPrettyPrint);
printf("transaction body pretty: \n%s\n", protoPrettyPrint.data());

View File

@ -8,7 +8,7 @@
#include "../model/User.h"
#include "../controller/User.h"
#include "../proto/gradido/Transaction.pb.h"
#include "../proto/gradido/GradidoTransaction.pb.h"
#include "ProcessingTransaction.h"

View File

@ -12,7 +12,7 @@
%>
<%%
const char* pageName = "Decode Transaction";
model::messages::gradido::TransactionBody transactionBody;
proto::gradido::TransactionBody transactionBody;
bool decoded = false;
bool adminUser = false;
if(mSession && mSession->getNewUser()) {
@ -81,36 +81,33 @@
<p><%= transactionBody.memo() %></p>
<% if(transactionBody.has_transfer()) {
auto transfer = transactionBody.transfer();
char hex[65]; memset(hex, 0, 65);
%>
<h3>Transfer</h3>
<b>Sender</b>
<% for(int i = 0; i < transfer.senderamounts_size(); i++) {
auto sender = transfer.senderamounts(i);
char hex[65]; memset(hex, 0, 65);
sodium_bin2hex(hex, 65, (const unsigned char*)sender.ed25519_sender_pubkey().data(), sender.ed25519_sender_pubkey().size());
<% if(transfer.has_local()) {
auto local_transfer = transfer.local();
auto sender_pubkey = local_transfer.sender().pubkey();
auto receiver_pubkey = local_transfer.receiver();
sodium_bin2hex(hex, 65, (const unsigned char*)sender_pubkey.data(), sender_pubkey.size());
%>
<p>pubkey: <%= hex %></p>
<p>amount: <%= TransactionBase::amountToString(sender.amount()) %> GDD</p>
<% } %>
<b>Receiver</b>
<% for(int i = 0; i < transfer.receiveramounts_size(); i++) {
auto receiver = transfer.receiveramounts(i);
char hex[65]; memset(hex, 0, 65);
sodium_bin2hex(hex, 65, (const unsigned char*)receiver.ed25519_receiver_pubkey().data(), receiver.ed25519_receiver_pubkey().size());
%>
<p>pubkey: <%= hex %></p>
<p>amount: <%= TransactionBase::amountToString(receiver.amount()) %> GDD</p>
<% } %>
<h3>Local Transfer</h3>
<b>From: </b><%= hex %>
<% sodium_bin2hex(hex, 65, (const unsigned char*)receiver_pubkey.data(), receiver_pubkey.size()); %>
<b>To: </b><%= hex %>
<b>Amount: </b><%= TransactionBase::amountToString(local_transfer.sender().amount()) %>
<% } else { %>
<h3>- Not implemented yet (Group Transfer) -</h3>
<% } %>
<% } else if(transactionBody.has_creation()) {
auto creation = transactionBody.creation();
auto receiver = creation.receiveramount();
auto receiver = creation.receiver();
char hex[65]; memset(hex, 0, 65);
sodium_bin2hex(hex, 65, (const unsigned char*)receiver.ed25519_receiver_pubkey().data(), receiver.ed25519_receiver_pubkey().size());
sodium_bin2hex(hex, 65, (const unsigned char*)receiver.pubkey().data(), receiver.pubkey().size());
Poco::AutoPtr<controller::User> user = nullptr;
if(adminUser) {
user = controller::User::create();
if(!user->load((const unsigned char*)receiver.ed25519_receiver_pubkey().data())) {
if(!user->load((const unsigned char*)receiver.pubkey().data())) {
user.assign(nullptr);
}
}