mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-29 07:25:51 +00:00
Assign friendly names to trusted nodes.
This commit is contained in:
@@ -686,7 +686,7 @@ void Peer::recvHello(ripple::TMHello& packet)
|
||||
<< "Peer speaks version " <<
|
||||
(packet.protoversion() >> 16) << "." << (packet.protoversion() & 0xFF);
|
||||
mHello = packet;
|
||||
if (theApp->getUNL().nodeInCluster(mNodePublic))
|
||||
if (theApp->getUNL().nodeInCluster(mNodePublic, mNodeName))
|
||||
{
|
||||
mCluster = true;
|
||||
mLoad.setPrivileged();
|
||||
@@ -1785,7 +1785,11 @@ Json::Value Peer::getJson()
|
||||
if (mInbound)
|
||||
ret["inbound"] = true;
|
||||
if (mCluster)
|
||||
{
|
||||
ret["cluster"] = true;
|
||||
if (!mNodeName.empty())
|
||||
ret["name"] = mNodeName;
|
||||
}
|
||||
if (mHello.has_fullversion())
|
||||
ret["version"] = mHello.fullversion();
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ private:
|
||||
bool mActive;
|
||||
bool mCluster; // Node in our cluster
|
||||
RippleAddress mNodePublic; // Node public key of peer.
|
||||
std::string mNodeName;
|
||||
ipPort mIpPort;
|
||||
ipPort mIpPortConnect;
|
||||
uint256 mCookieHash;
|
||||
|
||||
@@ -64,15 +64,6 @@ void UniqueNodeList::start()
|
||||
// Load information about when we last updated.
|
||||
bool UniqueNodeList::miscLoad()
|
||||
{
|
||||
BOOST_FOREACH(const std::string& node, theConfig.CLUSTER_NODES)
|
||||
{
|
||||
RippleAddress a = RippleAddress::createNodePublic(node);
|
||||
if (a.isValid())
|
||||
sClusterNodes.insert(a);
|
||||
else
|
||||
cLog(lsWARNING) << "Entry in cluster list invalid: '" << node << "'";
|
||||
}
|
||||
|
||||
boost::recursive_mutex::scoped_lock sl(theApp->getWalletDB()->getDBLock());
|
||||
Database *db=theApp->getWalletDB()->getDB();
|
||||
|
||||
@@ -105,11 +96,20 @@ bool UniqueNodeList::miscSave()
|
||||
|
||||
void UniqueNodeList::trustedLoad()
|
||||
{
|
||||
BOOST_FOREACH(const std::string& node, theConfig.CLUSTER_NODES)
|
||||
BOOST_FOREACH(const std::string& c, theConfig.CLUSTER_NODES)
|
||||
{
|
||||
std::string node, name;
|
||||
size_t s = c.find(' ');
|
||||
if (s != std::string::npos)
|
||||
{
|
||||
name = c.substr(s+1);
|
||||
node = c.substr(0, s);
|
||||
}
|
||||
else
|
||||
node = c;
|
||||
RippleAddress a = RippleAddress::createNodePublic(node);
|
||||
if (a.isValid())
|
||||
sClusterNodes.insert(a);
|
||||
sClusterNodes.insert(std::make_pair(a, name));
|
||||
else
|
||||
cLog(lsWARNING) << "Entry in cluster list invalid: '" << node << "'";
|
||||
}
|
||||
@@ -1699,7 +1699,17 @@ bool UniqueNodeList::nodeInUNL(const RippleAddress& naNodePublic)
|
||||
bool UniqueNodeList::nodeInCluster(const RippleAddress& naNodePublic)
|
||||
{
|
||||
boost::recursive_mutex::scoped_lock sl(mUNLLock);
|
||||
return sClusterNodes.count(naNodePublic) != 0;
|
||||
return sClusterNodes.end() != sClusterNodes.find(naNodePublic);
|
||||
}
|
||||
|
||||
bool UniqueNodeList::nodeInCluster(const RippleAddress& naNodePublic, std::string& name)
|
||||
{
|
||||
boost::recursive_mutex::scoped_lock sl(mUNLLock);
|
||||
std::map<RippleAddress, std::string>::iterator it = sClusterNodes.find(naNodePublic);
|
||||
if (it == sClusterNodes.end())
|
||||
return false;
|
||||
name = it->second;
|
||||
return true;
|
||||
}
|
||||
|
||||
// vim:ts=4
|
||||
|
||||
@@ -88,7 +88,7 @@ private:
|
||||
std::vector<int> viReferrals;
|
||||
} scoreNode;
|
||||
|
||||
std::set<RippleAddress> sClusterNodes;
|
||||
std::map<RippleAddress, std::string> sClusterNodes;
|
||||
|
||||
typedef boost::unordered_map<std::string,int> strIndex;
|
||||
typedef std::pair<std::string,int> ipPort;
|
||||
@@ -155,6 +155,7 @@ public:
|
||||
|
||||
bool nodeInUNL(const RippleAddress& naNodePublic);
|
||||
bool nodeInCluster(const RippleAddress& naNodePublic);
|
||||
bool nodeInCluster(const RippleAddress& naNodePublic, std::string& name);
|
||||
|
||||
void nodeBootstrap();
|
||||
bool nodeLoad(boost::filesystem::path pConfig);
|
||||
|
||||
Reference in New Issue
Block a user