From 122f5297226028bd6c8bd57ca20d41c6b92dbdb0 Mon Sep 17 00:00:00 2001 From: "craig.macgregor" Date: Wed, 30 Dec 2015 18:01:46 +1300 Subject: [PATCH] server selection now migrated from API to wallet, wallets communicate directly with servers --- NavajoCoin-qt.pro.user | 2 +- src/qt/overviewpage.cpp | 4 +- src/qt/res/images/splash.png | Bin 27400 -> 57011 bytes src/qt/sendcoinsdialog.cpp | 141 ++++++++++++++++++++++++++++------- src/qt/sendcoinsdialog.h | 11 ++- src/qt/walletmodel.cpp | 71 ------------------ 6 files changed, 125 insertions(+), 104 deletions(-) diff --git a/NavajoCoin-qt.pro.user b/NavajoCoin-qt.pro.user index 157d4b1..da26758 100755 --- a/NavajoCoin-qt.pro.user +++ b/NavajoCoin-qt.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp index e706432..5ace072 100755 --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -191,12 +191,12 @@ void OverviewPage::getMarketData() //bter - /* + QUrl bterUrl; bterUrl.setUrl("http://data.bter.com/api/1/ticker/NAV_BTC"); static QNetworkRequest bterReq(bterUrl); bterReq.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream"); - */ + // connect only first time if (bPrepare1st) diff --git a/src/qt/res/images/splash.png b/src/qt/res/images/splash.png index 8f6ff4a4a74bacb57796a6e0bebb82f0a3c85535..362b87cc3ea3494b9c779caee5a6174b72badc32 100644 GIT binary patch literal 57011 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%0D&UYhLS+va$*HKn+ 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 A(RLT+Eetgk> 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 literal 27400 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 diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 78bf8fa..508d53c 100755 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -33,6 +33,9 @@ #include #include +#include +#include + #include #include @@ -140,40 +143,86 @@ SendCoinsDialog::~SendCoinsDialog() delete ui; } -void SendCoinsDialog::apiRequest(QNetworkReply *reply){ +bool SendCoinsDialog::chooseServer(QJsonArray anonServers, QString localHash) +{ + int max = anonServers.size(); + if(serversTried.size() >= max) { + QMessageBox::warning(this, tr("Anonymous Transaction"), + tr("Unable to contact a verified server, please try again later."), + QMessageBox::Ok, QMessageBox::Ok); + return false; + } - QString rawReply = reply->readAll(); + //@TODO: refactor the random selection to be more efficient, eg. making array of possibilites then removing them once tried. - QJsonDocument jsonDoc = QJsonDocument::fromJson(rawReply.toUtf8()); + int randomNumber = qrand() % max; - QJsonObject jsonObject = jsonDoc.object(); + bool tried = false; + if(serversTried.size() > 0){ + for (int i = 0; i < serversTried.size(); i++){ + if(serversTried.at(i) == randomNumber) { + tried = true; + } + } + } - QString type = jsonObject["type"].toString(); + if(tried == false) { + QJsonObject randomAnon = anonServers.at(randomNumber).toObject(); + bool success = this->testServer(randomAnon["server"].toString(), localHash); - if(type == "SUCCESS"){ + if(success == false) { + serversTried.push_back(randomNumber); + return this->chooseServer(anonServers, localHash); + }else{ + return true; + } - QString address = jsonObject["address"].toString(); - QString publicKey = jsonObject["public_key"].toString(); - QString minAmount = jsonObject["min_amount"].toString(); - QString maxAmount = jsonObject["max_amount"].toString(); - QString txFee = jsonObject["transaction_fee"].toString(); + }else{ + return this->chooseServer(anonServers, localHash); + } +} +bool SendCoinsDialog::testServer(QString serverAddress, QString localHash) +{ + QSslSocket *socket = new QSslSocket(this); + socket->setPeerVerifyMode(socket->VerifyNone); - this->sendCoins(address); + socket->connectToHostEncrypted(serverAddress, 443); - }else{ - QMessageBox::warning(this, tr("Anonymous Transaction"), - tr("We were unable to locate an active Anonymous node, please try again later."), - QMessageBox::Ok, QMessageBox::Ok); + if(!socket->waitForEncrypted()){ + qDebug() << socket->errorString(); + return false; } -} + QString reqString = QString("POST /api/check-node HTTP/1.1\r\n" \ + "Host: %1\r\n" \ + "Content-Type: application/x-www-form-urlencoded\r\n" \ + "Connection: Close\r\n\r\n").arg(serverAddress); -void SendCoinsDialog::sslRequest() -{ - qDebug() << "sslRequest"; + socket->write(reqString.toUtf8()); + + while (socket->waitForReadyRead()){ + + while(socket->canReadLine()){ + QString line = socket->readLine(); + } + + QString rawReply = socket->readAll(); + QJsonDocument jsonDoc = QJsonDocument::fromJson(rawReply.toUtf8()); + QJsonObject jsonObject = jsonDoc.object(); + QString type = jsonObject["type"].toString(); + QJsonObject jsonData = jsonObject["data"].toObject(); + QString serverHash = jsonData["hash"].toString(); + + if(type == "SUCCESS" && serverHash == localHash) { + selectedServer = jsonData; + return true; + } else { + return false; + } + } } void SendCoinsDialog::on_sendButton_clicked() @@ -308,9 +357,40 @@ void SendCoinsDialog::on_sendButton_clicked() this->sendCoins(node); }else{ + + QString anonFileContents; + QString anonFilePath = QString("%1%2%3").arg(GetDefaultDataDir().string().c_str()).arg(QDir::separator()).arg("anon.dat"); + QFile anonFile(anonFilePath); + anonFile.open(QIODevice::ReadOnly | QIODevice::Text); + anonFileContents = anonFile.readAll(); + anonFile.close(); + + QJsonDocument anonJsonDoc = QJsonDocument::fromJson(anonFileContents.toUtf8()); + QJsonObject anonJsonObject = anonJsonDoc.object(); + QJsonArray anonServers = anonJsonObject["servers"].toArray(); + QString localHash = anonJsonObject["hash"].toString(); + int max = anonServers.size(); + + if(max <= 0) { + QMessageBox::warning(this, tr("Anonymous Transaction"), + tr("Your server list appears to be empty, please wait for peer network sync."), + QMessageBox::Ok, QMessageBox::Ok); + return; + } + + serversTried.clear(); + + bool serverReady = this->chooseServer(anonServers, localHash); + + qDebug() << serverReady; + qDebug() << selectedServer; + + /* + * @TODO: wire this back together once sever is selected + * + QSslSocket *socket = new QSslSocket(this); socket->setPeerVerifyMode(socket->VerifyNone); - //connect(socket, SIGNAL(encrypted()), this, SLOT(sslRequest())); socket->connectToHostEncrypted("api.navajocoin.org", 443); @@ -344,12 +424,17 @@ void SendCoinsDialog::on_sendButton_clicked() int contentLength = qAddress.length() + 8; - QString reqString = QString("POST /api/select-incoming-node HTTP/1.1\r\n" \ - "Host: api.navajocoin.org\r\n" \ + + + qDebug() << randomAnon["server"].toString(); + + + QString reqString = QString("POST /api/check-node HTTP/1.1\r\n" \ + "Host: %1\r\n" \ "Content-Type: application/x-www-form-urlencoded\r\n" \ - "Content-Length: %1\r\n" \ + "Content-Length: %2\r\n" \ "Connection: Close\r\n\r\n" \ - "address=%2\r\n").arg(contentLength).arg(qAddress); + "address=%3\r\n").arg(randomAnon["server"].toString()).arg(contentLength).arg(qAddress); socket->write(reqString.toUtf8()); @@ -365,7 +450,7 @@ void SendCoinsDialog::on_sendButton_clicked() QJsonObject jsonObject = jsonDoc.object(); QString type = jsonObject["type"].toString(); - //qDebug() << rawReply; + qDebug() << rawReply; if(type == "SUCCESS"){ @@ -391,6 +476,8 @@ void SendCoinsDialog::on_sendButton_clicked() }else{ + qDebug() << "NOT SUCCESS"; + qDebug() << jsonObject; QMessageBox::warning(this, tr("Anonymous Transaction"), tr("We were unable to locate an active Anonymous node, please try again later."), QMessageBox::Ok, QMessageBox::Ok); @@ -400,7 +487,7 @@ void SendCoinsDialog::on_sendButton_clicked() }//wait for ready read }//no socket error - + */ }//else diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h index c8e5b20..1c9a447 100755 --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -3,7 +3,11 @@ #include #include +#include +#include +#include #include +#include namespace Ui { class SendCoinsDialog; @@ -48,6 +52,8 @@ public slots: bool fNewRecipientAllowed; double minAmount; double maxAmount; + std::vector serversTried; + QJsonObject selectedServer; protected: void sendCoins(QString anonNode); @@ -69,9 +75,8 @@ private slots: void coinControlClipboardPriority(); void coinControlClipboardLowOutput(); void coinControlClipboardChange(); - void apiRequest(QNetworkReply *reply); - void sslRequest(); - + bool chooseServer(QJsonArray anonServers, QString localHash); + bool testServer(QString serverAddress, QString localHash); }; #endif // SENDCOINSDIALOG_H diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 18080de..762ccbc 100755 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -192,79 +192,8 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(const QString &txcomment, co return MaxAmount; } - //TODO encrypt the tx-comment - - //string to ecrypt: rcp.address.toStdString(); - - /* - char pubKey[] = "-----BEGIN PUBLIC KEY-----\n"\ - "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDS6KKqBKKCNxclmY/la1P8gGMc\n"\ - "o4hr5KKD/IeXGQmLiKeUhF0lX35S/jbG7AsS5LkS4cw3CHqvA+s6jUkQ7zv936yB\n"\ - "HxLCuflg+E4T5I9lnyIfbk/fw3LAh1NBSiXefddiABYgzibJKRoeCB+BG+bn+ixE\n"\ - "cR4HuyaCCKyPoft6WQIDAQAB\n"\ - "-----END PUBLIC KEY-----\n"; - - - - //QByteArray pubKeyBA = publicKey.toUtf8(); - - qDebug() << publicKey; - qDebug() << rcp.address; - - char pubKey[2048]; - memcpy(pubKey, publicKey.toStdString().c_str(), publicKey.size()); - - char plainText[2048/8]; - memcpy(plainText, rcp.address.toStdString().c_str(), rcp.address.size()); - - //char plainText[2048/8] = "This is some test text"; - - unsigned char encrypted[1024] = {}; - int padding = RSA_PKCS1_PADDING; - - RSA *rsa = NULL; - BIO *keybio; - keybio = BIO_new_mem_buf(pubKey, -1); - - BUF_MEM *bptr; - BIO_get_mem_ptr(keybio, &bptr); - - if(keybio == NULL){ - qDebug() << "Failed to create key BIO"; - } - - rsa = PEM_read_bio_RSA_PUBKEY(keybio, &rsa, NULL, NULL); - - if(rsa == NULL){ - qDebug() << "rsa is null"; - } - - - int result = RSA_public_encrypt(strlen(plainText), plainText, encrypted, rsa, padding); - - qDebug() << result; - - qDebug() << encrypted; - - QString qEnc = QString(encrypted); - QString q64; - QByteArray ba; - ba.append(qEnc); - q64 = ba.toBase64(); - - qDebug() << q64; - - strTxComment = q64.toStdString(); - - //qDebug() << strTxComment; - */ - strTxComment = txComment.toStdString(); - //qDebug() << txComment; - - //return OK; - } }