mirror of
https://github.com/monero-project/monero.git
synced 2026-01-16 23:01:54 -08:00
daemon/rpc: updates command and RPC
subcommands "check", "download", and "update". update is not yet implemented.
This commit is contained in:
@@ -552,4 +552,15 @@ bool t_command_parser_executor::print_blockchain_dynamic_stats(const std::vector
|
||||
return m_executor.print_blockchain_dynamic_stats(nblocks);
|
||||
}
|
||||
|
||||
bool t_command_parser_executor::update(const std::vector<std::string>& args)
|
||||
{
|
||||
if(args.size() != 1)
|
||||
{
|
||||
std::cout << "Exactly one parameter is needed: check, download, or update" << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
return m_executor.update(args.front());
|
||||
}
|
||||
|
||||
} // namespace daemonize
|
||||
|
||||
@@ -130,6 +130,8 @@ public:
|
||||
bool alt_chain_info(const std::vector<std::string>& args);
|
||||
|
||||
bool print_blockchain_dynamic_stats(const std::vector<std::string>& args);
|
||||
|
||||
bool update(const std::vector<std::string>& args);
|
||||
};
|
||||
|
||||
} // namespace daemonize
|
||||
|
||||
@@ -243,6 +243,11 @@ t_command_server::t_command_server(
|
||||
, std::bind(&t_command_parser_executor::print_blockchain_dynamic_stats, &m_parser, p::_1)
|
||||
, "Print information about current blockchain dynamic state"
|
||||
);
|
||||
m_command_lookup.set_handler(
|
||||
"update"
|
||||
, std::bind(&t_command_parser_executor::update, &m_parser, p::_1)
|
||||
, "subcommands: check (check if an update is available), download (download it is there is), update (not implemented)"
|
||||
);
|
||||
}
|
||||
|
||||
bool t_command_server::process_command_str(const std::string& cmd)
|
||||
|
||||
@@ -1580,4 +1580,51 @@ bool t_rpc_command_executor::print_blockchain_dynamic_stats(uint64_t nblocks)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool t_rpc_command_executor::update(const std::string &command)
|
||||
{
|
||||
cryptonote::COMMAND_RPC_UPDATE::request req;
|
||||
cryptonote::COMMAND_RPC_UPDATE::response res;
|
||||
epee::json_rpc::error error_resp;
|
||||
|
||||
std::string fail_message = "Problem fetching info";
|
||||
|
||||
req.command = command;
|
||||
if (m_is_rpc)
|
||||
{
|
||||
if (!m_rpc_client->rpc_request(req, res, "/update", fail_message.c_str()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!m_rpc_server->on_update(req, res) || res.status != CORE_RPC_STATUS_OK)
|
||||
{
|
||||
tools::fail_msg_writer() << fail_message.c_str();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!res.update)
|
||||
{
|
||||
tools::msg_writer() << "No update available";
|
||||
return true;
|
||||
}
|
||||
|
||||
tools::msg_writer() << "Update available: v" << res.version << ": " << res.user_uri << ", hash " << res.hash;
|
||||
if (command == "check")
|
||||
return true;
|
||||
|
||||
if (!res.path.empty())
|
||||
tools::msg_writer() << "Update downloaded to: " << res.path;
|
||||
else
|
||||
tools::msg_writer() << "Update download failed: " << res.status;
|
||||
if (command == "download")
|
||||
return true;
|
||||
|
||||
tools::msg_writer() << "'update' not implemented yet";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}// namespace daemonize
|
||||
|
||||
@@ -151,6 +151,8 @@ public:
|
||||
bool alt_chain_info();
|
||||
|
||||
bool print_blockchain_dynamic_stats(uint64_t nblocks);
|
||||
|
||||
bool update(const std::string &command);
|
||||
};
|
||||
|
||||
} // namespace daemonize
|
||||
|
||||
Reference in New Issue
Block a user