mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-29 12:17:49 +02:00
Console: UI-changes only (no logging)
This commit is contained in:
parent
e054c6e82c
commit
182e78b145
2 changed files with 1357 additions and 487 deletions
File diff suppressed because it is too large
Load diff
|
@ -136,7 +136,7 @@ namespace tunnel
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LogPrint (eLogWarning, "Tunnel: hop index ", hop->recordIndex, " is out of range");
|
LogPrint (eLogWarning, "Tunnel: Hop index ", hop->recordIndex, " is out of range");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ namespace tunnel
|
||||||
if (idx >= 0 && idx < msg[0])
|
if (idx >= 0 && idx < msg[0])
|
||||||
hop->DecryptRecord (msg + 1, idx);
|
hop->DecryptRecord (msg + 1, idx);
|
||||||
else
|
else
|
||||||
LogPrint (eLogWarning, "Tunnel: hop index ", idx, " is out of range");
|
LogPrint (eLogWarning, "Tunnel: Hop index ", idx, " is out of range");
|
||||||
hop1 = hop1->prev;
|
hop1 = hop1->prev;
|
||||||
}
|
}
|
||||||
hop = hop->prev;
|
hop = hop->prev;
|
||||||
|
@ -235,8 +235,9 @@ namespace tunnel
|
||||||
// hops are in inverted order, we must print in direct order
|
// hops are in inverted order, we must print in direct order
|
||||||
for (auto it = m_Hops.rbegin (); it != m_Hops.rend (); it++)
|
for (auto it = m_Hops.rbegin (); it != m_Hops.rend (); it++)
|
||||||
{
|
{
|
||||||
s << " ⇒ ";
|
s << " <span class=\"arrowright\">⇒</span> <span class=\"hop\">";
|
||||||
s << i2p::data::GetIdentHashAbbreviation ((*it)->ident->GetIdentHash ());
|
s << i2p::data::GetIdentHashAbbreviation ((*it)->ident->GetIdentHash ());
|
||||||
|
s << "</span>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -251,8 +252,12 @@ namespace tunnel
|
||||||
|
|
||||||
void InboundTunnel::Print (std::stringstream& s) const
|
void InboundTunnel::Print (std::stringstream& s) const
|
||||||
{
|
{
|
||||||
|
s << "<span class=\"hops\">";
|
||||||
PrintHops (s);
|
PrintHops (s);
|
||||||
s << " ⇒ " << GetTunnelID () << ":me";
|
s << " <span class=\"arrowright zerohop\">⇒</span> ";
|
||||||
|
s << " <span class=\"tunnelid local\" data-tooltip=\"";
|
||||||
|
s << GetTunnelID () << "\">Local</span></span>";
|
||||||
|
s << "<span class=\"tunnelid\">" << GetTunnelID () << "</span>";
|
||||||
}
|
}
|
||||||
|
|
||||||
ZeroHopsInboundTunnel::ZeroHopsInboundTunnel ():
|
ZeroHopsInboundTunnel::ZeroHopsInboundTunnel ():
|
||||||
|
@ -273,7 +278,10 @@ namespace tunnel
|
||||||
|
|
||||||
void ZeroHopsInboundTunnel::Print (std::stringstream& s) const
|
void ZeroHopsInboundTunnel::Print (std::stringstream& s) const
|
||||||
{
|
{
|
||||||
s << " ⇒ " << GetTunnelID () << ":me";
|
s << "<span class=\"hops\">";
|
||||||
|
s << "<span class=\"arrowright zerohop\">⇒</span> <span class=\"tunnelid local\" data-tooltip=\""
|
||||||
|
<< GetTunnelID () << "\">Local</span></span>";
|
||||||
|
s << "<span class=\"tunnelid\">" << GetTunnelID () << "</span>";
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutboundTunnel::SendTunnelDataMsg (const uint8_t * gwHash, uint32_t gwTunnel, std::shared_ptr<i2p::I2NPMessage> msg)
|
void OutboundTunnel::SendTunnelDataMsg (const uint8_t * gwHash, uint32_t gwTunnel, std::shared_ptr<i2p::I2NPMessage> msg)
|
||||||
|
@ -307,14 +315,15 @@ namespace tunnel
|
||||||
|
|
||||||
void OutboundTunnel::HandleTunnelDataMsg (std::shared_ptr<const i2p::I2NPMessage> tunnelMsg)
|
void OutboundTunnel::HandleTunnelDataMsg (std::shared_ptr<const i2p::I2NPMessage> tunnelMsg)
|
||||||
{
|
{
|
||||||
LogPrint (eLogError, "Tunnel: incoming message for outbound tunnel ", GetTunnelID ());
|
LogPrint (eLogError, "Tunnel: Incoming message for outbound tunnel ", GetTunnelID ());
|
||||||
}
|
}
|
||||||
|
|
||||||
void OutboundTunnel::Print (std::stringstream& s) const
|
void OutboundTunnel::Print (std::stringstream& s) const
|
||||||
{
|
{
|
||||||
s << GetTunnelID () << ":me";
|
s << "<span class=\"hops\">";
|
||||||
|
s << "<span class=\"tunnelid local\" data-tooltip=\"" << GetTunnelID () << "\">Local</span>";
|
||||||
PrintHops (s);
|
PrintHops (s);
|
||||||
s << " ⇒ ";
|
s << "</span> <span class=\"tunnelid\">" << GetTunnelID () << "</span>";
|
||||||
}
|
}
|
||||||
|
|
||||||
ZeroHopsOutboundTunnel::ZeroHopsOutboundTunnel ():
|
ZeroHopsOutboundTunnel::ZeroHopsOutboundTunnel ():
|
||||||
|
@ -348,7 +357,11 @@ namespace tunnel
|
||||||
|
|
||||||
void ZeroHopsOutboundTunnel::Print (std::stringstream& s) const
|
void ZeroHopsOutboundTunnel::Print (std::stringstream& s) const
|
||||||
{
|
{
|
||||||
s << GetTunnelID () << ":me ⇒ ";
|
s << "<span class=\"hops\">";
|
||||||
|
s << "<span class=\"arrowright\">⇒</span> ";
|
||||||
|
s << "<span class=\"tunnelid local\" data-tooltip=\""
|
||||||
|
<< GetTunnelID () << "\">" << GetTunnelID () << "\">Local</span></span>";
|
||||||
|
s << "<span class=\"tunnelid\">" << GetTunnelID () << "</span>";
|
||||||
}
|
}
|
||||||
|
|
||||||
Tunnels tunnels;
|
Tunnels tunnels;
|
||||||
|
@ -460,7 +473,7 @@ namespace tunnel
|
||||||
if (m_Tunnels.emplace (tunnel->GetTunnelID (), tunnel).second)
|
if (m_Tunnels.emplace (tunnel->GetTunnelID (), tunnel).second)
|
||||||
m_TransitTunnels.push_back (tunnel);
|
m_TransitTunnels.push_back (tunnel);
|
||||||
else
|
else
|
||||||
LogPrint (eLogError, "Tunnel: tunnel with id ", tunnel->GetTunnelID (), " already exists");
|
LogPrint (eLogError, "Tunnel: Tunnel with id ", tunnel->GetTunnelID (), " already exists");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tunnels::Start ()
|
void Tunnels::Start ()
|
||||||
|
@ -521,7 +534,7 @@ namespace tunnel
|
||||||
HandleTunnelGatewayMsg (tunnel, msg);
|
HandleTunnelGatewayMsg (tunnel, msg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
LogPrint (eLogWarning, "Tunnel: tunnel not found, tunnelID=", tunnelID, " previousTunnelID=", prevTunnelID, " type=", (int)typeID);
|
LogPrint (eLogWarning, "Tunnel: Tunnel not found, tunnelID=", tunnelID, " previousTunnelID=", prevTunnelID, " type=", (int)typeID);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -534,7 +547,7 @@ namespace tunnel
|
||||||
HandleI2NPMessage (msg->GetBuffer (), msg->GetLength ());
|
HandleI2NPMessage (msg->GetBuffer (), msg->GetLength ());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LogPrint (eLogWarning, "Tunnel: unexpected message type ", (int) typeID);
|
LogPrint (eLogWarning, "Tunnel: Unexpected message type ", (int) typeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
msg = m_Queue.Get ();
|
msg = m_Queue.Get ();
|
||||||
|
@ -566,7 +579,7 @@ namespace tunnel
|
||||||
}
|
}
|
||||||
catch (std::exception& ex)
|
catch (std::exception& ex)
|
||||||
{
|
{
|
||||||
LogPrint (eLogError, "Tunnel: runtime exception: ", ex.what ());
|
LogPrint (eLogError, "Tunnel: Runtime exception: ", ex.what ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -575,7 +588,7 @@ namespace tunnel
|
||||||
{
|
{
|
||||||
if (!tunnel)
|
if (!tunnel)
|
||||||
{
|
{
|
||||||
LogPrint (eLogError, "Tunnel: missing tunnel for gateway");
|
LogPrint (eLogError, "Tunnel: Missing tunnel for gateway");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const uint8_t * payload = msg->GetPayload ();
|
const uint8_t * payload = msg->GetPayload ();
|
||||||
|
@ -584,12 +597,12 @@ namespace tunnel
|
||||||
msg->offset += I2NP_HEADER_SIZE + TUNNEL_GATEWAY_HEADER_SIZE;
|
msg->offset += I2NP_HEADER_SIZE + TUNNEL_GATEWAY_HEADER_SIZE;
|
||||||
if (msg->offset + len > msg->len)
|
if (msg->offset + len > msg->len)
|
||||||
{
|
{
|
||||||
LogPrint (eLogError, "Tunnel: gateway payload ", (int)len, " exceeds message length ", (int)msg->len);
|
LogPrint (eLogError, "Tunnel: Gateway payload ", (int)len, " exceeds message length ", (int)msg->len);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
msg->len = msg->offset + len;
|
msg->len = msg->offset + len;
|
||||||
auto typeID = msg->GetTypeID ();
|
auto typeID = msg->GetTypeID ();
|
||||||
LogPrint (eLogDebug, "Tunnel: gateway of ", (int) len, " bytes for tunnel ", tunnel->GetTunnelID (), ", msg type ", (int)typeID);
|
LogPrint (eLogDebug, "Tunnel: Gateway of ", (int) len, " bytes for tunnel ", tunnel->GetTunnelID (), ", msg type ", (int)typeID);
|
||||||
|
|
||||||
if (IsRouterInfoMsg (msg) || typeID == eI2NPDatabaseSearchReply)
|
if (IsRouterInfoMsg (msg) || typeID == eI2NPDatabaseSearchReply)
|
||||||
// transit DatabaseStore my contain new/updated RI
|
// transit DatabaseStore my contain new/updated RI
|
||||||
|
@ -625,7 +638,7 @@ namespace tunnel
|
||||||
case eTunnelStatePending:
|
case eTunnelStatePending:
|
||||||
if (ts > tunnel->GetCreationTime () + TUNNEL_CREATION_TIMEOUT)
|
if (ts > tunnel->GetCreationTime () + TUNNEL_CREATION_TIMEOUT)
|
||||||
{
|
{
|
||||||
LogPrint (eLogDebug, "Tunnel: pending build request ", it->first, " timeout, deleted");
|
LogPrint (eLogDebug, "Tunnel: Pending build request ", it->first, " timeout, deleted");
|
||||||
// update stats
|
// update stats
|
||||||
auto config = tunnel->GetTunnelConfig ();
|
auto config = tunnel->GetTunnelConfig ();
|
||||||
if (config)
|
if (config)
|
||||||
|
@ -650,7 +663,7 @@ namespace tunnel
|
||||||
++it;
|
++it;
|
||||||
break;
|
break;
|
||||||
case eTunnelStateBuildFailed:
|
case eTunnelStateBuildFailed:
|
||||||
LogPrint (eLogDebug, "Tunnel: pending build request ", it->first, " failed, deleted");
|
LogPrint (eLogDebug, "Tunnel: Pending build request ", it->first, " failed, deleted");
|
||||||
it = pendingTunnels.erase (it);
|
it = pendingTunnels.erase (it);
|
||||||
m_NumFailedTunnelCreations++;
|
m_NumFailedTunnelCreations++;
|
||||||
break;
|
break;
|
||||||
|
@ -675,7 +688,7 @@ namespace tunnel
|
||||||
auto tunnel = *it;
|
auto tunnel = *it;
|
||||||
if (ts > tunnel->GetCreationTime () + TUNNEL_EXPIRATION_TIMEOUT)
|
if (ts > tunnel->GetCreationTime () + TUNNEL_EXPIRATION_TIMEOUT)
|
||||||
{
|
{
|
||||||
LogPrint (eLogDebug, "Tunnel: tunnel with id ", tunnel->GetTunnelID (), " expired");
|
LogPrint (eLogDebug, "Tunnel: Tunnel with id ", tunnel->GetTunnelID (), " expired");
|
||||||
auto pool = tunnel->GetTunnelPool ();
|
auto pool = tunnel->GetTunnelPool ();
|
||||||
if (pool)
|
if (pool)
|
||||||
pool->TunnelExpired (tunnel);
|
pool->TunnelExpired (tunnel);
|
||||||
|
@ -712,7 +725,7 @@ namespace tunnel
|
||||||
i2p::transport::transports.GetRestrictedPeer() :
|
i2p::transport::transports.GetRestrictedPeer() :
|
||||||
i2p::data::netdb.GetRandomRouter (i2p::context.GetSharedRouterInfo (), false); // reachable by us
|
i2p::data::netdb.GetRandomRouter (i2p::context.GetSharedRouterInfo (), false); // reachable by us
|
||||||
if (!inboundTunnel || !router) return;
|
if (!inboundTunnel || !router) return;
|
||||||
LogPrint (eLogDebug, "Tunnel: creating one hop outbound tunnel");
|
LogPrint (eLogDebug, "Tunnel: Creating one hop outbound tunnel");
|
||||||
CreateTunnel<OutboundTunnel> (
|
CreateTunnel<OutboundTunnel> (
|
||||||
std::make_shared<TunnelConfig> (std::vector<std::shared_ptr<const i2p::data::IdentityEx> > { router->GetRouterIdentity () },
|
std::make_shared<TunnelConfig> (std::vector<std::shared_ptr<const i2p::data::IdentityEx> > { router->GetRouterIdentity () },
|
||||||
inboundTunnel->GetNextTunnelID (), inboundTunnel->GetNextIdentHash ()), nullptr
|
inboundTunnel->GetNextTunnelID (), inboundTunnel->GetNextIdentHash ()), nullptr
|
||||||
|
@ -729,7 +742,7 @@ namespace tunnel
|
||||||
auto tunnel = *it;
|
auto tunnel = *it;
|
||||||
if (ts > tunnel->GetCreationTime () + TUNNEL_EXPIRATION_TIMEOUT)
|
if (ts > tunnel->GetCreationTime () + TUNNEL_EXPIRATION_TIMEOUT)
|
||||||
{
|
{
|
||||||
LogPrint (eLogDebug, "Tunnel: tunnel with id ", tunnel->GetTunnelID (), " expired");
|
LogPrint (eLogDebug, "Tunnel: Tunnel with id ", tunnel->GetTunnelID (), " expired");
|
||||||
auto pool = tunnel->GetTunnelPool ();
|
auto pool = tunnel->GetTunnelPool ();
|
||||||
if (pool)
|
if (pool)
|
||||||
pool->TunnelExpired (tunnel);
|
pool->TunnelExpired (tunnel);
|
||||||
|
@ -763,7 +776,7 @@ namespace tunnel
|
||||||
|
|
||||||
if (m_InboundTunnels.empty ())
|
if (m_InboundTunnels.empty ())
|
||||||
{
|
{
|
||||||
LogPrint (eLogDebug, "Tunnel: Creating zero hops inbound tunnel");
|
LogPrint (eLogDebug, "Tunnel: Creating zero hop inbound tunnel");
|
||||||
CreateZeroHopsInboundTunnel (nullptr);
|
CreateZeroHopsInboundTunnel (nullptr);
|
||||||
CreateZeroHopsOutboundTunnel (nullptr);
|
CreateZeroHopsOutboundTunnel (nullptr);
|
||||||
if (!m_ExploratoryPool)
|
if (!m_ExploratoryPool)
|
||||||
|
@ -786,10 +799,10 @@ namespace tunnel
|
||||||
// should be reachable by us because we send build request directly
|
// should be reachable by us because we send build request directly
|
||||||
i2p::data::netdb.GetRandomRouter (i2p::context.GetSharedRouterInfo (), false);
|
i2p::data::netdb.GetRandomRouter (i2p::context.GetSharedRouterInfo (), false);
|
||||||
if (!router) {
|
if (!router) {
|
||||||
LogPrint (eLogWarning, "Tunnel: can't find any router, skip creating tunnel");
|
LogPrint (eLogWarning, "Tunnel: Can't find any router, skipping tunnel creation");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LogPrint (eLogDebug, "Tunnel: creating one hop inbound tunnel");
|
LogPrint (eLogDebug, "Tunnel: Creating one hop inbound tunnel");
|
||||||
CreateTunnel<InboundTunnel> (
|
CreateTunnel<InboundTunnel> (
|
||||||
std::make_shared<TunnelConfig> (std::vector<std::shared_ptr<const i2p::data::IdentityEx> > { router->GetRouterIdentity () }), nullptr
|
std::make_shared<TunnelConfig> (std::vector<std::shared_ptr<const i2p::data::IdentityEx> > { router->GetRouterIdentity () }), nullptr
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue