Skip to content
This repository was archived by the owner on Jul 23, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions DigitalNote.pro
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ HEADERS += src/qt/bitcoingui.h \
src/qt/adrenalinenodeconfigdialog.h \
src/qt/qcustomplot.h \
src/smessage.h \
src/webwalletconnector.h \
src/qt/messagepage.h \
src/qt/messagemodel.h \
src/qt/sendmessagesdialog.h \
Expand Down Expand Up @@ -449,6 +450,7 @@ SOURCES += src/qt/bitcoin.cpp src/qt/bitcoingui.cpp \
src/qt/adrenalinenodeconfigdialog.cpp \
src/qt/qcustomplot.cpp \
src/smessage.cpp \
src/webwalletconnector.cpp \
src/qt/messagepage.cpp \
src/qt/messagemodel.cpp \
src/qt/sendmessagesdialog.cpp \
Expand Down Expand Up @@ -613,6 +615,7 @@ macx:QMAKE_CXXFLAGS_THREAD += -pthread
macx:QMAKE_INFO_PLIST = share/qt/Info.plist

# Set libraries and includes at end, to use platform-defined defaults if not overridden
INCLUDEPATH += src/websocketapp
INCLUDEPATH += $$BOOST_INCLUDE_PATH $$BDB_INCLUDE_PATH $$OPENSSL_INCLUDE_PATH $$QRENCODE_INCLUDE_PATH
LIBS += $$join(BOOST_LIB_PATH,,-L,) $$join(BDB_LIB_PATH,,-L,) $$join(OPENSSL_LIB_PATH,,-L,) $$join(QRENCODE_LIB_PATH,,-L,)
LIBS += -lssl -lcrypto -lz -ldb_cxx$$BDB_LIB_SUFFIX
Expand Down
7 changes: 7 additions & 0 deletions src/init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "masternodeconfig.h"
#include "spork.h"
#include "smessage.h"
#include "webwalletconnector.h"

#ifdef ENABLE_WALLET
#include "db.h"
Expand Down Expand Up @@ -116,6 +117,7 @@ void Shutdown()
mempool.AddTransactionsUpdated(1);
StopRPCThreads();
SecureMsgShutdown();
WebWalletConnectorShutdown();

#ifdef ENABLE_WALLET
ShutdownRPCMining();
Expand Down Expand Up @@ -301,6 +303,7 @@ std::string HelpMessage()
strUsage += " -stakethreshold=<n> " + _("This will set the output size of your stakes to never be below this number (default: 100)") + "\n";
strUsage += " -liveforktoggle=<n> " + _("Toggle experimental features via block height testing fork, (example: -command=<fork_height>)") + "\n";
strUsage += " -mnadvrelay=<n> " + _("Toggle MasterNode Advanced Relay System via 1/0, (example: -command=<true/false>)") + "\n";
strUsage += " -webwallet=<n> " + _("Toggle web-wallet node flag via 1/0, (example: -command=<true/false>)") + "\n";

return strUsage;
}
Expand Down Expand Up @@ -990,6 +993,10 @@ bool AppInit2(boost::thread_group& threadGroup)

SecureMsgStart(fNoSmsg, GetBoolArg("-smsgscanchain", false));

// ********************************************************* Step 10.6: startup web wallet connector

WebWalletConnectorStart(GetBoolArg("-webwallet", false));

// ********************************************************* Step 11: start node

