daemon: implement 'set_bootstrap_daemon' command
This commit is contained in:
parent
c9df9d683a
commit
063eebbd43
|
@ -813,4 +813,18 @@ bool t_command_parser_executor::check_blockchain_pruning(const std::vector<std::
|
||||||
return m_executor.check_blockchain_pruning();
|
return m_executor.check_blockchain_pruning();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool t_command_parser_executor::set_bootstrap_daemon(const std::vector<std::string>& args)
|
||||||
|
{
|
||||||
|
const size_t args_count = args.size();
|
||||||
|
if (args_count < 1 || args_count > 3)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return m_executor.set_bootstrap_daemon(
|
||||||
|
args[0] != "none" ? args[0] : std::string(),
|
||||||
|
args_count > 1 ? args[1] : std::string(),
|
||||||
|
args_count > 2 ? args[2] : std::string());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace daemonize
|
} // namespace daemonize
|
||||||
|
|
|
@ -150,6 +150,8 @@ public:
|
||||||
bool check_blockchain_pruning(const std::vector<std::string>& args);
|
bool check_blockchain_pruning(const std::vector<std::string>& args);
|
||||||
|
|
||||||
bool print_net_stats(const std::vector<std::string>& args);
|
bool print_net_stats(const std::vector<std::string>& args);
|
||||||
|
|
||||||
|
bool set_bootstrap_daemon(const std::vector<std::string>& args);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace daemonize
|
} // namespace daemonize
|
||||||
|
|
|
@ -310,6 +310,13 @@ t_command_server::t_command_server(
|
||||||
, std::bind(&t_command_parser_executor::check_blockchain_pruning, &m_parser, p::_1)
|
, std::bind(&t_command_parser_executor::check_blockchain_pruning, &m_parser, p::_1)
|
||||||
, "Check the blockchain pruning."
|
, "Check the blockchain pruning."
|
||||||
);
|
);
|
||||||
|
m_command_lookup.set_handler(
|
||||||
|
"set_bootstrap_daemon"
|
||||||
|
, std::bind(&t_command_parser_executor::set_bootstrap_daemon, &m_parser, p::_1)
|
||||||
|
, "set_bootstrap_daemon (auto | none | host[:port] [username] [password])"
|
||||||
|
, "URL of a 'bootstrap' remote daemon that the connected wallets can use while this daemon is still not fully synced.\n"
|
||||||
|
"Use 'auto' to enable automatic public nodes discovering and bootstrap daemon switching"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool t_command_server::process_command_str(const std::string& cmd)
|
bool t_command_server::process_command_str(const std::string& cmd)
|
||||||
|
|
|
@ -2320,4 +2320,40 @@ bool t_rpc_command_executor::check_blockchain_pruning()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool t_rpc_command_executor::set_bootstrap_daemon(
|
||||||
|
const std::string &address,
|
||||||
|
const std::string &username,
|
||||||
|
const std::string &password)
|
||||||
|
{
|
||||||
|
cryptonote::COMMAND_RPC_SET_BOOTSTRAP_DAEMON::request req;
|
||||||
|
cryptonote::COMMAND_RPC_SET_BOOTSTRAP_DAEMON::response res;
|
||||||
|
const std::string fail_message = "Unsuccessful";
|
||||||
|
|
||||||
|
req.address = address;
|
||||||
|
req.username = username;
|
||||||
|
req.password = password;
|
||||||
|
|
||||||
|
if (m_is_rpc)
|
||||||
|
{
|
||||||
|
if (!m_rpc_client->rpc_request(req, res, "/set_bootstrap_daemon", fail_message))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!m_rpc_server->on_set_bootstrap_daemon(req, res) || res.status != CORE_RPC_STATUS_OK)
|
||||||
|
{
|
||||||
|
tools::fail_msg_writer() << make_error(fail_message, res.status);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tools::success_msg_writer()
|
||||||
|
<< "Successfully set bootstrap daemon address to "
|
||||||
|
<< (!req.address.empty() ? req.address : "none");
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}// namespace daemonize
|
}// namespace daemonize
|
||||||
|
|
|
@ -162,6 +162,11 @@ public:
|
||||||
bool check_blockchain_pruning();
|
bool check_blockchain_pruning();
|
||||||
|
|
||||||
bool print_net_stats();
|
bool print_net_stats();
|
||||||
|
|
||||||
|
bool set_bootstrap_daemon(
|
||||||
|
const std::string &address,
|
||||||
|
const std::string &username,
|
||||||
|
const std::string &password);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace daemonize
|
} // namespace daemonize
|
||||||
|
|
Loading…
Reference in New Issue