dogecoin/src/qt/peerdialog.cpp
Patrick Lodder 4a1975b0e3
fix typo
2021-08-13 23:33:29 +02:00

177 lines
4.3 KiB
C++

// Copyright (c) 2011-2016 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include "guiutil.h"
#if defined(HAVE_CONFIG_H)
#include "config/bitcoin-config.h"
#endif
#include <iostream>
#include <string>
#include "peerdialog.h"
#include "ui_addpeerdialog.h"
#include "ui_testpeerdialog.h"
#include "net.h"
#include "net_processing.h"
#include "netbase.h"
#include "protocol.h"
#include "chainparams.h"
#include "util.h"
#include <stdio.h>
#include <QMessageBox>
#include <QHostAddress>
#include <QAbstractSocket>
#include <QUrl>
/** Function to manage peers */
QString PeerTools::ManagePeer(QString type, QString peer)
{
std::string peerAddress = peer.toStdString();
if(!g_connman)
return tr("Error: Peer-to-peer functionality missing or disabled");
if (type == "onetry")
{
CAddress addr;
g_connman->OpenNetworkConnection(addr, false, NULL, peerAddress.c_str());
return tr("Attempted to one try node.");
}
if (type == "add")
{
if(!g_connman->AddNode(peerAddress))
return tr("Error: Node already added");
}
else if(type == "remove")
{
if(!g_connman->RemoveAddedNode(peerAddress))
{
if(!g_connman->DisconnectNode(peerAddress))
return tr("Node not found in connected nodes");
return tr("Disconnected the node: ") + peer;
}
else
{
if(!g_connman->DisconnectNode(peerAddress))
return tr("Node not found in connected nodes");
}
}
return tr("Returned OK.");
}
/** Check if Peer is valid */
bool PeerTools::CheckPeerAddress(QString address)
{
CNetAddr addr;
return LookupHost(address.toStdString().c_str(), addr, true);
}
/** Get port based on current chain */
QString PeerTools::GetPort()
{
return QString::number(Params().GetDefaultPort());
}
/** Add Peer Dialog */
AddPeerDialog::AddPeerDialog(QWidget *parent) :
QWidget(parent),
ui(new Ui::AddPeerDialog)
{
ui->setupUi(this);
ui->peerPort->setValidator( new QIntValidator(1, 65535, this) );
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_addPeer_clicked()));
}
AddPeerDialog::~AddPeerDialog()
{
delete ui;
}
void AddPeerDialog::on_addPeer_clicked()
{
QString address = ui->peerAddress->text();
QString port = ui->peerPort->text();
QString data = "";
if(address.isEmpty())
{
QMessageBox::critical(this, tr("Add Peer"), tr("Please enter an address."), QMessageBox::Ok, QMessageBox::Ok);
return;
}
if(port.isEmpty())
{
port = PeerTools::GetPort();
ui->peerPort->setText(port);
}
if(!PeerTools::CheckPeerAddress(address))
{
QMessageBox::critical(this, tr("Add Peer"), tr("Please enter a valid peer address."), QMessageBox::Ok, QMessageBox::Ok);
return;
}
data = address + ":" + port;
if(QMessageBox::Ok == QMessageBox::information(this, tr("Add Peer"), PeerTools::ManagePeer("add", data), QMessageBox::Ok, QMessageBox::Ok))
this->close();
}
/** Add Test Peer Dialog */
TestPeerDialog::TestPeerDialog(QWidget *parent) :
QWidget(parent),
ui(new Ui::TestPeerDialog)
{
ui->setupUi(this);
ui->peerPort->setValidator( new QIntValidator(1, 65535, this) );
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_testPeer_clicked()));
}
TestPeerDialog::~TestPeerDialog()
{
delete ui;
}
void TestPeerDialog::on_testPeer_clicked()
{
QString address = ui->peerAddress->text();
QString port = ui->peerPort->text();
QString data = "";
if(address.isEmpty())
{
QMessageBox::critical(this, tr("Test Peer"), tr("Please enter an address."), QMessageBox::Ok, QMessageBox::Ok);
return;
}
if(port.isEmpty())
{
port = PeerTools::GetPort();
ui->peerPort->setText(port);
}
if(!PeerTools::CheckPeerAddress(address))
{
QMessageBox::critical(this, tr("Test Peer"), tr("Please enter a valid peer address."), QMessageBox::Ok, QMessageBox::Ok);
return;
}
data = address + ":" + port;
if(QMessageBox::Ok == QMessageBox::information(this, tr("Try Peer"), PeerTools::ManagePeer("onetry", data), QMessageBox::Ok, QMessageBox::Ok))
this->close();
}