p2p: remove old debug commands
This commit is contained in:
parent
d1cf16364f
commit
aa93e38862
|
@ -54,7 +54,6 @@ set(cryptonote_basic_private_headers
|
||||||
cryptonote_basic_impl.h
|
cryptonote_basic_impl.h
|
||||||
cryptonote_boost_serialization.h
|
cryptonote_boost_serialization.h
|
||||||
cryptonote_format_utils.h
|
cryptonote_format_utils.h
|
||||||
cryptonote_stat_info.h
|
|
||||||
difficulty.h
|
difficulty.h
|
||||||
hardfork.h
|
hardfork.h
|
||||||
miner.h
|
miner.h
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
// Copyright (c) 2014-2019, The Monero Project
|
|
||||||
//
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without modification, are
|
|
||||||
// permitted provided that the following conditions are met:
|
|
||||||
//
|
|
||||||
// 1. Redistributions of source code must retain the above copyright notice, this list of
|
|
||||||
// conditions and the following disclaimer.
|
|
||||||
//
|
|
||||||
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
|
||||||
// of conditions and the following disclaimer in the documentation and/or other
|
|
||||||
// materials provided with the distribution.
|
|
||||||
//
|
|
||||||
// 3. Neither the name of the copyright holder nor the names of its contributors may be
|
|
||||||
// used to endorse or promote products derived from this software without specific
|
|
||||||
// prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
|
||||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
|
||||||
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
||||||
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
|
||||||
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
#include "serialization/keyvalue_serialization.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace cryptonote
|
|
||||||
{
|
|
||||||
struct core_stat_info_t
|
|
||||||
{
|
|
||||||
uint64_t tx_pool_size;
|
|
||||||
uint64_t blockchain_height;
|
|
||||||
uint64_t mining_speed;
|
|
||||||
uint64_t alternative_blocks;
|
|
||||||
std::string top_block_id_str;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(tx_pool_size)
|
|
||||||
KV_SERIALIZE(blockchain_height)
|
|
||||||
KV_SERIALIZE(mining_speed)
|
|
||||||
KV_SERIALIZE(alternative_blocks)
|
|
||||||
KV_SERIALIZE(top_block_id_str)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<core_stat_info_t> core_stat_info;
|
|
||||||
}
|
|
|
@ -144,8 +144,6 @@
|
||||||
|
|
||||||
#define RPC_IP_FAILS_BEFORE_BLOCK 3
|
#define RPC_IP_FAILS_BEFORE_BLOCK 3
|
||||||
|
|
||||||
#define ALLOW_DEBUG_COMMANDS
|
|
||||||
|
|
||||||
#define CRYPTONOTE_NAME "bitmonero"
|
#define CRYPTONOTE_NAME "bitmonero"
|
||||||
#define CRYPTONOTE_POOLDATA_FILENAME "poolstate.bin"
|
#define CRYPTONOTE_POOLDATA_FILENAME "poolstate.bin"
|
||||||
#define CRYPTONOTE_BLOCKCHAINDATA_FILENAME "data.mdb"
|
#define CRYPTONOTE_BLOCKCHAINDATA_FILENAME "data.mdb"
|
||||||
|
@ -193,7 +191,6 @@ namespace config
|
||||||
uint8_t const FEE_CALCULATION_MAX_RETRIES = 10;
|
uint8_t const FEE_CALCULATION_MAX_RETRIES = 10;
|
||||||
uint64_t const DEFAULT_DUST_THRESHOLD = ((uint64_t)2000000000); // 2 * pow(10, 9)
|
uint64_t const DEFAULT_DUST_THRESHOLD = ((uint64_t)2000000000); // 2 * pow(10, 9)
|
||||||
uint64_t const BASE_REWARD_CLAMP_THRESHOLD = ((uint64_t)100000000); // pow(10, 8)
|
uint64_t const BASE_REWARD_CLAMP_THRESHOLD = ((uint64_t)100000000); // pow(10, 8)
|
||||||
std::string const P2P_REMOTE_DEBUG_TRUSTED_PUB_KEY = "0000000000000000000000000000000000000000000000000000000000000000";
|
|
||||||
|
|
||||||
uint64_t const CRYPTONOTE_PUBLIC_ADDRESS_BASE58_PREFIX = 18;
|
uint64_t const CRYPTONOTE_PUBLIC_ADDRESS_BASE58_PREFIX = 18;
|
||||||
uint64_t const CRYPTONOTE_PUBLIC_INTEGRATED_ADDRESS_BASE58_PREFIX = 19;
|
uint64_t const CRYPTONOTE_PUBLIC_INTEGRATED_ADDRESS_BASE58_PREFIX = 19;
|
||||||
|
|
|
@ -1055,17 +1055,6 @@ namespace cryptonote
|
||||||
{
|
{
|
||||||
return handle_incoming_txs({std::addressof(tx_blob), 1}, {std::addressof(tvc), 1}, tx_relay, relayed);
|
return handle_incoming_txs({std::addressof(tx_blob), 1}, {std::addressof(tvc), 1}, tx_relay, relayed);
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------------------
|
|
||||||
bool core::get_stat_info(core_stat_info& st_inf) const
|
|
||||||
{
|
|
||||||
st_inf.mining_speed = m_miner.get_speed();
|
|
||||||
st_inf.alternative_blocks = m_blockchain_storage.get_alternative_blocks_count();
|
|
||||||
st_inf.blockchain_height = m_blockchain_storage.get_current_blockchain_height();
|
|
||||||
st_inf.tx_pool_size = m_mempool.get_transactions_count();
|
|
||||||
st_inf.top_block_id_str = epee::string_tools::pod_to_hex(m_blockchain_storage.get_tail_id());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------
|
||||||
bool core::check_tx_semantic(const transaction& tx, bool keeped_by_block) const
|
bool core::check_tx_semantic(const transaction& tx, bool keeped_by_block) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
#include "blockchain.h"
|
#include "blockchain.h"
|
||||||
#include "cryptonote_basic/miner.h"
|
#include "cryptonote_basic/miner.h"
|
||||||
#include "cryptonote_basic/connection_context.h"
|
#include "cryptonote_basic/connection_context.h"
|
||||||
#include "cryptonote_basic/cryptonote_stat_info.h"
|
|
||||||
#include "warnings.h"
|
#include "warnings.h"
|
||||||
#include "crypto/hash.h"
|
#include "crypto/hash.h"
|
||||||
#include "span.h"
|
#include "span.h"
|
||||||
|
@ -555,15 +554,6 @@ namespace cryptonote
|
||||||
*/
|
*/
|
||||||
bool find_blockchain_supplement(const uint64_t req_start_block, const std::list<crypto::hash>& qblock_ids, std::vector<std::pair<std::pair<cryptonote::blobdata, crypto::hash>, std::vector<std::pair<crypto::hash, cryptonote::blobdata> > > >& blocks, uint64_t& total_height, uint64_t& start_height, bool pruned, bool get_miner_tx_hash, size_t max_count) const;
|
bool find_blockchain_supplement(const uint64_t req_start_block, const std::list<crypto::hash>& qblock_ids, std::vector<std::pair<std::pair<cryptonote::blobdata, crypto::hash>, std::vector<std::pair<crypto::hash, cryptonote::blobdata> > > >& blocks, uint64_t& total_height, uint64_t& start_height, bool pruned, bool get_miner_tx_hash, size_t max_count) const;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief gets some stats about the daemon
|
|
||||||
*
|
|
||||||
* @param st_inf return-by-reference container for the stats requested
|
|
||||||
*
|
|
||||||
* @return true
|
|
||||||
*/
|
|
||||||
bool get_stat_info(core_stat_info& st_inf) const;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @copydoc Blockchain::get_tx_outputs_gindexs
|
* @copydoc Blockchain::get_tx_outputs_gindexs
|
||||||
*
|
*
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
#include "block_queue.h"
|
#include "block_queue.h"
|
||||||
#include "common/perf_timer.h"
|
#include "common/perf_timer.h"
|
||||||
#include "cryptonote_basic/connection_context.h"
|
#include "cryptonote_basic/connection_context.h"
|
||||||
#include "cryptonote_basic/cryptonote_stat_info.h"
|
|
||||||
#include <boost/circular_buffer.hpp>
|
#include <boost/circular_buffer.hpp>
|
||||||
|
|
||||||
PUSH_WARNINGS
|
PUSH_WARNINGS
|
||||||
|
@ -77,7 +76,6 @@ namespace cryptonote
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef cryptonote_connection_context connection_context;
|
typedef cryptonote_connection_context connection_context;
|
||||||
typedef core_stat_info stat_info;
|
|
||||||
typedef t_cryptonote_protocol_handler<t_core> cryptonote_protocol_handler;
|
typedef t_cryptonote_protocol_handler<t_core> cryptonote_protocol_handler;
|
||||||
typedef CORE_SYNC_DATA payload_type;
|
typedef CORE_SYNC_DATA payload_type;
|
||||||
|
|
||||||
|
@ -102,7 +100,6 @@ namespace cryptonote
|
||||||
bool process_payload_sync_data(const CORE_SYNC_DATA& hshd, cryptonote_connection_context& context, bool is_inital);
|
bool process_payload_sync_data(const CORE_SYNC_DATA& hshd, cryptonote_connection_context& context, bool is_inital);
|
||||||
bool get_payload_sync_data(blobdata& data);
|
bool get_payload_sync_data(blobdata& data);
|
||||||
bool get_payload_sync_data(CORE_SYNC_DATA& hshd);
|
bool get_payload_sync_data(CORE_SYNC_DATA& hshd);
|
||||||
bool get_stat_info(core_stat_info& stat_inf);
|
|
||||||
bool on_callback(cryptonote_connection_context& context);
|
bool on_callback(cryptonote_connection_context& context);
|
||||||
t_core& get_core(){return m_core;}
|
t_core& get_core(){return m_core;}
|
||||||
bool is_synchronized(){return m_synchronized;}
|
bool is_synchronized(){return m_synchronized;}
|
||||||
|
|
|
@ -154,12 +154,6 @@ namespace cryptonote
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------------------
|
||||||
template<class t_core>
|
template<class t_core>
|
||||||
bool t_cryptonote_protocol_handler<t_core>::get_stat_info(core_stat_info& stat_inf)
|
|
||||||
{
|
|
||||||
return m_core.get_stat_info(stat_inf);
|
|
||||||
}
|
|
||||||
//------------------------------------------------------------------------------------------------------------------------
|
|
||||||
template<class t_core>
|
|
||||||
void t_cryptonote_protocol_handler<t_core>::log_connections()
|
void t_cryptonote_protocol_handler<t_core>::log_connections()
|
||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
|
|
|
@ -301,8 +301,6 @@ namespace nodetool
|
||||||
bool islimitup=false;
|
bool islimitup=false;
|
||||||
bool islimitdown=false;
|
bool islimitdown=false;
|
||||||
|
|
||||||
typedef COMMAND_REQUEST_STAT_INFO_T<typename t_payload_net_handler::stat_info> COMMAND_REQUEST_STAT_INFO;
|
|
||||||
|
|
||||||
CHAIN_LEVIN_INVOKE_MAP2(p2p_connection_context); //move levin_commands_handler interface invoke(...) callbacks into invoke map
|
CHAIN_LEVIN_INVOKE_MAP2(p2p_connection_context); //move levin_commands_handler interface invoke(...) callbacks into invoke map
|
||||||
CHAIN_LEVIN_NOTIFY_MAP2(p2p_connection_context); //move levin_commands_handler interface notify(...) callbacks into nothing
|
CHAIN_LEVIN_NOTIFY_MAP2(p2p_connection_context); //move levin_commands_handler interface notify(...) callbacks into nothing
|
||||||
|
|
||||||
|
@ -313,11 +311,6 @@ namespace nodetool
|
||||||
HANDLE_INVOKE_T2(COMMAND_HANDSHAKE, &node_server::handle_handshake)
|
HANDLE_INVOKE_T2(COMMAND_HANDSHAKE, &node_server::handle_handshake)
|
||||||
HANDLE_INVOKE_T2(COMMAND_TIMED_SYNC, &node_server::handle_timed_sync)
|
HANDLE_INVOKE_T2(COMMAND_TIMED_SYNC, &node_server::handle_timed_sync)
|
||||||
HANDLE_INVOKE_T2(COMMAND_PING, &node_server::handle_ping)
|
HANDLE_INVOKE_T2(COMMAND_PING, &node_server::handle_ping)
|
||||||
#ifdef ALLOW_DEBUG_COMMANDS
|
|
||||||
HANDLE_INVOKE_T2(COMMAND_REQUEST_STAT_INFO, &node_server::handle_get_stat_info)
|
|
||||||
HANDLE_INVOKE_T2(COMMAND_REQUEST_NETWORK_STATE, &node_server::handle_get_network_state)
|
|
||||||
HANDLE_INVOKE_T2(COMMAND_REQUEST_PEER_ID, &node_server::handle_get_peer_id)
|
|
||||||
#endif
|
|
||||||
HANDLE_INVOKE_T2(COMMAND_REQUEST_SUPPORT_FLAGS, &node_server::handle_get_support_flags)
|
HANDLE_INVOKE_T2(COMMAND_REQUEST_SUPPORT_FLAGS, &node_server::handle_get_support_flags)
|
||||||
CHAIN_INVOKE_MAP_TO_OBJ_FORCE_CONTEXT(m_payload_handler, typename t_payload_net_handler::connection_context&)
|
CHAIN_INVOKE_MAP_TO_OBJ_FORCE_CONTEXT(m_payload_handler, typename t_payload_net_handler::connection_context&)
|
||||||
END_INVOKE_MAP2()
|
END_INVOKE_MAP2()
|
||||||
|
@ -328,17 +321,11 @@ namespace nodetool
|
||||||
int handle_handshake(int command, typename COMMAND_HANDSHAKE::request& arg, typename COMMAND_HANDSHAKE::response& rsp, p2p_connection_context& context);
|
int handle_handshake(int command, typename COMMAND_HANDSHAKE::request& arg, typename COMMAND_HANDSHAKE::response& rsp, p2p_connection_context& context);
|
||||||
int handle_timed_sync(int command, typename COMMAND_TIMED_SYNC::request& arg, typename COMMAND_TIMED_SYNC::response& rsp, p2p_connection_context& context);
|
int handle_timed_sync(int command, typename COMMAND_TIMED_SYNC::request& arg, typename COMMAND_TIMED_SYNC::response& rsp, p2p_connection_context& context);
|
||||||
int handle_ping(int command, COMMAND_PING::request& arg, COMMAND_PING::response& rsp, p2p_connection_context& context);
|
int handle_ping(int command, COMMAND_PING::request& arg, COMMAND_PING::response& rsp, p2p_connection_context& context);
|
||||||
#ifdef ALLOW_DEBUG_COMMANDS
|
|
||||||
int handle_get_stat_info(int command, typename COMMAND_REQUEST_STAT_INFO::request& arg, typename COMMAND_REQUEST_STAT_INFO::response& rsp, p2p_connection_context& context);
|
|
||||||
int handle_get_network_state(int command, COMMAND_REQUEST_NETWORK_STATE::request& arg, COMMAND_REQUEST_NETWORK_STATE::response& rsp, p2p_connection_context& context);
|
|
||||||
int handle_get_peer_id(int command, COMMAND_REQUEST_PEER_ID::request& arg, COMMAND_REQUEST_PEER_ID::response& rsp, p2p_connection_context& context);
|
|
||||||
#endif
|
|
||||||
int handle_get_support_flags(int command, COMMAND_REQUEST_SUPPORT_FLAGS::request& arg, COMMAND_REQUEST_SUPPORT_FLAGS::response& rsp, p2p_connection_context& context);
|
int handle_get_support_flags(int command, COMMAND_REQUEST_SUPPORT_FLAGS::request& arg, COMMAND_REQUEST_SUPPORT_FLAGS::response& rsp, p2p_connection_context& context);
|
||||||
bool init_config();
|
bool init_config();
|
||||||
bool make_default_peer_id();
|
bool make_default_peer_id();
|
||||||
bool make_default_config();
|
bool make_default_config();
|
||||||
bool store_config();
|
bool store_config();
|
||||||
bool check_trust(const proof_of_trust& tr, epee::net_utils::zone zone_type);
|
|
||||||
|
|
||||||
|
|
||||||
//----------------- levin_commands_handler -------------------------------------------------------------
|
//----------------- levin_commands_handler -------------------------------------------------------------
|
||||||
|
@ -414,7 +401,6 @@ namespace nodetool
|
||||||
bool set_rate_limit(const boost::program_options::variables_map& vm, int64_t limit);
|
bool set_rate_limit(const boost::program_options::variables_map& vm, int64_t limit);
|
||||||
|
|
||||||
bool has_too_many_connections(const epee::net_utils::network_address &address);
|
bool has_too_many_connections(const epee::net_utils::network_address &address);
|
||||||
uint64_t get_connections_count();
|
|
||||||
size_t get_incoming_connections_count();
|
size_t get_incoming_connections_count();
|
||||||
size_t get_incoming_connections_count(network_zone&);
|
size_t get_incoming_connections_count(network_zone&);
|
||||||
size_t get_outgoing_connections_count();
|
size_t get_outgoing_connections_count();
|
||||||
|
@ -478,9 +464,6 @@ namespace nodetool
|
||||||
epee::math_helper::once_a_time_seconds<60> m_gray_peerlist_housekeeping_interval;
|
epee::math_helper::once_a_time_seconds<60> m_gray_peerlist_housekeeping_interval;
|
||||||
epee::math_helper::once_a_time_seconds<3600, false> m_incoming_connections_interval;
|
epee::math_helper::once_a_time_seconds<3600, false> m_incoming_connections_interval;
|
||||||
|
|
||||||
#ifdef ALLOW_DEBUG_COMMANDS
|
|
||||||
uint64_t m_last_stat_request_time;
|
|
||||||
#endif
|
|
||||||
std::list<epee::net_utils::network_address> m_priority_peers;
|
std::list<epee::net_utils::network_address> m_priority_peers;
|
||||||
std::vector<epee::net_utils::network_address> m_exclusive_peers;
|
std::vector<epee::net_utils::network_address> m_exclusive_peers;
|
||||||
std::vector<epee::net_utils::network_address> m_seed_nodes;
|
std::vector<epee::net_utils::network_address> m_seed_nodes;
|
||||||
|
|
|
@ -813,7 +813,6 @@ namespace nodetool
|
||||||
|
|
||||||
//only in case if we really sure that we have external visible ip
|
//only in case if we really sure that we have external visible ip
|
||||||
m_have_address = true;
|
m_have_address = true;
|
||||||
m_last_stat_request_time = 0;
|
|
||||||
|
|
||||||
//configure self
|
//configure self
|
||||||
|
|
||||||
|
@ -940,15 +939,6 @@ namespace nodetool
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------
|
||||||
template<class t_payload_net_handler>
|
template<class t_payload_net_handler>
|
||||||
uint64_t node_server<t_payload_net_handler>::get_connections_count()
|
|
||||||
{
|
|
||||||
std::uint64_t count = 0;
|
|
||||||
for (auto& zone : m_network_zones)
|
|
||||||
count += zone.second.m_net_server.get_config_object().get_connections_count();
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------------------------
|
|
||||||
template<class t_payload_net_handler>
|
|
||||||
bool node_server<t_payload_net_handler>::deinit()
|
bool node_server<t_payload_net_handler>::deinit()
|
||||||
{
|
{
|
||||||
kill();
|
kill();
|
||||||
|
@ -1929,91 +1919,6 @@ namespace nodetool
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------
|
||||||
#ifdef ALLOW_DEBUG_COMMANDS
|
|
||||||
template<class t_payload_net_handler>
|
|
||||||
bool node_server<t_payload_net_handler>::check_trust(const proof_of_trust& tr, const epee::net_utils::zone zone_type)
|
|
||||||
{
|
|
||||||
uint64_t local_time = time(NULL);
|
|
||||||
uint64_t time_delata = local_time > tr.time ? local_time - tr.time: tr.time - local_time;
|
|
||||||
if(time_delata > 24*60*60 )
|
|
||||||
{
|
|
||||||
MWARNING("check_trust failed to check time conditions, local_time=" << local_time << ", proof_time=" << tr.time);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if(m_last_stat_request_time >= tr.time )
|
|
||||||
{
|
|
||||||
MWARNING("check_trust failed to check time conditions, last_stat_request_time=" << m_last_stat_request_time << ", proof_time=" << tr.time);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
const network_zone& zone = m_network_zones.at(zone_type);
|
|
||||||
if(zone.m_config.m_peer_id != tr.peer_id)
|
|
||||||
{
|
|
||||||
MWARNING("check_trust failed: peer_id mismatch (passed " << tr.peer_id << ", expected " << peerid_to_string(zone.m_config.m_peer_id) << ")");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
crypto::public_key pk = AUTO_VAL_INIT(pk);
|
|
||||||
epee::string_tools::hex_to_pod(::config::P2P_REMOTE_DEBUG_TRUSTED_PUB_KEY, pk);
|
|
||||||
crypto::hash h = get_proof_of_trust_hash(tr);
|
|
||||||
if(!crypto::check_signature(h, pk, tr.sign))
|
|
||||||
{
|
|
||||||
MWARNING("check_trust failed: sign check failed");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
//update last request time
|
|
||||||
m_last_stat_request_time = tr.time;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------------------------
|
|
||||||
template<class t_payload_net_handler>
|
|
||||||
int node_server<t_payload_net_handler>::handle_get_stat_info(int command, typename COMMAND_REQUEST_STAT_INFO::request& arg, typename COMMAND_REQUEST_STAT_INFO::response& rsp, p2p_connection_context& context)
|
|
||||||
{
|
|
||||||
if(!check_trust(arg.tr, context.m_remote_address.get_zone()))
|
|
||||||
{
|
|
||||||
drop_connection(context);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
rsp.connections_count = get_connections_count();
|
|
||||||
rsp.incoming_connections_count = rsp.connections_count - get_outgoing_connections_count();
|
|
||||||
rsp.version = MONERO_VERSION_FULL;
|
|
||||||
rsp.os_version = tools::get_os_version_string();
|
|
||||||
m_payload_handler.get_stat_info(rsp.payload_info);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------------------------
|
|
||||||
template<class t_payload_net_handler>
|
|
||||||
int node_server<t_payload_net_handler>::handle_get_network_state(int command, COMMAND_REQUEST_NETWORK_STATE::request& arg, COMMAND_REQUEST_NETWORK_STATE::response& rsp, p2p_connection_context& context)
|
|
||||||
{
|
|
||||||
if(!check_trust(arg.tr, context.m_remote_address.get_zone()))
|
|
||||||
{
|
|
||||||
drop_connection(context);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
m_network_zones.at(epee::net_utils::zone::public_).m_net_server.get_config_object().foreach_connection([&](const p2p_connection_context& cntxt)
|
|
||||||
{
|
|
||||||
connection_entry ce;
|
|
||||||
ce.adr = cntxt.m_remote_address;
|
|
||||||
ce.id = cntxt.peer_id;
|
|
||||||
ce.is_income = cntxt.m_is_income;
|
|
||||||
rsp.connections_list.push_back(ce);
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
network_zone& zone = m_network_zones.at(context.m_remote_address.get_zone());
|
|
||||||
zone.m_peerlist.get_peerlist(rsp.local_peerlist_gray, rsp.local_peerlist_white);
|
|
||||||
rsp.my_id = zone.m_config.m_peer_id;
|
|
||||||
rsp.local_time = time(NULL);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
//-----------------------------------------------------------------------------------
|
|
||||||
template<class t_payload_net_handler>
|
|
||||||
int node_server<t_payload_net_handler>::handle_get_peer_id(int command, COMMAND_REQUEST_PEER_ID::request& arg, COMMAND_REQUEST_PEER_ID::response& rsp, p2p_connection_context& context)
|
|
||||||
{
|
|
||||||
rsp.my_id = m_network_zones.at(context.m_remote_address.get_zone()).m_config.m_peer_id;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
//-----------------------------------------------------------------------------------
|
|
||||||
template<class t_payload_net_handler>
|
template<class t_payload_net_handler>
|
||||||
int node_server<t_payload_net_handler>::handle_get_support_flags(int command, COMMAND_REQUEST_SUPPORT_FLAGS::request& arg, COMMAND_REQUEST_SUPPORT_FLAGS::response& rsp, p2p_connection_context& context)
|
int node_server<t_payload_net_handler>::handle_get_support_flags(int command, COMMAND_REQUEST_SUPPORT_FLAGS::request& arg, COMMAND_REQUEST_SUPPORT_FLAGS::response& rsp, p2p_connection_context& context)
|
||||||
{
|
{
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
#include <boost/range/adaptor/reversed.hpp>
|
#include <boost/range/adaptor/reversed.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
#include "crypto/crypto.h"
|
||||||
#include "cryptonote_config.h"
|
#include "cryptonote_config.h"
|
||||||
#include "net/enums.h"
|
#include "net/enums.h"
|
||||||
#include "net/local_ip.h"
|
#include "net/local_ip.h"
|
||||||
|
|
|
@ -40,9 +40,6 @@
|
||||||
#include "string_tools.h"
|
#include "string_tools.h"
|
||||||
#include "time_helper.h"
|
#include "time_helper.h"
|
||||||
#include "cryptonote_config.h"
|
#include "cryptonote_config.h"
|
||||||
#ifdef ALLOW_DEBUG_COMMANDS
|
|
||||||
#include "crypto/crypto.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace nodetool
|
namespace nodetool
|
||||||
{
|
{
|
||||||
|
@ -286,117 +283,6 @@ namespace nodetool
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifdef ALLOW_DEBUG_COMMANDS
|
|
||||||
//These commands are considered as insecure, and made in debug purposes for a limited lifetime.
|
|
||||||
//Anyone who feel unsafe with this commands can disable the ALLOW_GET_STAT_COMMAND macro.
|
|
||||||
|
|
||||||
struct proof_of_trust
|
|
||||||
{
|
|
||||||
peerid_type peer_id;
|
|
||||||
uint64_t time;
|
|
||||||
crypto::signature sign;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(peer_id)
|
|
||||||
KV_SERIALIZE(time)
|
|
||||||
KV_SERIALIZE_VAL_POD_AS_BLOB(sign)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template<class payload_stat_info>
|
|
||||||
struct COMMAND_REQUEST_STAT_INFO_T
|
|
||||||
{
|
|
||||||
const static int ID = P2P_COMMANDS_POOL_BASE + 4;
|
|
||||||
|
|
||||||
struct request_t
|
|
||||||
{
|
|
||||||
proof_of_trust tr;
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(tr)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<request_t> request;
|
|
||||||
|
|
||||||
struct response_t
|
|
||||||
{
|
|
||||||
std::string version;
|
|
||||||
std::string os_version;
|
|
||||||
uint64_t connections_count;
|
|
||||||
uint64_t incoming_connections_count;
|
|
||||||
payload_stat_info payload_info;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(version)
|
|
||||||
KV_SERIALIZE(os_version)
|
|
||||||
KV_SERIALIZE(connections_count)
|
|
||||||
KV_SERIALIZE(incoming_connections_count)
|
|
||||||
KV_SERIALIZE(payload_info)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<response_t> response;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
/* */
|
|
||||||
/************************************************************************/
|
|
||||||
struct COMMAND_REQUEST_NETWORK_STATE
|
|
||||||
{
|
|
||||||
const static int ID = P2P_COMMANDS_POOL_BASE + 5;
|
|
||||||
|
|
||||||
struct request_t
|
|
||||||
{
|
|
||||||
proof_of_trust tr;
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(tr)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<request_t> request;
|
|
||||||
|
|
||||||
struct response_t
|
|
||||||
{
|
|
||||||
std::vector<peerlist_entry> local_peerlist_white;
|
|
||||||
std::vector<peerlist_entry> local_peerlist_gray;
|
|
||||||
std::vector<connection_entry> connections_list;
|
|
||||||
peerid_type my_id;
|
|
||||||
uint64_t local_time;
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE_CONTAINER_POD_AS_BLOB(local_peerlist_white)
|
|
||||||
KV_SERIALIZE_CONTAINER_POD_AS_BLOB(local_peerlist_gray)
|
|
||||||
KV_SERIALIZE_CONTAINER_POD_AS_BLOB(connections_list)
|
|
||||||
KV_SERIALIZE(my_id)
|
|
||||||
KV_SERIALIZE(local_time)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<response_t> response;
|
|
||||||
};
|
|
||||||
|
|
||||||
/************************************************************************/
|
|
||||||
/* */
|
|
||||||
/************************************************************************/
|
|
||||||
struct COMMAND_REQUEST_PEER_ID
|
|
||||||
{
|
|
||||||
const static int ID = P2P_COMMANDS_POOL_BASE + 6;
|
|
||||||
|
|
||||||
struct request_t
|
|
||||||
{
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<request_t> request;
|
|
||||||
|
|
||||||
struct response_t
|
|
||||||
{
|
|
||||||
peerid_type my_id;
|
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
|
||||||
KV_SERIALIZE(my_id)
|
|
||||||
END_KV_SERIALIZE_MAP()
|
|
||||||
};
|
|
||||||
typedef epee::misc_utils::struct_init<response_t> response;
|
|
||||||
};
|
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
@ -421,16 +307,4 @@ namespace nodetool
|
||||||
};
|
};
|
||||||
typedef epee::misc_utils::struct_init<response_t> response;
|
typedef epee::misc_utils::struct_init<response_t> response;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
inline crypto::hash get_proof_of_trust_hash(const nodetool::proof_of_trust& pot)
|
|
||||||
{
|
|
||||||
std::string s;
|
|
||||||
s.append(reinterpret_cast<const char*>(&pot.peer_id), sizeof(pot.peer_id));
|
|
||||||
s.append(reinterpret_cast<const char*>(&pot.time), sizeof(pot.time));
|
|
||||||
return crypto::cn_fast_hash(s.data(), s.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,6 @@ namespace tests
|
||||||
bool init(const boost::program_options::variables_map& vm);
|
bool init(const boost::program_options::variables_map& vm);
|
||||||
bool deinit(){return true;}
|
bool deinit(){return true;}
|
||||||
bool get_short_chain_history(std::list<crypto::hash>& ids);
|
bool get_short_chain_history(std::list<crypto::hash>& ids);
|
||||||
bool get_stat_info(cryptonote::core_stat_info& st_inf){return true;}
|
|
||||||
bool have_block(const crypto::hash& id);
|
bool have_block(const crypto::hash& id);
|
||||||
void get_blockchain_top(uint64_t& height, crypto::hash& top_id);
|
void get_blockchain_top(uint64_t& height, crypto::hash& top_id);
|
||||||
bool handle_incoming_tx(const cryptonote::tx_blob_entry& tx_blob, cryptonote::tx_verification_context& tvc, cryptonote::relay_method tx_relay, bool relayed);
|
bool handle_incoming_tx(const cryptonote::tx_blob_entry& tx_blob, cryptonote::tx_verification_context& tvc, cryptonote::relay_method tx_relay, bool relayed);
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
#include "boost/archive/portable_binary_iarchive.hpp"
|
#include "boost/archive/portable_binary_iarchive.hpp"
|
||||||
#include "boost/archive/portable_binary_oarchive.hpp"
|
#include "boost/archive/portable_binary_oarchive.hpp"
|
||||||
#include "byte_slice.h"
|
#include "byte_slice.h"
|
||||||
|
#include "crypto/crypto.h"
|
||||||
#include "hex.h"
|
#include "hex.h"
|
||||||
#include "net/net_utils_base.h"
|
#include "net/net_utils_base.h"
|
||||||
#include "net/local_ip.h"
|
#include "net/local_ip.h"
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
#include "crypto/crypto.h"
|
||||||
#include "net/dandelionpp.h"
|
#include "net/dandelionpp.h"
|
||||||
#include "net/error.h"
|
#include "net/error.h"
|
||||||
#include "net/net_utils_base.h"
|
#include "net/net_utils_base.h"
|
||||||
|
|
|
@ -54,7 +54,6 @@ public:
|
||||||
bool init(const boost::program_options::variables_map& vm) {return true ;}
|
bool init(const boost::program_options::variables_map& vm) {return true ;}
|
||||||
bool deinit(){return true;}
|
bool deinit(){return true;}
|
||||||
bool get_short_chain_history(std::list<crypto::hash>& ids) const { return true; }
|
bool get_short_chain_history(std::list<crypto::hash>& ids) const { return true; }
|
||||||
bool get_stat_info(cryptonote::core_stat_info& st_inf) const {return true;}
|
|
||||||
bool have_block(const crypto::hash& id) const {return true;}
|
bool have_block(const crypto::hash& id) const {return true;}
|
||||||
void get_blockchain_top(uint64_t& height, crypto::hash& top_id)const{height=0;top_id=crypto::null_hash;}
|
void get_blockchain_top(uint64_t& height, crypto::hash& top_id)const{height=0;top_id=crypto::null_hash;}
|
||||||
bool handle_incoming_tx(const cryptonote::tx_blob_entry& tx_blob, cryptonote::tx_verification_context& tvc, cryptonote::relay_method tx_relay, bool relayed) { return true; }
|
bool handle_incoming_tx(const cryptonote::tx_blob_entry& tx_blob, cryptonote::tx_verification_context& tvc, cryptonote::relay_method tx_relay, bool relayed) { return true; }
|
||||||
|
|
Loading…
Reference in New Issue