mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-26 22:15:52 +00:00
Add private peers.
This commit is contained in:
@@ -300,6 +300,7 @@ void ConnectionPool::connectTo(const std::string& strIp, int iPort)
|
|||||||
{
|
{
|
||||||
if (theConfig.RUN_STANDALONE)
|
if (theConfig.RUN_STANDALONE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
{
|
{
|
||||||
Database* db = theApp->getWalletDB()->getDB();
|
Database* db = theApp->getWalletDB()->getDB();
|
||||||
ScopedLock sl(theApp->getWalletDB()->getDBLock());
|
ScopedLock sl(theApp->getWalletDB()->getDBLock());
|
||||||
|
|||||||
@@ -430,24 +430,29 @@ void Peer::processReadBuffer()
|
|||||||
case ripple::mtCONTACT:
|
case ripple::mtCONTACT:
|
||||||
{
|
{
|
||||||
ripple::TMContact msg;
|
ripple::TMContact msg;
|
||||||
|
|
||||||
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
||||||
recvContact(msg);
|
recvContact(msg);
|
||||||
else
|
else
|
||||||
cLog(lsWARNING) << "parse error: " << type;
|
cLog(lsWARNING) << "parse error: " << type;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ripple::mtGET_PEERS:
|
case ripple::mtGET_PEERS:
|
||||||
{
|
{
|
||||||
ripple::TMGetPeers msg;
|
ripple::TMGetPeers msg;
|
||||||
|
|
||||||
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
||||||
recvGetPeers(msg);
|
recvGetPeers(msg);
|
||||||
else
|
else
|
||||||
cLog(lsWARNING) << "parse error: " << type;
|
cLog(lsWARNING) << "parse error: " << type;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ripple::mtPEERS:
|
case ripple::mtPEERS:
|
||||||
{
|
{
|
||||||
ripple::TMPeers msg;
|
ripple::TMPeers msg;
|
||||||
|
|
||||||
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
||||||
recvPeers(msg);
|
recvPeers(msg);
|
||||||
else
|
else
|
||||||
@@ -666,7 +671,17 @@ void Peer::recvHello(ripple::TMHello& packet)
|
|||||||
std::string strIP = getSocket().remote_endpoint().address().to_string();
|
std::string strIP = getSocket().remote_endpoint().address().to_string();
|
||||||
int iPort = packet.ipv4port();
|
int iPort = packet.ipv4port();
|
||||||
|
|
||||||
theApp->getConnectionPool().savePeer(strIP, iPort, UniqueNodeList::vsInbound);
|
if (mHello.nodeprivate())
|
||||||
|
{
|
||||||
|
cLog(lsINFO) << boost::str(boost::format("Recv(Hello): Private connection: %s %s") % strIP % iPort);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Don't save IP address if the node wants privacy.
|
||||||
|
// Note: We don't go so far as to delete it. If a node which has previously announced itself now wants
|
||||||
|
// privacy, it should at least change its port.
|
||||||
|
theApp->getConnectionPool().savePeer(strIP, iPort, UniqueNodeList::vsInbound);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Consider us connected. No longer accepting mtHELLO.
|
// Consider us connected. No longer accepting mtHELLO.
|
||||||
@@ -994,7 +1009,7 @@ void Peer::recvGetContacts(ripple::TMGetContacts& packet)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// return a list of your favorite people
|
// Return a list of your favorite people
|
||||||
// TODO: filter out all the LAN peers
|
// TODO: filter out all the LAN peers
|
||||||
// TODO: filter out the peer you are talking to
|
// TODO: filter out the peer you are talking to
|
||||||
void Peer::recvGetPeers(ripple::TMGetPeers& packet)
|
void Peer::recvGetPeers(ripple::TMGetPeers& packet)
|
||||||
@@ -1510,6 +1525,7 @@ void Peer::sendHello()
|
|||||||
h.set_nodepublic(theApp->getWallet().getNodePublic().humanNodePublic());
|
h.set_nodepublic(theApp->getWallet().getNodePublic().humanNodePublic());
|
||||||
h.set_nodeproof(&vchSig[0], vchSig.size());
|
h.set_nodeproof(&vchSig[0], vchSig.size());
|
||||||
h.set_ipv4port(theConfig.PEER_PORT);
|
h.set_ipv4port(theConfig.PEER_PORT);
|
||||||
|
h.set_nodeprivate(theConfig.PEER_PRIVATE);
|
||||||
|
|
||||||
Ledger::pointer closedLedger = theApp->getMasterLedger().getClosedLedger();
|
Ledger::pointer closedLedger = theApp->getMasterLedger().getClosedLedger();
|
||||||
if (closedLedger && closedLedger->isClosed())
|
if (closedLedger && closedLedger->isClosed())
|
||||||
@@ -1526,7 +1542,7 @@ void Peer::sendHello()
|
|||||||
|
|
||||||
void Peer::sendGetPeers()
|
void Peer::sendGetPeers()
|
||||||
{
|
{
|
||||||
// get other peers this guy knows about
|
// Ask peer for known other peers.
|
||||||
ripple::TMGetPeers getPeers;
|
ripple::TMGetPeers getPeers;
|
||||||
|
|
||||||
getPeers.set_doweneedthis(1);
|
getPeers.set_doweneedthis(1);
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ private:
|
|||||||
ipPort mIpPortConnect;
|
ipPort mIpPortConnect;
|
||||||
uint256 mCookieHash;
|
uint256 mCookieHash;
|
||||||
uint64 mPeerId;
|
uint64 mPeerId;
|
||||||
|
bool mPrivate; // Keep peer IP private.
|
||||||
|
|
||||||
uint256 mClosedLedgerHash, mPreviousLedgerHash;
|
uint256 mClosedLedgerHash, mPreviousLedgerHash;
|
||||||
std::list<uint256> mRecentLedgers;
|
std::list<uint256> mRecentLedgers;
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ enum MessageType {
|
|||||||
|
|
||||||
// Sent on connect
|
// Sent on connect
|
||||||
|
|
||||||
|
|
||||||
message TMHello {
|
message TMHello {
|
||||||
required uint32 protoVersion = 1;
|
required uint32 protoVersion = 1;
|
||||||
required uint32 protoVersionMin = 2;
|
required uint32 protoVersionMin = 2;
|
||||||
@@ -46,6 +45,7 @@ message TMHello {
|
|||||||
optional uint32 ledgerIndex = 8;
|
optional uint32 ledgerIndex = 8;
|
||||||
optional bytes ledgerClosed = 9; // our last closed ledger
|
optional bytes ledgerClosed = 9; // our last closed ledger
|
||||||
optional bytes ledgerPrevious = 10; // the ledger before the last closed ledger
|
optional bytes ledgerPrevious = 10; // the ledger before the last closed ledger
|
||||||
|
optional bool nodePrivate = 11; // Request to not forward IP.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user