mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 08:00:38 +03:00
exploratory if tunnels are not created yet
This commit is contained in:
parent
9ecf2500f5
commit
d6b97670c4
@ -238,7 +238,7 @@ namespace util
|
|||||||
void HTTPConnection::FillContent (std::stringstream& s)
|
void HTTPConnection::FillContent (std::stringstream& s)
|
||||||
{
|
{
|
||||||
s << "Data path: " << i2p::util::filesystem::GetDataDir().string() << "<BR>" << "<BR>";
|
s << "Data path: " << i2p::util::filesystem::GetDataDir().string() << "<BR>" << "<BR>";
|
||||||
s << "Our external address:" << "<BR>" << "<BR>";
|
s << "Our external address:" << "<BR>";
|
||||||
for (auto& address : i2p::context.GetRouterInfo().GetAddresses())
|
for (auto& address : i2p::context.GetRouterInfo().GetAddresses())
|
||||||
{
|
{
|
||||||
switch (address.transportStyle)
|
switch (address.transportStyle)
|
||||||
@ -254,6 +254,9 @@ namespace util
|
|||||||
}
|
}
|
||||||
s << address.host.to_string() << ":" << address.port << "<BR>";
|
s << address.host.to_string() << ":" << address.port << "<BR>";
|
||||||
}
|
}
|
||||||
|
s << "<BR>Routers: " << i2p::data::netdb.GetNumRouters () << " ";
|
||||||
|
s << "Floodfills: " << i2p::data::netdb.GetNumFloodfills () << " ";
|
||||||
|
s << "LeaseSets: " << i2p::data::netdb.GetNumLeaseSets () << "<BR>";
|
||||||
|
|
||||||
s << "<P>Tunnels</P>";
|
s << "<P>Tunnels</P>";
|
||||||
for (auto it: i2p::tunnel::tunnels.GetOutboundTunnels ())
|
for (auto it: i2p::tunnel::tunnels.GetOutboundTunnels ())
|
||||||
|
24
NetDb.cpp
24
NetDb.cpp
@ -534,20 +534,20 @@ namespace data
|
|||||||
|
|
||||||
void NetDb::Explore ()
|
void NetDb::Explore ()
|
||||||
{
|
{
|
||||||
|
CryptoPP::RandomNumberGenerator& rnd = i2p::context.GetRandomNumberGenerator ();
|
||||||
|
uint8_t randomHash[32];
|
||||||
|
rnd.GenerateBlock (randomHash, 32);
|
||||||
|
RequestedDestination * dest = CreateRequestedDestination (IdentHash (randomHash), false, true);
|
||||||
|
auto floodfill = GetClosestFloodfill (randomHash, dest->GetExcludedPeers ());
|
||||||
|
if (floodfill)
|
||||||
|
{
|
||||||
|
LogPrint ("Exploring new routers ...");
|
||||||
auto exploratoryPool = i2p::tunnel::tunnels.GetExploratoryPool ();
|
auto exploratoryPool = i2p::tunnel::tunnels.GetExploratoryPool ();
|
||||||
auto outbound = exploratoryPool ? exploratoryPool->GetNextOutboundTunnel () : nullptr;
|
auto outbound = exploratoryPool ? exploratoryPool->GetNextOutboundTunnel () : nullptr;
|
||||||
auto inbound = exploratoryPool ? exploratoryPool->GetNextInboundTunnel () : nullptr;
|
auto inbound = exploratoryPool ? exploratoryPool->GetNextInboundTunnel () : nullptr;
|
||||||
if (outbound && inbound)
|
if (outbound && inbound)
|
||||||
{
|
{
|
||||||
CryptoPP::RandomNumberGenerator& rnd = i2p::context.GetRandomNumberGenerator ();
|
|
||||||
uint8_t randomHash[32];
|
|
||||||
rnd.GenerateBlock (randomHash, 32);
|
|
||||||
RequestedDestination * dest = CreateRequestedDestination (IdentHash (randomHash), false, true);
|
|
||||||
dest->SetLastOutboundTunnel (outbound);
|
dest->SetLastOutboundTunnel (outbound);
|
||||||
auto floodfill = GetClosestFloodfill (randomHash, dest->GetExcludedPeers ());
|
|
||||||
if (floodfill)
|
|
||||||
{
|
|
||||||
LogPrint ("Exploring new routers ...");
|
|
||||||
std::vector<i2p::tunnel::TunnelMessageBlock> msgs;
|
std::vector<i2p::tunnel::TunnelMessageBlock> msgs;
|
||||||
msgs.push_back (i2p::tunnel::TunnelMessageBlock
|
msgs.push_back (i2p::tunnel::TunnelMessageBlock
|
||||||
{
|
{
|
||||||
@ -564,9 +564,15 @@ namespace data
|
|||||||
outbound->SendTunnelDataMsg (msgs);
|
outbound->SendTunnelDataMsg (msgs);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
DeleteRequestedDestination (dest);
|
{
|
||||||
|
dest->SetLastOutboundTunnel (nullptr);
|
||||||
|
dest->SetLastReplyTunnel (nullptr);
|
||||||
|
i2p::transports.SendMessage (floodfill->GetIdentHash (), dest->CreateRequestMessage (floodfill->GetIdentHash ()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
DeleteRequestedDestination (dest);
|
||||||
|
}
|
||||||
|
|
||||||
void NetDb::Publish ()
|
void NetDb::Publish ()
|
||||||
{
|
{
|
||||||
|
6
NetDb.h
6
NetDb.h
@ -33,6 +33,7 @@ namespace data
|
|||||||
void ClearExcludedPeers ();
|
void ClearExcludedPeers ();
|
||||||
const RouterInfo * GetLastRouter () const { return m_LastRouter; };
|
const RouterInfo * GetLastRouter () const { return m_LastRouter; };
|
||||||
const i2p::tunnel::InboundTunnel * GetLastReplyTunnel () const { return m_LastReplyTunnel; };
|
const i2p::tunnel::InboundTunnel * GetLastReplyTunnel () const { return m_LastReplyTunnel; };
|
||||||
|
void SetLastReplyTunnel (i2p::tunnel::InboundTunnel * tunnel) { m_LastReplyTunnel = tunnel; };
|
||||||
bool IsExploratory () const { return m_IsExploratory; };
|
bool IsExploratory () const { return m_IsExploratory; };
|
||||||
bool IsLeaseSet () const { return m_IsLeaseSet; };
|
bool IsLeaseSet () const { return m_IsLeaseSet; };
|
||||||
bool IsExcluded (const IdentHash& ident) const { return m_ExcludedPeers.count (ident); };
|
bool IsExcluded (const IdentHash& ident) const { return m_ExcludedPeers.count (ident); };
|
||||||
@ -79,6 +80,11 @@ namespace data
|
|||||||
|
|
||||||
void PostI2NPMsg (I2NPMessage * msg);
|
void PostI2NPMsg (I2NPMessage * msg);
|
||||||
|
|
||||||
|
// for web interface
|
||||||
|
int GetNumRouters () const { return m_RouterInfos.size (); };
|
||||||
|
int GetNumFloodfills () const { return m_Floodfills.size (); };
|
||||||
|
int GetNumLeaseSets () const { return m_LeaseSets.size (); };
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool CreateNetDb(boost::filesystem::path directory);
|
bool CreateNetDb(boost::filesystem::path directory);
|
||||||
|
Loading…
Reference in New Issue
Block a user