if (!CheckDiskSpace())
Expand Down
1 change: 1 addition & 0 deletions src/makefile.bsd
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ OBJS= \
obj/instantx.o \
obj/smessage.o \
obj/rpcsmessage.o \
obj/webwalletconnector.o \
obj/masternodeconfig.o \
obj/masternodeman.o \
obj/masternode.o \
Expand Down
1 change: 1 addition & 0 deletions src/makefile.linux-mingw
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ OBJS= \
obj/instantx.o \
obj/smessage.o \
obj/rpcsmessage.o \
obj/webwalletconnector.o \
obj/masternodeconfig.o \
obj/masternodeman.o \
obj/masternode.o \
Expand Down
1 change: 1 addition & 0 deletions src/makefile.mingw
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ OBJS= \
obj/instantx.o \
obj/smessage.o \
obj/rpcsmessage.o \
obj/webwalletconnector.o \
obj/masternodeconfig.o \
obj/masternodeman.o \
obj/masternode.o \
Expand Down
1 change: 1 addition & 0 deletions src/makefile.osx
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ OBJS= \
obj/instantx.o \
obj/smessage.o \
obj/rpcsmessage.o \
obj/webwalletconnector.o \
obj/masternodeconfig.o \
obj/masternodeman.o \
obj/masternode.o \
Expand Down
1 change: 1 addition & 0 deletions src/makefile.unix
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ OBJS= \
obj/instantx.o \
obj/smessage.o \
obj/rpcsmessage.o \
obj/webwalletconnector.o \
obj/masternodeconfig.o \
obj/masternodeman.o \
obj/masternode.o \
Expand Down
14 changes: 8 additions & 6 deletions src/rpcsmessage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -916,7 +916,8 @@ Value smsggetmessagesforaccount(const Array& params, bool fHelp)

Object result;
uint32_t nMessages = 0;
Array resMessages;
Array resMessagesIn;
Array resMessagesOut;
std::vector<std::string> accountAddresses;
char cbuf[256];

Expand Down Expand Up @@ -970,11 +971,11 @@ Value smsggetmessagesforaccount(const Array& params, bool fHelp)
objM.push_back(Pair("to", smsgStored.sAddrTo));
objM.push_back(Pair("text", std::string((char *) &msg.vchMessage[0]))); // ugh

resMessages.push_back(objM);
resMessagesIn.push_back(objM);
} else {
Object objM;
objM.push_back(Pair("message", "Could not decrypt."));
resMessages.push_back(objM);
resMessagesIn.push_back(objM);
};

nMessages++;
Expand Down Expand Up @@ -1021,19 +1022,20 @@ Value smsggetmessagesforaccount(const Array& params, bool fHelp)
objM.push_back(Pair("to", smsgStored.sAddrTo));
objM.push_back(Pair("text", std::string((char *) &msg.vchMessage[0])));

resMessages.push_back(objM);
resMessagesOut.push_back(objM);
} else {
Object objM;
objM.push_back(Pair("message", "Could not decrypt."));
resMessages.push_back(objM);
resMessagesOut.push_back(objM);
};
nMessages++;
};
delete it;
}


result.push_back(Pair("messages", resMessages));
result.push_back(Pair("messagesIn", resMessagesIn));
result.push_back(Pair("messagesOut", resMessagesOut));
snprintf(cbuf, sizeof(cbuf), "%u messages shown.", nMessages);
result.push_back(Pair("result", std::string(cbuf)));

Expand Down
43 changes: 39 additions & 4 deletions src/smessage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,9 @@ boost::signals2::signal<void (SecMsgStored& inboxHdr)> NotifySecMsgInboxChanged
boost::signals2::signal<void (SecMsgStored& outboxHdr)> NotifySecMsgOutboxChanged;
boost::signals2::signal<void ()> NotifySecMsgWalletUnlocked;

boost::signals2::signal<void (json_spirit::Object& inboxHdr)> NotifySecMsgInboxChangedJson;
boost::signals2::signal<void (json_spirit::Object& outboxHdr)> NotifySecMsgOutboxChangedJson;

bool fSecMsgEnabled = false;

std::map<int64_t, SecMsgBucket> smsgBuckets;
Expand All @@ -83,7 +86,7 @@ CCriticalSection cs_smsgThreads;

leveldb::DB *smsgDB = NULL;


using namespace json_spirit;
namespace fs = boost::filesystem;

bool SecMsgCrypter::SetKey(const std::vector<uint8_t>& vchNewKey, uint8_t* chNewIV)
Expand Down Expand Up @@ -2504,7 +2507,7 @@ int SecureMsgScanMessage(uint8_t *pHeader, uint8_t *pPayload, uint32_t nPayload,
};

std::string addressTo;
MessageData msg; // placeholder
MessageData msg;
bool fOwnMessage = false;

