mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 00:00:29 +03:00
move more handlers from I2PControl to I2PControlHandlers
This commit is contained in:
parent
2470ba76f0
commit
36eddd48c3
@ -14,25 +14,17 @@
|
|||||||
// Use global placeholders from boost introduced when local_time.hpp is loaded
|
// Use global placeholders from boost introduced when local_time.hpp is loaded
|
||||||
#define BOOST_BIND_GLOBAL_PLACEHOLDERS
|
#define BOOST_BIND_GLOBAL_PLACEHOLDERS
|
||||||
|
|
||||||
#include <boost/lexical_cast.hpp>
|
|
||||||
#include <boost/date_time/local_time/local_time.hpp>
|
#include <boost/date_time/local_time/local_time.hpp>
|
||||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||||
#include <boost/property_tree/ini_parser.hpp>
|
|
||||||
#include <boost/property_tree/json_parser.hpp>
|
#include <boost/property_tree/json_parser.hpp>
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
#include "Crypto.h"
|
|
||||||
#include "FS.h"
|
#include "FS.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "NetDb.hpp"
|
#include "NetDb.hpp"
|
||||||
#include "RouterContext.h"
|
|
||||||
#include "Daemon.h"
|
|
||||||
#include "Tunnel.h"
|
#include "Tunnel.h"
|
||||||
#include "Timestamp.h"
|
#include "Daemon.h"
|
||||||
#include "Transports.h"
|
|
||||||
#include "version.h"
|
|
||||||
#include "util.h"
|
|
||||||
#include "ClientContext.h"
|
|
||||||
#include "I2PControl.h"
|
#include "I2PControl.h"
|
||||||
|
|
||||||
namespace i2p
|
namespace i2p
|
||||||
@ -69,36 +61,18 @@ namespace client
|
|||||||
m_MethodHandlers["Authenticate"] = &I2PControlService::AuthenticateHandler;
|
m_MethodHandlers["Authenticate"] = &I2PControlService::AuthenticateHandler;
|
||||||
m_MethodHandlers["Echo"] = &I2PControlService::EchoHandler;
|
m_MethodHandlers["Echo"] = &I2PControlService::EchoHandler;
|
||||||
m_MethodHandlers["I2PControl"] = &I2PControlService::I2PControlHandler;
|
m_MethodHandlers["I2PControl"] = &I2PControlService::I2PControlHandler;
|
||||||
m_MethodHandlers["RouterInfo"] = &I2PControlService::RouterInfoHandler;
|
m_MethodHandlers["RouterInfo"] = &I2PControlHandlers::RouterInfoHandler;
|
||||||
m_MethodHandlers["RouterManager"] = &I2PControlService::RouterManagerHandler;
|
m_MethodHandlers["RouterManager"] = &I2PControlService::RouterManagerHandler;
|
||||||
m_MethodHandlers["NetworkSetting"] = &I2PControlService::NetworkSettingHandler;
|
m_MethodHandlers["NetworkSetting"] = &I2PControlHandlers::NetworkSettingHandler;
|
||||||
m_MethodHandlers["ClientServicesInfo"] = &I2PControlHandlers::ClientServicesInfoHandler;
|
m_MethodHandlers["ClientServicesInfo"] = &I2PControlHandlers::ClientServicesInfoHandler;
|
||||||
|
|
||||||
// I2PControl
|
// I2PControl
|
||||||
m_I2PControlHandlers["i2pcontrol.password"] = &I2PControlService::PasswordHandler;
|
m_I2PControlHandlers["i2pcontrol.password"] = &I2PControlService::PasswordHandler;
|
||||||
|
|
||||||
// RouterInfo
|
|
||||||
m_RouterInfoHandlers["i2p.router.uptime"] = &I2PControlService::UptimeHandler;
|
|
||||||
m_RouterInfoHandlers["i2p.router.version"] = &I2PControlService::VersionHandler;
|
|
||||||
m_RouterInfoHandlers["i2p.router.status"] = &I2PControlService::StatusHandler;
|
|
||||||
m_RouterInfoHandlers["i2p.router.netdb.knownpeers"] = &I2PControlService::NetDbKnownPeersHandler;
|
|
||||||
m_RouterInfoHandlers["i2p.router.netdb.activepeers"] = &I2PControlService::NetDbActivePeersHandler;
|
|
||||||
m_RouterInfoHandlers["i2p.router.net.bw.inbound.1s"] = &I2PControlService::InboundBandwidth1S;
|
|
||||||
m_RouterInfoHandlers["i2p.router.net.bw.outbound.1s"] = &I2PControlService::OutboundBandwidth1S;
|
|
||||||
m_RouterInfoHandlers["i2p.router.net.status"] = &I2PControlService::NetStatusHandler;
|
|
||||||
m_RouterInfoHandlers["i2p.router.net.tunnels.participating"] = &I2PControlService::TunnelsParticipatingHandler;
|
|
||||||
m_RouterInfoHandlers["i2p.router.net.tunnels.successrate"] = &I2PControlService::TunnelsSuccessRateHandler;
|
|
||||||
m_RouterInfoHandlers["i2p.router.net.total.received.bytes"] = &I2PControlService::NetTotalReceivedBytes;
|
|
||||||
m_RouterInfoHandlers["i2p.router.net.total.sent.bytes"] = &I2PControlService::NetTotalSentBytes;
|
|
||||||
|
|
||||||
// RouterManager
|
// RouterManager
|
||||||
m_RouterManagerHandlers["Reseed"] = &I2PControlService::ReseedHandler;
|
m_RouterManagerHandlers["Reseed"] = &I2PControlService::ReseedHandler;
|
||||||
m_RouterManagerHandlers["Shutdown"] = &I2PControlService::ShutdownHandler;
|
m_RouterManagerHandlers["Shutdown"] = &I2PControlService::ShutdownHandler;
|
||||||
m_RouterManagerHandlers["ShutdownGraceful"] = &I2PControlService::ShutdownGracefulHandler;
|
m_RouterManagerHandlers["ShutdownGraceful"] = &I2PControlService::ShutdownGracefulHandler;
|
||||||
|
|
||||||
// NetworkSetting
|
|
||||||
m_NetworkSettingHandlers["i2p.router.net.bw.in"] = &I2PControlService::InboundBandwidthLimit;
|
|
||||||
m_NetworkSettingHandlers["i2p.router.net.bw.out"] = &I2PControlService::OutboundBandwidthLimit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
I2PControlService::~I2PControlService ()
|
I2PControlService::~I2PControlService ()
|
||||||
@ -272,30 +246,6 @@ namespace client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void I2PControlService::InsertParam (std::ostringstream& ss, const std::string& name, int value) const
|
|
||||||
{
|
|
||||||
ss << "\"" << name << "\":" << value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::InsertParam (std::ostringstream& ss, const std::string& name, const std::string& value, bool quotes) const
|
|
||||||
{
|
|
||||||
ss << "\"" << name << "\":";
|
|
||||||
if (value.length () > 0)
|
|
||||||
{
|
|
||||||
if (quotes)
|
|
||||||
ss << "\"" << value << "\"";
|
|
||||||
else
|
|
||||||
ss << value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ss << "null";
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::InsertParam (std::ostringstream& ss, const std::string& name, double value) const
|
|
||||||
{
|
|
||||||
ss << "\"" << name << "\":" << std::fixed << std::setprecision(2) << value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::SendResponse (std::shared_ptr<ssl_socket> socket,
|
void I2PControlService::SendResponse (std::shared_ptr<ssl_socket> socket,
|
||||||
std::shared_ptr<I2PControlBuffer> buf, std::ostringstream& response, bool isHtml)
|
std::shared_ptr<I2PControlBuffer> buf, std::ostringstream& response, bool isHtml)
|
||||||
{
|
{
|
||||||
@ -381,91 +331,6 @@ namespace client
|
|||||||
m_Tokens.clear ();
|
m_Tokens.clear ();
|
||||||
}
|
}
|
||||||
|
|
||||||
// RouterInfo
|
|
||||||
|
|
||||||
void I2PControlService::RouterInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results)
|
|
||||||
{
|
|
||||||
bool first = true;
|
|
||||||
for (auto it = params.begin (); it != params.end (); it++)
|
|
||||||
{
|
|
||||||
LogPrint (eLogDebug, "I2PControl: RouterInfo request: ", it->first);
|
|
||||||
auto it1 = m_RouterInfoHandlers.find (it->first);
|
|
||||||
if (it1 != m_RouterInfoHandlers.end ())
|
|
||||||
{
|
|
||||||
if (!first) results << ",";
|
|
||||||
else first = false;
|
|
||||||
(this->*(it1->second))(results);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
LogPrint (eLogError, "I2PControl: RouterInfo unknown request ", it->first);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::UptimeHandler (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
InsertParam (results, "i2p.router.uptime", std::to_string (i2p::context.GetUptime ()*1000LL), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::VersionHandler (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
InsertParam (results, "i2p.router.version", VERSION);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::StatusHandler (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
auto dest = i2p::client::context.GetSharedLocalDestination ();
|
|
||||||
InsertParam (results, "i2p.router.status", (dest && dest->IsReady ()) ? "1" : "0");
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::NetDbKnownPeersHandler (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
InsertParam (results, "i2p.router.netdb.knownpeers", i2p::data::netdb.GetNumRouters ());
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::NetDbActivePeersHandler (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
InsertParam (results, "i2p.router.netdb.activepeers", (int)i2p::transport::transports.GetPeers ().size ());
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::NetStatusHandler (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
InsertParam (results, "i2p.router.net.status", (int)i2p::context.GetStatus ());
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::TunnelsParticipatingHandler (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
int transit = i2p::tunnel::tunnels.GetTransitTunnels ().size ();
|
|
||||||
InsertParam (results, "i2p.router.net.tunnels.participating", transit);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::TunnelsSuccessRateHandler (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
int rate = i2p::tunnel::tunnels.GetTunnelCreationSuccessRate ();
|
|
||||||
InsertParam (results, "i2p.router.net.tunnels.successrate", rate);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::InboundBandwidth1S (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
double bw = i2p::transport::transports.GetInBandwidth ();
|
|
||||||
InsertParam (results, "i2p.router.net.bw.inbound.1s", bw);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::OutboundBandwidth1S (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
double bw = i2p::transport::transports.GetOutBandwidth ();
|
|
||||||
InsertParam (results, "i2p.router.net.bw.outbound.1s", bw);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::NetTotalReceivedBytes (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
InsertParam (results, "i2p.router.net.total.received.bytes", (double)i2p::transport::transports.GetTotalReceivedBytes ());
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::NetTotalSentBytes (std::ostringstream& results)
|
|
||||||
{
|
|
||||||
InsertParam (results, "i2p.router.net.total.sent.bytes", (double)i2p::transport::transports.GetTotalSentBytes ());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// RouterManager
|
// RouterManager
|
||||||
|
|
||||||
@ -517,37 +382,6 @@ namespace client
|
|||||||
i2p::data::netdb.Reseed ();
|
i2p::data::netdb.Reseed ();
|
||||||
}
|
}
|
||||||
|
|
||||||
// network setting
|
|
||||||
void I2PControlService::NetworkSettingHandler (const boost::property_tree::ptree& params, std::ostringstream& results)
|
|
||||||
{
|
|
||||||
for (auto it = params.begin (); it != params.end (); it++)
|
|
||||||
{
|
|
||||||
LogPrint (eLogDebug, "I2PControl: NetworkSetting request: ", it->first);
|
|
||||||
auto it1 = m_NetworkSettingHandlers.find (it->first);
|
|
||||||
if (it1 != m_NetworkSettingHandlers.end ()) {
|
|
||||||
if (it != params.begin ()) results << ",";
|
|
||||||
(this->*(it1->second))(it->second.data (), results);
|
|
||||||
} else
|
|
||||||
LogPrint (eLogError, "I2PControl: NetworkSetting unknown request: ", it->first);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::InboundBandwidthLimit (const std::string& value, std::ostringstream& results)
|
|
||||||
{
|
|
||||||
if (value != "null")
|
|
||||||
i2p::context.SetBandwidth (std::atoi(value.c_str()));
|
|
||||||
int bw = i2p::context.GetBandwidthLimit();
|
|
||||||
InsertParam (results, "i2p.router.net.bw.in", bw);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2PControlService::OutboundBandwidthLimit (const std::string& value, std::ostringstream& results)
|
|
||||||
{
|
|
||||||
if (value != "null")
|
|
||||||
i2p::context.SetBandwidth (std::atoi(value.c_str()));
|
|
||||||
int bw = i2p::context.GetBandwidthLimit();
|
|
||||||
InsertParam (results, "i2p.router.net.bw.out", bw);
|
|
||||||
}
|
|
||||||
|
|
||||||
// certificate
|
// certificate
|
||||||
void I2PControlService::CreateCertificate (const char *crt_path, const char *key_path)
|
void I2PControlService::CreateCertificate (const char *crt_path, const char *key_path)
|
||||||
{
|
{
|
||||||
|
@ -63,10 +63,6 @@ namespace client
|
|||||||
void CreateCertificate (const char *crt_path, const char *key_path);
|
void CreateCertificate (const char *crt_path, const char *key_path);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void InsertParam (std::ostringstream& ss, const std::string& name, int value) const;
|
|
||||||
void InsertParam (std::ostringstream& ss, const std::string& name, double value) const;
|
|
||||||
void InsertParam (std::ostringstream& ss, const std::string& name, const std::string& value, bool quotes = true) const;
|
|
||||||
|
|
||||||
// methods
|
// methods
|
||||||
typedef void (I2PControlService::*MethodHandler)(const boost::property_tree::ptree& params, std::ostringstream& results);
|
typedef void (I2PControlService::*MethodHandler)(const boost::property_tree::ptree& params, std::ostringstream& results);
|
||||||
@ -74,41 +70,18 @@ namespace client
|
|||||||
void AuthenticateHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
void AuthenticateHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
||||||
void EchoHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
void EchoHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
||||||
void I2PControlHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
void I2PControlHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
||||||
void RouterInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
|
||||||
void RouterManagerHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
void RouterManagerHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
||||||
void NetworkSettingHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
|
||||||
void ClientServicesInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
|
||||||
|
|
||||||
// I2PControl
|
// I2PControl
|
||||||
typedef void (I2PControlService::*I2PControlRequestHandler)(const std::string& value);
|
typedef void (I2PControlService::*I2PControlRequestHandler)(const std::string& value);
|
||||||
void PasswordHandler (const std::string& value);
|
void PasswordHandler (const std::string& value);
|
||||||
|
|
||||||
// RouterInfo
|
|
||||||
typedef void (I2PControlService::*RouterInfoRequestHandler)(std::ostringstream& results);
|
|
||||||
void UptimeHandler (std::ostringstream& results);
|
|
||||||
void VersionHandler (std::ostringstream& results);
|
|
||||||
void StatusHandler (std::ostringstream& results);
|
|
||||||
void NetDbKnownPeersHandler (std::ostringstream& results);
|
|
||||||
void NetDbActivePeersHandler (std::ostringstream& results);
|
|
||||||
void NetStatusHandler (std::ostringstream& results);
|
|
||||||
void TunnelsParticipatingHandler (std::ostringstream& results);
|
|
||||||
void TunnelsSuccessRateHandler (std::ostringstream& results);
|
|
||||||
void InboundBandwidth1S (std::ostringstream& results);
|
|
||||||
void OutboundBandwidth1S (std::ostringstream& results);
|
|
||||||
void NetTotalReceivedBytes (std::ostringstream& results);
|
|
||||||
void NetTotalSentBytes (std::ostringstream& results);
|
|
||||||
|
|
||||||
// RouterManager
|
// RouterManager
|
||||||
typedef void (I2PControlService::*RouterManagerRequestHandler)(std::ostringstream& results);
|
typedef void (I2PControlService::*RouterManagerRequestHandler)(std::ostringstream& results);
|
||||||
void ShutdownHandler (std::ostringstream& results);
|
void ShutdownHandler (std::ostringstream& results);
|
||||||
void ShutdownGracefulHandler (std::ostringstream& results);
|
void ShutdownGracefulHandler (std::ostringstream& results);
|
||||||
void ReseedHandler (std::ostringstream& results);
|
void ReseedHandler (std::ostringstream& results);
|
||||||
|
|
||||||
// NetworkSetting
|
|
||||||
typedef void (I2PControlService::*NetworkSettingRequestHandler)(const std::string& value, std::ostringstream& results);
|
|
||||||
void InboundBandwidthLimit (const std::string& value, std::ostringstream& results);
|
|
||||||
void OutboundBandwidthLimit (const std::string& value, std::ostringstream& results);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
std::string m_Password;
|
std::string m_Password;
|
||||||
@ -123,9 +96,7 @@ namespace client
|
|||||||
|
|
||||||
std::map<std::string, MethodHandler> m_MethodHandlers;
|
std::map<std::string, MethodHandler> m_MethodHandlers;
|
||||||
std::map<std::string, I2PControlRequestHandler> m_I2PControlHandlers;
|
std::map<std::string, I2PControlRequestHandler> m_I2PControlHandlers;
|
||||||
std::map<std::string, RouterInfoRequestHandler> m_RouterInfoHandlers;
|
|
||||||
std::map<std::string, RouterManagerRequestHandler> m_RouterManagerHandlers;
|
std::map<std::string, RouterManagerRequestHandler> m_RouterManagerHandlers;
|
||||||
std::map<std::string, NetworkSettingRequestHandler> m_NetworkSettingHandlers;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,11 @@
|
|||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <boost/property_tree/json_parser.hpp>
|
#include <boost/property_tree/json_parser.hpp>
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
|
#include "RouterContext.h"
|
||||||
|
#include "NetDb.hpp"
|
||||||
|
#include "Tunnel.h"
|
||||||
|
#include "Transports.h"
|
||||||
|
#include "version.h"
|
||||||
#include "ClientContext.h"
|
#include "ClientContext.h"
|
||||||
#include "I2PControlHandlers.h"
|
#include "I2PControlHandlers.h"
|
||||||
|
|
||||||
@ -19,6 +24,24 @@ namespace client
|
|||||||
{
|
{
|
||||||
I2PControlHandlers::I2PControlHandlers ()
|
I2PControlHandlers::I2PControlHandlers ()
|
||||||
{
|
{
|
||||||
|
// RouterInfo
|
||||||
|
m_RouterInfoHandlers["i2p.router.uptime"] = &I2PControlHandlers::UptimeHandler;
|
||||||
|
m_RouterInfoHandlers["i2p.router.version"] = &I2PControlHandlers::VersionHandler;
|
||||||
|
m_RouterInfoHandlers["i2p.router.status"] = &I2PControlHandlers::StatusHandler;
|
||||||
|
m_RouterInfoHandlers["i2p.router.netdb.knownpeers"] = &I2PControlHandlers::NetDbKnownPeersHandler;
|
||||||
|
m_RouterInfoHandlers["i2p.router.netdb.activepeers"] = &I2PControlHandlers::NetDbActivePeersHandler;
|
||||||
|
m_RouterInfoHandlers["i2p.router.net.bw.inbound.1s"] = &I2PControlHandlers::InboundBandwidth1S;
|
||||||
|
m_RouterInfoHandlers["i2p.router.net.bw.outbound.1s"] = &I2PControlHandlers::OutboundBandwidth1S;
|
||||||
|
m_RouterInfoHandlers["i2p.router.net.status"] = &I2PControlHandlers::NetStatusHandler;
|
||||||
|
m_RouterInfoHandlers["i2p.router.net.tunnels.participating"] = &I2PControlHandlers::TunnelsParticipatingHandler;
|
||||||
|
m_RouterInfoHandlers["i2p.router.net.tunnels.successrate"] = &I2PControlHandlers::TunnelsSuccessRateHandler;
|
||||||
|
m_RouterInfoHandlers["i2p.router.net.total.received.bytes"] = &I2PControlHandlers::NetTotalReceivedBytes;
|
||||||
|
m_RouterInfoHandlers["i2p.router.net.total.sent.bytes"] = &I2PControlHandlers::NetTotalSentBytes;
|
||||||
|
|
||||||
|
// NetworkSetting
|
||||||
|
m_NetworkSettingHandlers["i2p.router.net.bw.in"] = &I2PControlHandlers::InboundBandwidthLimit;
|
||||||
|
m_NetworkSettingHandlers["i2p.router.net.bw.out"] = &I2PControlHandlers::OutboundBandwidthLimit;
|
||||||
|
|
||||||
// ClientServicesInfo
|
// ClientServicesInfo
|
||||||
m_ClientServicesInfoHandlers["I2PTunnel"] = &I2PControlHandlers::I2PTunnelInfoHandler;
|
m_ClientServicesInfoHandlers["I2PTunnel"] = &I2PControlHandlers::I2PTunnelInfoHandler;
|
||||||
m_ClientServicesInfoHandlers["HTTPProxy"] = &I2PControlHandlers::HTTPProxyInfoHandler;
|
m_ClientServicesInfoHandlers["HTTPProxy"] = &I2PControlHandlers::HTTPProxyInfoHandler;
|
||||||
@ -28,6 +51,30 @@ namespace client
|
|||||||
m_ClientServicesInfoHandlers["I2CP"] = &I2PControlHandlers::I2CPInfoHandler;
|
m_ClientServicesInfoHandlers["I2CP"] = &I2PControlHandlers::I2CPInfoHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::InsertParam (std::ostringstream& ss, const std::string& name, int value) const
|
||||||
|
{
|
||||||
|
ss << "\"" << name << "\":" << value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::InsertParam (std::ostringstream& ss, const std::string& name, const std::string& value, bool quotes) const
|
||||||
|
{
|
||||||
|
ss << "\"" << name << "\":";
|
||||||
|
if (value.length () > 0)
|
||||||
|
{
|
||||||
|
if (quotes)
|
||||||
|
ss << "\"" << value << "\"";
|
||||||
|
else
|
||||||
|
ss << value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ss << "null";
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::InsertParam (std::ostringstream& ss, const std::string& name, double value) const
|
||||||
|
{
|
||||||
|
ss << "\"" << name << "\":" << std::fixed << std::setprecision(2) << value;
|
||||||
|
}
|
||||||
|
|
||||||
void I2PControlHandlers::InsertParam (std::ostringstream& ss, const std::string& name, const boost::property_tree::ptree& value) const
|
void I2PControlHandlers::InsertParam (std::ostringstream& ss, const std::string& name, const boost::property_tree::ptree& value) const
|
||||||
{
|
{
|
||||||
std::ostringstream buf;
|
std::ostringstream buf;
|
||||||
@ -35,6 +82,122 @@ namespace client
|
|||||||
ss << "\"" << name << "\":" << buf.str();
|
ss << "\"" << name << "\":" << buf.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RouterInfo
|
||||||
|
|
||||||
|
void I2PControlHandlers::RouterInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results)
|
||||||
|
{
|
||||||
|
bool first = true;
|
||||||
|
for (auto it = params.begin (); it != params.end (); it++)
|
||||||
|
{
|
||||||
|
LogPrint (eLogDebug, "I2PControl: RouterInfo request: ", it->first);
|
||||||
|
auto it1 = m_RouterInfoHandlers.find (it->first);
|
||||||
|
if (it1 != m_RouterInfoHandlers.end ())
|
||||||
|
{
|
||||||
|
if (!first) results << ",";
|
||||||
|
else first = false;
|
||||||
|
(this->*(it1->second))(results);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LogPrint (eLogError, "I2PControl: RouterInfo unknown request ", it->first);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::UptimeHandler (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
InsertParam (results, "i2p.router.uptime", std::to_string (i2p::context.GetUptime ()*1000LL), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::VersionHandler (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
InsertParam (results, "i2p.router.version", VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::StatusHandler (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
auto dest = i2p::client::context.GetSharedLocalDestination ();
|
||||||
|
InsertParam (results, "i2p.router.status", (dest && dest->IsReady ()) ? "1" : "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::NetDbKnownPeersHandler (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
InsertParam (results, "i2p.router.netdb.knownpeers", i2p::data::netdb.GetNumRouters ());
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::NetDbActivePeersHandler (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
InsertParam (results, "i2p.router.netdb.activepeers", (int)i2p::transport::transports.GetPeers ().size ());
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::NetStatusHandler (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
InsertParam (results, "i2p.router.net.status", (int)i2p::context.GetStatus ());
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::TunnelsParticipatingHandler (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
int transit = i2p::tunnel::tunnels.GetTransitTunnels ().size ();
|
||||||
|
InsertParam (results, "i2p.router.net.tunnels.participating", transit);
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::TunnelsSuccessRateHandler (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
int rate = i2p::tunnel::tunnels.GetTunnelCreationSuccessRate ();
|
||||||
|
InsertParam (results, "i2p.router.net.tunnels.successrate", rate);
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::InboundBandwidth1S (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
double bw = i2p::transport::transports.GetInBandwidth ();
|
||||||
|
InsertParam (results, "i2p.router.net.bw.inbound.1s", bw);
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::OutboundBandwidth1S (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
double bw = i2p::transport::transports.GetOutBandwidth ();
|
||||||
|
InsertParam (results, "i2p.router.net.bw.outbound.1s", bw);
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::NetTotalReceivedBytes (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
InsertParam (results, "i2p.router.net.total.received.bytes", (double)i2p::transport::transports.GetTotalReceivedBytes ());
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::NetTotalSentBytes (std::ostringstream& results)
|
||||||
|
{
|
||||||
|
InsertParam (results, "i2p.router.net.total.sent.bytes", (double)i2p::transport::transports.GetTotalSentBytes ());
|
||||||
|
}
|
||||||
|
|
||||||
|
// network setting
|
||||||
|
void I2PControlHandlers::NetworkSettingHandler (const boost::property_tree::ptree& params, std::ostringstream& results)
|
||||||
|
{
|
||||||
|
for (auto it = params.begin (); it != params.end (); it++)
|
||||||
|
{
|
||||||
|
LogPrint (eLogDebug, "I2PControl: NetworkSetting request: ", it->first);
|
||||||
|
auto it1 = m_NetworkSettingHandlers.find (it->first);
|
||||||
|
if (it1 != m_NetworkSettingHandlers.end ()) {
|
||||||
|
if (it != params.begin ()) results << ",";
|
||||||
|
(this->*(it1->second))(it->second.data (), results);
|
||||||
|
} else
|
||||||
|
LogPrint (eLogError, "I2PControl: NetworkSetting unknown request: ", it->first);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::InboundBandwidthLimit (const std::string& value, std::ostringstream& results)
|
||||||
|
{
|
||||||
|
if (value != "null")
|
||||||
|
i2p::context.SetBandwidth (std::atoi(value.c_str()));
|
||||||
|
int bw = i2p::context.GetBandwidthLimit();
|
||||||
|
InsertParam (results, "i2p.router.net.bw.in", bw);
|
||||||
|
}
|
||||||
|
|
||||||
|
void I2PControlHandlers::OutboundBandwidthLimit (const std::string& value, std::ostringstream& results)
|
||||||
|
{
|
||||||
|
if (value != "null")
|
||||||
|
i2p::context.SetBandwidth (std::atoi(value.c_str()));
|
||||||
|
int bw = i2p::context.GetBandwidthLimit();
|
||||||
|
InsertParam (results, "i2p.router.net.bw.out", bw);
|
||||||
|
}
|
||||||
|
|
||||||
// ClientServicesInfo
|
// ClientServicesInfo
|
||||||
|
|
||||||
void I2PControlHandlers::ClientServicesInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results)
|
void I2PControlHandlers::ClientServicesInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results)
|
||||||
|
@ -24,12 +24,40 @@ namespace client
|
|||||||
|
|
||||||
I2PControlHandlers ();
|
I2PControlHandlers ();
|
||||||
|
|
||||||
|
// methods
|
||||||
// TODO: make protected
|
// TODO: make protected
|
||||||
|
void RouterInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
||||||
|
void NetworkSettingHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
||||||
void ClientServicesInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
void ClientServicesInfoHandler (const boost::property_tree::ptree& params, std::ostringstream& results);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
void InsertParam (std::ostringstream& ss, const std::string& name, int value) const;
|
||||||
|
void InsertParam (std::ostringstream& ss, const std::string& name, double value) const;
|
||||||
|
void InsertParam (std::ostringstream& ss, const std::string& name, const std::string& value, bool quotes = true) const;
|
||||||
|
void InsertParam (std::ostringstream& ss, const std::string& name, const boost::property_tree::ptree& value) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void InsertParam (std::ostringstream& ss, const std::string& name, const boost::property_tree::ptree& value) const;
|
// RouterInfo
|
||||||
|
typedef void (I2PControlHandlers::*RouterInfoRequestHandler)(std::ostringstream& results);
|
||||||
|
void UptimeHandler (std::ostringstream& results);
|
||||||
|
void VersionHandler (std::ostringstream& results);
|
||||||
|
void StatusHandler (std::ostringstream& results);
|
||||||
|
void NetDbKnownPeersHandler (std::ostringstream& results);
|
||||||
|
void NetDbActivePeersHandler (std::ostringstream& results);
|
||||||
|
void NetStatusHandler (std::ostringstream& results);
|
||||||
|
void TunnelsParticipatingHandler (std::ostringstream& results);
|
||||||
|
void TunnelsSuccessRateHandler (std::ostringstream& results);
|
||||||
|
void InboundBandwidth1S (std::ostringstream& results);
|
||||||
|
void OutboundBandwidth1S (std::ostringstream& results);
|
||||||
|
void NetTotalReceivedBytes (std::ostringstream& results);
|
||||||
|
void NetTotalSentBytes (std::ostringstream& results);
|
||||||
|
|
||||||
|
// NetworkSetting
|
||||||
|
typedef void (I2PControlHandlers::*NetworkSettingRequestHandler)(const std::string& value, std::ostringstream& results);
|
||||||
|
void InboundBandwidthLimit (const std::string& value, std::ostringstream& results);
|
||||||
|
void OutboundBandwidthLimit (const std::string& value, std::ostringstream& results);
|
||||||
|
|
||||||
// ClientServicesInfo
|
// ClientServicesInfo
|
||||||
typedef void (I2PControlHandlers::*ClientServicesInfoRequestHandler)(std::ostringstream& results);
|
typedef void (I2PControlHandlers::*ClientServicesInfoRequestHandler)(std::ostringstream& results);
|
||||||
@ -42,6 +70,8 @@ namespace client
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
std::map<std::string, RouterInfoRequestHandler> m_RouterInfoHandlers;
|
||||||
|
std::map<std::string, NetworkSettingRequestHandler> m_NetworkSettingHandlers;
|
||||||
std::map<std::string, ClientServicesInfoRequestHandler> m_ClientServicesInfoHandlers;
|
std::map<std::string, ClientServicesInfoRequestHandler> m_ClientServicesInfoHandlers;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user