MCPcopy Create free account
hub / github.com/PurpleI2P/i2pd / ShowLeasesSets

Function ShowLeasesSets

daemon/HTTPServer.cpp:706–765  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

704 }
705
706 void ShowLeasesSets(std::stringstream& s)
707 {
708 if (i2p::data::netdb.GetNumLeaseSets ())
709 {
710 s << "<b>" << tr("LeaseSets") << ":</b><br>\r\n<div class=\"list\">\r\n";
711 int counter = 1;
712 // for each lease set
713 i2p::data::netdb.VisitLeaseSets(
714 [&s, &counter](const i2p::data::IdentHash dest, std::shared_ptr<i2p::data::LeaseSet> leaseSet)
715 {
716 // create copy of lease set so we extract leases
717 auto storeType = leaseSet->GetStoreType ();
718 std::unique_ptr<i2p::data::LeaseSet> ls;
719 if (storeType == i2p::data::NETDB_STORE_TYPE_LEASESET)
720 ls.reset (new i2p::data::LeaseSet (leaseSet->GetBuffer(), leaseSet->GetBufferLen()));
721 else
722 {
723 ls.reset (new i2p::data::LeaseSet2 (storeType));
724 ls->Update (leaseSet->GetBuffer(), leaseSet->GetBufferLen(), nullptr, false);
725 }
726 if (!ls) return;
727 s << "<div class=\"leaseset listitem";
728 if (ls->IsExpired())
729 s << " expired"; // additional css class for expired
730 s << "\">\r\n";
731 if (!ls->IsValid())
732 s << "<div class=\"invalid\">!! " << tr("Invalid") << " !! </div>\r\n";
733 s << "<div class=\"slide\"><label for=\"slide" << counter << "\">" << dest.ToBase32() << "</label>\r\n";
734 s << "<input type=\"checkbox\" id=\"slide" << (counter++) << "\" />\r\n";
735 s << "<div class=\"slidecontent\">\r\n";
736 s << "<b>" << tr("Store type") << ":</b> " << (int)storeType << "<br>\r\n";
737 s << "<b>" << tr("Expires") << ":</b> " << ConvertTime(ls->GetExpirationTime()) << "<br>\r\n";
738 if (storeType == i2p::data::NETDB_STORE_TYPE_LEASESET || storeType == i2p::data::NETDB_STORE_TYPE_STANDARD_LEASESET2)
739 {
740 // leases information is available
741 auto leases = ls->GetNonExpiredLeases();
742 s << "<b>" << tr("Non Expired Leases") << ": " << leases.size() << "</b><br>\r\n";
743 for ( auto & l : leases )
744 {
745 s << "<b>" << tr("Gateway") << ":</b> " << l->tunnelGateway.ToBase64() << "<br>\r\n";
746 s << "<b>" << tr("TunnelID") << ":</b> " << l->tunnelID << "<br>\r\n";
747 s << "<b>" << tr("EndDate") << ":</b> " << ConvertTime(l->endDate) << "<br>\r\n";
748 }
749 }
750 s << "</div>\r\n</div>\r\n"; // class slide class slidecontent
751 s << "</div>\r\n"; // class leaseset listitem
752 }
753 );
754 // end for each lease set
755 s << "</div>\r\n<br>\r\n";
756 }
757 else if (!i2p::context.IsFloodfill ())
758 {
759 s << "<b>" << tr("LeaseSets") << ":</b> " << tr(/* Message on LeaseSets page */ "floodfill mode is disabled") << ".<br>\r\n";
760 }
761 else
762 {
763 s << "<b>" << tr("LeaseSets") << ":</b> 0<br>\r\n";

Callers 1

HandlePageMethod · 0.85

Calls 14

trFunction · 0.85
ConvertTimeFunction · 0.85
GetNumLeaseSetsMethod · 0.80
VisitLeaseSetsMethod · 0.80
GetNonExpiredLeasesMethod · 0.80
ToBase64Method · 0.80
GetStoreTypeMethod · 0.45
GetBufferMethod · 0.45
GetBufferLenMethod · 0.45
UpdateMethod · 0.45
IsExpiredMethod · 0.45
IsValidMethod · 0.45

Tested by

no test coverage detected