aboutsummaryrefslogtreecommitdiff
path: root/src/daemon
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon')
-rw-r--r--src/daemon/CMakeLists.txt2
-rw-r--r--src/daemon/command_line_args.h5
-rw-r--r--src/daemon/command_parser_executor.cpp39
-rw-r--r--src/daemon/command_parser_executor.h2
-rw-r--r--src/daemon/main.cpp3
-rw-r--r--src/daemon/rpc_command_executor.cpp126
-rw-r--r--src/daemon/rpc_command_executor.h6
7 files changed, 128 insertions, 55 deletions
diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt
index 782667867..d0fc1d846 100644
--- a/src/daemon/CMakeLists.txt
+++ b/src/daemon/CMakeLists.txt
@@ -94,6 +94,7 @@ target_link_libraries(daemon
daemonizer
serialization
daemon_rpc_server
+ version
${Boost_CHRONO_LIBRARY}
${Boost_FILESYSTEM_LIBRARY}
${Boost_PROGRAM_OPTIONS_LIBRARY}
@@ -102,7 +103,6 @@ target_link_libraries(daemon
${CMAKE_THREAD_LIBS_INIT}
${ZMQ_LIB}
${EXTRA_LIBRARIES})
-add_dependencies(daemon version)
set_property(TARGET daemon
PROPERTY
OUTPUT_NAME "monerod")
diff --git a/src/daemon/command_line_args.h b/src/daemon/command_line_args.h
index f19d5cc63..7fa58f9d8 100644
--- a/src/daemon/command_line_args.h
+++ b/src/daemon/command_line_args.h
@@ -46,6 +46,11 @@ namespace daemon_args
, "Specify log file"
, ""
};
+ const command_line::arg_descriptor<std::size_t> arg_max_log_file_size = {
+ "max-log-file-size"
+ , "Specify maximum log file size [B]"
+ , MAX_LOG_FILE_SIZE
+ };
const command_line::arg_descriptor<std::string> arg_log_level = {
"log-level"
, ""
diff --git a/src/daemon/command_parser_executor.cpp b/src/daemon/command_parser_executor.cpp
index d949a57b1..395157869 100644
--- a/src/daemon/command_parser_executor.cpp
+++ b/src/daemon/command_parser_executor.cpp
@@ -334,17 +334,18 @@ bool t_command_parser_executor::set_limit(const std::vector<std::string>& args)
if(args.size()==0) {
return m_executor.get_limit();
}
- int limit;
+ int64_t limit;
try {
- limit = std::stoi(args[0]);
+ limit = std::stoll(args[0]);
}
- catch(std::invalid_argument& ex) {
+ catch(const std::invalid_argument& ex) {
+ std::cout << "failed to parse argument" << std::endl;
return false;
}
- if (limit==-1) limit=128;
- limit *= 1024;
+ if (limit > 0)
+ limit *= 1024;
- return m_executor.set_limit(limit);
+ return m_executor.set_limit(limit, limit);
}
bool t_command_parser_executor::set_limit_up(const std::vector<std::string>& args)
@@ -353,17 +354,18 @@ bool t_command_parser_executor::set_limit_up(const std::vector<std::string>& arg
if(args.size()==0) {
return m_executor.get_limit_up();
}
- int limit;
+ int64_t limit;
try {
- limit = std::stoi(args[0]);
+ limit = std::stoll(args[0]);
}
- catch(std::invalid_argument& ex) {
+ catch(const std::invalid_argument& ex) {
+ std::cout << "failed to parse argument" << std::endl;
return false;
}
- if (limit==-1) limit=128;
- limit *= 1024;
+ if (limit > 0)
+ limit *= 1024;
- return m_executor.set_limit_up(limit);
+ return m_executor.set_limit(0, limit);
}
bool t_command_parser_executor::set_limit_down(const std::vector<std::string>& args)
@@ -372,17 +374,18 @@ bool t_command_parser_executor::set_limit_down(const std::vector<std::string>& a
if(args.size()==0) {
return m_executor.get_limit_down();
}
- int limit;
+ int64_t limit;
try {
- limit = std::stoi(args[0]);
+ limit = std::stoll(args[0]);
}
- catch(std::invalid_argument& ex) {
+ catch(const std::invalid_argument& ex) {
+ std::cout << "failed to parse argument" << std::endl;
return false;
}
- if (limit==-1) limit=128;
- limit *= 1024;
+ if (limit > 0)
+ limit *= 1024;
- return m_executor.set_limit_down(limit);
+ return m_executor.set_limit(limit, 0);
}
bool t_command_parser_executor::out_peers(const std::vector<std::string>& args)
diff --git a/src/daemon/command_parser_executor.h b/src/daemon/command_parser_executor.h
index f301ef14a..6443d9be0 100644
--- a/src/daemon/command_parser_executor.h
+++ b/src/daemon/command_parser_executor.h
@@ -36,7 +36,7 @@
#pragma once
-#include <boost/optional/optional_fwd.hpp>
+#include <boost/optional/optional.hpp>
#include "daemon/rpc_command_executor.h"
#include "common/common_fwd.h"
diff --git a/src/daemon/main.cpp b/src/daemon/main.cpp
index 8f6d542b6..acc23b9f9 100644
--- a/src/daemon/main.cpp
+++ b/src/daemon/main.cpp
@@ -88,6 +88,7 @@ int main(int argc, char const * argv[])
bf::path default_log = default_data_dir / std::string(CRYPTONOTE_NAME ".log");
command_line::add_arg(core_settings, daemon_args::arg_log_file, default_log.string());
command_line::add_arg(core_settings, daemon_args::arg_log_level);
+ command_line::add_arg(core_settings, daemon_args::arg_max_log_file_size);
command_line::add_arg(core_settings, daemon_args::arg_max_concurrency);
command_line::add_arg(core_settings, daemon_args::arg_zmq_rpc_bind_ip);
command_line::add_arg(core_settings, daemon_args::arg_zmq_rpc_bind_port);
@@ -207,7 +208,7 @@ int main(int argc, char const * argv[])
if (! vm["log-file"].defaulted())
log_file_path = command_line::get_arg(vm, daemon_args::arg_log_file);
log_file_path = bf::absolute(log_file_path, relative_path_base);
- mlog_configure(log_file_path.string(), true);
+ mlog_configure(log_file_path.string(), true, command_line::get_arg(vm, daemon_args::arg_max_log_file_size));
// Set log level
if (!vm["log-level"].defaulted())
diff --git a/src/daemon/rpc_command_executor.cpp b/src/daemon/rpc_command_executor.cpp
index 167e24ed3..3cd32ec2f 100644
--- a/src/daemon/rpc_command_executor.cpp
+++ b/src/daemon/rpc_command_executor.cpp
@@ -700,6 +700,7 @@ bool t_rpc_command_executor::print_transaction(crypto::hash transaction_hash) {
std::string fail_message = "Problem fetching transaction";
req.txs_hashes.push_back(epee::string_tools::pod_to_hex(transaction_hash));
+ req.decode_as_json = false;
if (m_is_rpc)
{
if (!m_rpc_client->rpc_request(req, res, "/gettransactions", fail_message.c_str()))
@@ -1129,48 +1130,115 @@ bool t_rpc_command_executor::print_status()
bool t_rpc_command_executor::get_limit()
{
- int limit_down = epee::net_utils::connection_basic::get_rate_down_limit( );
- int limit_up = epee::net_utils::connection_basic::get_rate_up_limit( );
- std::cout << "limit-down is " << limit_down/1024 << " kB/s" << std::endl;
- std::cout << "limit-up is " << limit_up/1024 << " kB/s" << std::endl;
- return true;
+ cryptonote::COMMAND_RPC_GET_LIMIT::request req;
+ cryptonote::COMMAND_RPC_GET_LIMIT::response res;
+
+ std::string failure_message = "Couldn't get limit";
+
+ if (m_is_rpc)
+ {
+ if (!m_rpc_client->rpc_request(req, res, "/get_limit", failure_message.c_str()))
+ {
+ return true;
+ }
+ }
+ else
+ {
+ if (!m_rpc_server->on_get_limit(req, res) || res.status != CORE_RPC_STATUS_OK)
+ {
+ tools::fail_msg_writer() << make_error(failure_message, res.status);
+ return true;
+ }
+ }
+
+ tools::msg_writer() << "limit-down is " << res.limit_down/1024 << " kB/s";
+ tools::msg_writer() << "limit-up is " << res.limit_up/1024 << " kB/s";
+ return true;
}
-bool t_rpc_command_executor::set_limit(int limit)
+bool t_rpc_command_executor::set_limit(int64_t limit_down, int64_t limit_up)
{
- epee::net_utils::connection_basic::set_rate_down_limit( limit );
- epee::net_utils::connection_basic::set_rate_up_limit( limit );
- std::cout << "Set limit-down to " << limit/1024 << " kB/s" << std::endl;
- std::cout << "Set limit-up to " << limit/1024 << " kB/s" << std::endl;
- return true;
+ cryptonote::COMMAND_RPC_SET_LIMIT::request req;
+ cryptonote::COMMAND_RPC_SET_LIMIT::response res;
+
+ req.limit_down = limit_down;
+ req.limit_up = limit_up;
+
+ std::string failure_message = "Couldn't set limit";
+
+ if (m_is_rpc)
+ {
+ if (!m_rpc_client->rpc_request(req, res, "/set_limit", failure_message.c_str()))
+ {
+ return true;
+ }
+ }
+ else
+ {
+ if (!m_rpc_server->on_set_limit(req, res) || res.status != CORE_RPC_STATUS_OK)
+ {
+ tools::fail_msg_writer() << make_error(failure_message, res.status);
+ return true;
+ }
+ }
+
+ tools::msg_writer() << "Set limit-down to " << res.limit_down/1024 << " kB/s";
+ tools::msg_writer() << "Set limit-up to " << res.limit_up/1024 << " kB/s";
+ return true;
}
bool t_rpc_command_executor::get_limit_up()
{
- int limit_up = epee::net_utils::connection_basic::get_rate_up_limit( );
- std::cout << "limit-up is " << limit_up/1024 << " kB/s" << std::endl;
- return true;
-}
+ cryptonote::COMMAND_RPC_GET_LIMIT::request req;
+ cryptonote::COMMAND_RPC_GET_LIMIT::response res;
-bool t_rpc_command_executor::set_limit_up(int limit)
-{
- epee::net_utils::connection_basic::set_rate_up_limit( limit );
- std::cout << "Set limit-up to " << limit/1024 << " kB/s" << std::endl;
- return true;
+ std::string failure_message = "Couldn't get limit";
+
+ if (m_is_rpc)
+ {
+ if (!m_rpc_client->rpc_request(req, res, "/get_limit", failure_message.c_str()))
+ {
+ return true;
+ }
+ }
+ else
+ {
+ if (!m_rpc_server->on_get_limit(req, res) || res.status != CORE_RPC_STATUS_OK)
+ {
+ tools::fail_msg_writer() << make_error(failure_message, res.status);
+ return true;
+ }
+ }
+
+ tools::msg_writer() << "limit-up is " << res.limit_up/1024 << " kB/s";
+ return true;
}
bool t_rpc_command_executor::get_limit_down()
{
- int limit_down = epee::net_utils::connection_basic::get_rate_down_limit( );
- std::cout << "limit-down is " << limit_down/1024 << " kB/s" << std::endl;
- return true;
-}
+ cryptonote::COMMAND_RPC_GET_LIMIT::request req;
+ cryptonote::COMMAND_RPC_GET_LIMIT::response res;
-bool t_rpc_command_executor::set_limit_down(int limit)
-{
- epee::net_utils::connection_basic::set_rate_down_limit( limit );
- std::cout << "Set limit-down to " << limit/1024 << " kB/s" << std::endl;
- return true;
+ std::string failure_message = "Couldn't get limit";
+
+ if (m_is_rpc)
+ {
+ if (!m_rpc_client->rpc_request(req, res, "/get_limit", failure_message.c_str()))
+ {
+ return true;
+ }
+ }
+ else
+ {
+ if (!m_rpc_server->on_get_limit(req, res) || res.status != CORE_RPC_STATUS_OK)
+ {
+ tools::fail_msg_writer() << make_error(failure_message, res.status);
+ return true;
+ }
+ }
+
+ tools::msg_writer() << "limit-down is " << res.limit_down/1024 << " kB/s";
+ return true;
}
bool t_rpc_command_executor::out_peers(uint64_t limit)
diff --git a/src/daemon/rpc_command_executor.h b/src/daemon/rpc_command_executor.h
index fc0b39654..d79707a6f 100644
--- a/src/daemon/rpc_command_executor.h
+++ b/src/daemon/rpc_command_executor.h
@@ -119,11 +119,7 @@ public:
bool get_limit_down();
- bool set_limit(int limit);
-
- bool set_limit_up(int limit);
-
- bool set_limit_down(int limit);
+ bool set_limit(int64_t limit_down, int64_t limit_up);
bool out_peers(uint64_t limit);