Assign friendly names to trusted nodes.

This commit is contained in:
JoelKatz
2013-01-31 16:10:27 -08:00
parent 7d8df3dddf
commit 3d3304ff1b
5 changed files with 32 additions and 15 deletions

View File

@@ -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();

View File

@@ -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;

View File

@@ -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

View File

@@ -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);