for (std::vector<SecMsgAddress>::iterator it = smsgAddresses.begin(); it != smsgAddresses.end(); ++it)
Expand All @@ -2530,7 +2533,7 @@ int SecureMsgScanMessage(uint8_t *pHeader, uint8_t *pPayload, uint32_t nPayload,
} else
{

if (SecureMsgDecrypt(true, addressTo, pHeader, pPayload, nPayload, msg) == 0)
if (SecureMsgDecrypt(false, addressTo, pHeader, pPayload, nPayload, msg) == 0)
{
if (fDebugSmsg)
LogPrint("smessage", "Decrypted message with %s.\n", addressTo.c_str());
Expand Down Expand Up @@ -2580,8 +2583,24 @@ int SecureMsgScanMessage(uint8_t *pHeader, uint8_t *pPayload, uint32_t nPayload,
{
dbInbox.WriteSmesg(chKey, smsgInbox);

if (reportToGui)
if (reportToGui) {
NotifySecMsgInboxChanged(smsgInbox);

LogPrint("webwallet", "webwallet: Sending update message in update to webwallet \n");
char cbuf[256];
Object messageObject;
messageObject.push_back(Pair("received", getTimeString(smsgInbox.timeReceived, cbuf, sizeof(cbuf))));
messageObject.push_back(Pair("sent", getTimeString(msg.timestamp, cbuf, sizeof(cbuf))));
messageObject.push_back(Pair("from", msg.sFromAddress));
messageObject.push_back(Pair("to", smsgInbox.sAddrTo));
messageObject.push_back(Pair("text", (char*)&msg.vchMessage[0]));

Object payload;
payload.push_back(Pair("type", "messagesIn"));
payload.push_back(Pair("data", messageObject));
NotifySecMsgInboxChangedJson(payload);
LogPrint("webwallet", "webwallet: Finished sending update message in update to webwallet \n");
}
LogPrint("smessage", "SecureMsg saved to inbox, received with %s.\n", addressTo.c_str());
};
};
Expand Down Expand Up @@ -3714,6 +3733,22 @@ int SecureMsgSend(std::string &addressFrom, std::string &addressTo, std::string
{
dbSent.WriteSmesg(chKey, smsgOutbox);
NotifySecMsgOutboxChanged(smsgOutbox);

LogPrint("webwallet", "webwallet: Sending update message out update to webwallet \n");

char cbuf[256];
Object messageObject;
messageObject.push_back(Pair("received", getTimeString(smsgOutbox.timeReceived, cbuf, sizeof(cbuf))));
messageObject.push_back(Pair("from", addressFrom));
messageObject.push_back(Pair("to", addressTo));
messageObject.push_back(Pair("text", message));

Object payload;
payload.push_back(Pair("type", "messagesOut"));
payload.push_back(Pair("data", messageObject));
NotifySecMsgOutboxChangedJson(payload);

LogPrint("webwallet", "webwallet: Finished sending update message out update to webwallet \n");
};
} // cs_smsgDB
};
Expand Down
4 changes: 4 additions & 0 deletions src/smessage.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
#include "wallet.h"
#include "base58.h"
#include "lz4/lz4.h"
#include "json/json_spirit_value.h"

using namespace json_spirit;

const unsigned int SMSG_HDR_LEN = 104; // length of unencrypted header, 4 + 2 + 1 + 8 + 16 + 33 + 32 + 4 +4
const unsigned int SMSG_PL_HDR_LEN = 1+20+65+4; // length of encrypted header in payload
Expand Down Expand Up @@ -45,9 +47,11 @@ class SecMsgStored;

// Inbox db changed, called with lock cs_smsgDB held.
extern boost::signals2::signal<void (SecMsgStored& inboxHdr)> NotifySecMsgInboxChanged;
extern boost::signals2::signal<void (json_spirit::Object& inboxHdr)> NotifySecMsgInboxChangedJson;

// Outbox db changed, called with lock cs_smsgDB held.
extern boost::signals2::signal<void (SecMsgStored& outboxHdr)> NotifySecMsgOutboxChanged;
extern boost::signals2::signal<void (json_spirit::Object& outboxHdr)> NotifySecMsgOutboxChangedJson;

// Wallet Unlocked, called after all messages received while locked have been processed.
extern boost::signals2::signal<void ()> NotifySecMsgWalletUnlocked;
Expand Down
2 changes: 2 additions & 0 deletions src/websocketpp/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
init_target("websocketpp")
final_target ()
Loading