diff --git a/src/interfaces/node.h b/src/interfaces/node.h --- a/src/interfaces/node.h +++ b/src/interfaces/node.h @@ -5,6 +5,7 @@ #ifndef BITCOIN_INTERFACES_NODE_H #define BITCOIN_INTERFACES_NODE_H +#include // For banmap_t #include // For HelpMessageMode #include // For CConnman::NumConnections #include // For Network @@ -93,6 +94,9 @@ std::vector>; virtual bool getNodesStats(NodesStats &stats) = 0; + //! Get ban map entries. + virtual bool getBanned(banmap_t &banmap) = 0; + //! Get total bytes recv. virtual int64_t getTotalBytesRecv() = 0; diff --git a/src/interfaces/node.cpp b/src/interfaces/node.cpp --- a/src/interfaces/node.cpp +++ b/src/interfaces/node.cpp @@ -4,6 +4,7 @@ #include +#include #include #include #include @@ -124,6 +125,13 @@ } return false; } + bool getBanned(banmap_t &banmap) override { + if (g_connman) { + g_connman->GetBanned(banmap); + return true; + } + return false; + } int64_t getTotalBytesRecv() override { return g_connman ? g_connman->GetTotalBytesRecv() : 0; } diff --git a/src/qt/bantablemodel.h b/src/qt/bantablemodel.h --- a/src/qt/bantablemodel.h +++ b/src/qt/bantablemodel.h @@ -5,7 +5,7 @@ #ifndef BITCOIN_QT_BANTABLEMODEL_H #define BITCOIN_QT_BANTABLEMODEL_H -#include "net.h" +#include #include #include @@ -13,6 +13,10 @@ class ClientModel; class BanTablePriv; +namespace interfaces { +class Node; +} + struct CCombinedBan { CSubNet subnet; CBanEntry banEntry; @@ -37,7 +41,7 @@ Q_OBJECT public: - explicit BanTableModel(ClientModel *parent = 0); + explicit BanTableModel(interfaces::Node &node, ClientModel *parent = 0); ~BanTableModel(); void startAutoRefresh(); void stopAutoRefresh(); @@ -62,6 +66,7 @@ void refresh(); private: + interfaces::Node &m_node; ClientModel *clientModel; QStringList columns; std::unique_ptr priv; diff --git a/src/qt/bantablemodel.cpp b/src/qt/bantablemodel.cpp --- a/src/qt/bantablemodel.cpp +++ b/src/qt/bantablemodel.cpp @@ -2,14 +2,15 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include "bantablemodel.h" +#include -#include "clientmodel.h" -#include "guiconstants.h" -#include "guiutil.h" +#include +#include +#include -#include "sync.h" -#include "utiltime.h" +#include +#include +#include #include #include @@ -43,9 +44,9 @@ Qt::SortOrder sortOrder; /** Pull a full list of banned nodes from CNode into our cache */ - void refreshBanlist() { + void refreshBanlist(interfaces::Node &node) { banmap_t banMap; - if (g_connman) g_connman->GetBanned(banMap); + node.getBanned(banMap); cachedBanlist.clear(); cachedBanlist.reserve(banMap.size()); @@ -72,8 +73,8 @@ } }; -BanTableModel::BanTableModel(ClientModel *parent) - : QAbstractTableModel(parent), clientModel(parent) { +BanTableModel::BanTableModel(interfaces::Node &node, ClientModel *parent) + : QAbstractTableModel(parent), m_node(node), clientModel(parent) { columns << tr("IP/Netmask") << tr("Banned Until"); priv.reset(new BanTablePriv()); // default to unsorted @@ -144,7 +145,7 @@ void BanTableModel::refresh() { Q_EMIT layoutAboutToBeChanged(); - priv->refreshBanlist(); + priv->refreshBanlist(m_node); Q_EMIT layoutChanged(); } diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -40,7 +40,7 @@ cachedBestHeaderHeight = -1; cachedBestHeaderTime = -1; peerTableModel = new PeerTableModel(m_node, this); - banTableModel = new BanTableModel(this); + banTableModel = new BanTableModel(m_node, this); pollTimer = new QTimer(this); connect(pollTimer, SIGNAL(timeout()), this, SLOT(updateTimer())); pollTimer->start(MODEL_UPDATE_DELAY);