Electroneum
daemonize::t_command_server Class Reference

#include <command_server.h>

Public Member Functions

 t_command_server (uint32_t ip, uint16_t port, const boost::optional< tools::login > &login, const epee::net_utils::ssl_options_t &ssl_options, bool is_rpc=true, cryptonote::core_rpc_server *rpc_server=NULL)
 
bool process_command_str (const std::string &cmd)
 
bool process_command_vec (const std::vector< std::string > &cmd)
 
bool start_handling (std::function< void(void)> exit_handler=NULL)
 
void stop_handling ()
 

Detailed Description

Definition at line 51 of file command_server.h.

Constructor & Destructor Documentation

◆ t_command_server()

daemonize::t_command_server::t_command_server ( uint32_t  ip,
uint16_t  port,
const boost::optional< tools::login > &  login,
const epee::net_utils::ssl_options_t ssl_options,
bool  is_rpc = true,
cryptonote::core_rpc_server rpc_server = NULL 
)

Definition at line 43 of file command_server.cpp.

51  : m_parser(ip, port, login, ssl_options, is_rpc, rpc_server)
52  , m_command_lookup()
53  , m_is_rpc(is_rpc)
54 {
55  m_command_lookup.set_handler(
56  "help"
57  , std::bind(&t_command_server::help, this, p::_1)
58  , "help [<command>]"
59  , "Show the help section or the documentation about a <command>."
60  );
61  m_command_lookup.set_handler(
62  "print_height"
63  , std::bind(&t_command_parser_executor::print_height, &m_parser, p::_1)
64  , "Print the local blockchain height."
65  );
66  m_command_lookup.set_handler(
67  "print_pl"
68  , std::bind(&t_command_parser_executor::print_peer_list, &m_parser, p::_1)
69  , "print_pl [white] [gray] [<limit>]"
70  , "Print the current peer list."
71  );
72  m_command_lookup.set_handler(
73  "print_pl_stats"
74  , std::bind(&t_command_parser_executor::print_peer_list_stats, &m_parser, p::_1)
75  , "Print the peer list statistics."
76  );
77  m_command_lookup.set_handler(
78  "print_cn"
79  , std::bind(&t_command_parser_executor::print_connections, &m_parser, p::_1)
80  , "Print the current connections."
81  );
82  m_command_lookup.set_handler(
83  "print_net_stats"
84  , std::bind(&t_command_parser_executor::print_net_stats, &m_parser, p::_1)
85  , "Print network statistics."
86  );
87  m_command_lookup.set_handler(
88  "print_bc"
89  , std::bind(&t_command_parser_executor::print_blockchain_info, &m_parser, p::_1)
90  , "print_bc <begin_height> [<end_height>]"
91  , "Print the blockchain info in a given blocks range."
92  );
93  m_command_lookup.set_handler(
94  "print_block"
95  , std::bind(&t_command_parser_executor::print_block, &m_parser, p::_1)
96  , "print_block <block_hash> | <block_height>"
97  , "Print a given block."
98  );
99  m_command_lookup.set_handler(
100  "print_tx"
101  , std::bind(&t_command_parser_executor::print_transaction, &m_parser, p::_1)
102  , "print_tx <transaction_hash> [+hex] [+json]"
103  , "Print a given transaction."
104  );
105  m_command_lookup.set_handler(
106  "is_key_image_spent"
107  , std::bind(&t_command_parser_executor::is_key_image_spent, &m_parser, p::_1)
108  , "is_key_image_spent <key_image>"
109  , "Print whether a given key image is in the spent key images set."
110  );
111  m_command_lookup.set_handler(
112  "is_public_output_spent"
113  , std::bind(&t_command_parser_executor::is_public_output_spent, &m_parser, p::_1)
114  , "is_public_output_spent <tx hash> <relative output index> <amount without decimal period, eg 0.01 should be 1>"
115  , "Print whether a given public output has been spent in the pool or on the blockchain."
116  );
117  m_command_lookup.set_handler(
118  "start_mining"
119  , std::bind(&t_command_parser_executor::start_mining, &m_parser, p::_1)
120  , "start_mining <addr> [<threads>|auto] [do_background_mining] [ignore_battery]"
121  , "Start mining for specified address. Defaults to 1 thread and no background mining. Use \"auto\" to autodetect optimal number of threads."
122  );
123  m_command_lookup.set_handler(
124  "stop_mining"
125  , std::bind(&t_command_parser_executor::stop_mining, &m_parser, p::_1)
126  , "Stop mining."
127  );
128  m_command_lookup.set_handler(
129  "mining_status"
130  , std::bind(&t_command_parser_executor::mining_status, &m_parser, p::_1)
131  , "Show current mining status."
132  );
133  m_command_lookup.set_handler(
134  "print_pool"
135  , std::bind(&t_command_parser_executor::print_transaction_pool_long, &m_parser, p::_1)
136  , "Print the transaction pool using a long format."
137  );
138  m_command_lookup.set_handler(
139  "print_pool_sh"
140  , std::bind(&t_command_parser_executor::print_transaction_pool_short, &m_parser, p::_1)
141  , "Print transaction pool using a short format."
142  );
143  m_command_lookup.set_handler(
144  "print_pool_stats"
145  , std::bind(&t_command_parser_executor::print_transaction_pool_stats, &m_parser, p::_1)
146  , "Print the transaction pool's statistics."
147  );
148  m_command_lookup.set_handler(
149  "show_hr"
150  , std::bind(&t_command_parser_executor::show_hash_rate, &m_parser, p::_1)
151  , "Start showing the current hash rate."
152  );
153  m_command_lookup.set_handler(
154  "hide_hr"
155  , std::bind(&t_command_parser_executor::hide_hash_rate, &m_parser, p::_1)
156  , "Stop showing the hash rate."
157  );
158  m_command_lookup.set_handler(
159  "save"
160  , std::bind(&t_command_parser_executor::save_blockchain, &m_parser, p::_1)
161  , "Save the blockchain."
162  );
163  m_command_lookup.set_handler(
164  "set_log"
165  , std::bind(&t_command_parser_executor::set_log_level, &m_parser, p::_1)
166  , "set_log <level>|<{+,-,}categories>"
167  , "Change the current log level/categories where <level> is a number 0-4."
168  );
169  m_command_lookup.set_handler(
170  "diff"
171  , std::bind(&t_command_parser_executor::show_difficulty, &m_parser, p::_1)
172  , "Show the current difficulty."
173  );
174  m_command_lookup.set_handler(
175  "status"
176  , std::bind(&t_command_parser_executor::show_status, &m_parser, p::_1)
177  , "Show the current status."
178  );
179  m_command_lookup.set_handler(
180  "stop_daemon"
181  , std::bind(&t_command_parser_executor::stop_daemon, &m_parser, p::_1)
182  , "Stop the daemon."
183  );
184  m_command_lookup.set_handler(
185  "exit"
186  , std::bind(&t_command_parser_executor::stop_daemon, &m_parser, p::_1)
187  , "Stop the daemon."
188  );
189  m_command_lookup.set_handler(
190  "print_status"
191  , std::bind(&t_command_parser_executor::print_status, &m_parser, p::_1)
192  , "Print the current daemon status."
193  );
194  m_command_lookup.set_handler(
195  "limit"
196  , std::bind(&t_command_parser_executor::set_limit, &m_parser, p::_1)
197  , "limit [<kB/s>]"
198  , "Get or set the download and upload limit."
199  );
200  m_command_lookup.set_handler(
201  "limit_up"
202  , std::bind(&t_command_parser_executor::set_limit_up, &m_parser, p::_1)
203  , "limit_up [<kB/s>]"
204  , "Get or set the upload limit."
205  );
206  m_command_lookup.set_handler(
207  "limit_down"
208  , std::bind(&t_command_parser_executor::set_limit_down, &m_parser, p::_1)
209  , "limit_down [<kB/s>]"
210  , "Get or set the download limit."
211  );
212  m_command_lookup.set_handler(
213  "out_peers"
214  , std::bind(&t_command_parser_executor::out_peers, &m_parser, p::_1)
215  , "out_peers <max_number>"
216  , "Set the <max_number> of out peers."
217  );
218  m_command_lookup.set_handler(
219  "in_peers"
220  , std::bind(&t_command_parser_executor::in_peers, &m_parser, p::_1)
221  , "in_peers <max_number>"
222  , "Set the <max_number> of in peers."
223  );
224  m_command_lookup.set_handler(
225  "start_save_graph"
226  , std::bind(&t_command_parser_executor::start_save_graph, &m_parser, p::_1)
227  , "Start save data for dr electroneum"
228  );
229  m_command_lookup.set_handler(
230  "stop_save_graph"
231  , std::bind(&t_command_parser_executor::stop_save_graph, &m_parser, p::_1)
232  , "Stop save data for dr electroneum"
233  );
234  m_command_lookup.set_handler(
235  "hard_fork_info"
236  , std::bind(&t_command_parser_executor::hard_fork_info, &m_parser, p::_1)
237  , "Print the hard fork voting information."
238  );
239  m_command_lookup.set_handler(
240  "bans"
241  , std::bind(&t_command_parser_executor::show_bans, &m_parser, p::_1)
242  , "Show the currently banned IPs."
243  );
244  m_command_lookup.set_handler(
245  "ban"
246  , std::bind(&t_command_parser_executor::ban, &m_parser, p::_1)
247  , "ban <IP> [<seconds>]"
248  , "Ban a given <IP> for a given amount of <seconds>. Seconds = (-1) will result in a perm ban"
249  );
250  m_command_lookup.set_handler(
251  "unban"
252  , std::bind(&t_command_parser_executor::unban, &m_parser, p::_1)
253  , "unban <IP>"
254  , "Unban a given <IP>."
255  );
256  m_command_lookup.set_handler(
257  "flush_txpool"
258  , std::bind(&t_command_parser_executor::flush_txpool, &m_parser, p::_1)
259  , "flush_txpool [<txid>]"
260  , "Flush a transaction from the tx pool by its <txid>, or the whole tx pool."
261  );
262  m_command_lookup.set_handler(
263  "output_histogram"
264  , std::bind(&t_command_parser_executor::output_histogram, &m_parser, p::_1)
265  , "output_histogram [@<amount>] <min_count> [<max_count>]"
266  , "Print the output histogram of outputs."
267  );
268  m_command_lookup.set_handler(
269  "print_coinbase_tx_sum"
270  , std::bind(&t_command_parser_executor::print_coinbase_tx_sum, &m_parser, p::_1)
271  , "print_coinbase_tx_sum <start_height> [<block_count>]"
272  , "Print the sum of coinbase transactions."
273  );
274  m_command_lookup.set_handler(
275  "alt_chain_info"
276  , std::bind(&t_command_parser_executor::alt_chain_info, &m_parser, p::_1)
277  , "alt_chain_info [blockhash]"
278  , "Print the information about alternative chains."
279  );
280  m_command_lookup.set_handler(
281  "bc_dyn_stats"
282  , std::bind(&t_command_parser_executor::print_blockchain_dynamic_stats, &m_parser, p::_1)
283  , "bc_dyn_stats <last_block_count>"
284  , "Print the information about current blockchain dynamic state."
285  );
286  m_command_lookup.set_handler(
287  "update"
288  , std::bind(&t_command_parser_executor::update, &m_parser, p::_1)
289  , "update (check|download)"
290  , "Check if an update is available, optionally downloads it if there is. Updating is not yet implemented."
291  );
292  m_command_lookup.set_handler(
293  "relay_tx"
294  , std::bind(&t_command_parser_executor::relay_tx, &m_parser, p::_1)
295  , "relay_tx <txid>"
296  , "Relay a given transaction by its <txid>."
297  );
298  m_command_lookup.set_handler(
299  "sync_info"
300  , std::bind(&t_command_parser_executor::sync_info, &m_parser, p::_1)
301  , "Print information about the blockchain sync state."
302  );
303  m_command_lookup.set_handler(
304  "pop_blocks"
305  , std::bind(&t_command_parser_executor::pop_blocks, &m_parser, p::_1)
306  , "pop_blocks <nblocks>"
307  , "Remove blocks from end of blockchain"
308  );
309  m_command_lookup.set_handler(
310  "version"
311  , std::bind(&t_command_parser_executor::version, &m_parser, p::_1)
312  , "Print version information."
313  );
314  m_command_lookup.set_handler(
315  "prune_blockchain"
316  , std::bind(&t_command_parser_executor::prune_blockchain, &m_parser, p::_1)
317  , "Prune the blockchain."
318  );
319  m_command_lookup.set_handler(
320  "check_blockchain_pruning"
321  , std::bind(&t_command_parser_executor::check_blockchain_pruning, &m_parser, p::_1)
322  , "Check the blockchain pruning."
323  );
324  m_command_lookup.set_handler(
325  "set_validator_key"
326  , std::bind(&t_command_parser_executor::set_validator_key, &m_parser, p::_1)
327  , "Set validator private key to be used when signing mined blocks. <validator_key>"
328  );
329  m_command_lookup.set_handler(
330  "generate_ed25519_keypair"
331  , std::bind(&t_command_parser_executor::generate_ed25519_keypair, &m_parser, p::_1)
332  , "Generate ED25519-Donna keypair."
333  );
334  m_command_lookup.set_handler(
335  "sign_message"
336  , std::bind(&t_command_parser_executor::sign_message, &m_parser, p::_1)
337  , "Sign a message using ED25519-Donna private key. Usage: <private_key> <message>"
338  );
339 }
bool start_mining(const std::vector< std::string > &args)
bool stop_save_graph(const std::vector< std::string > &args)
bool show_status(const std::vector< std::string > &args)
bool print_transaction_pool_long(const std::vector< std::string > &args)
bool show_bans(const std::vector< std::string > &args)
bool flush_txpool(const std::vector< std::string > &args)
bool print_connections(const std::vector< std::string > &args)
bool hide_hash_rate(const std::vector< std::string > &args)
bool print_transaction_pool_stats(const std::vector< std::string > &args)
bool print_transaction_pool_short(const std::vector< std::string > &args)
void set_handler(const std::string &cmd, const callback &hndlr, const std::string &usage="", const std::string &description="")
bool unban(const std::vector< std::string > &args)
bool print_block(const std::vector< std::string > &args)
bool set_limit_up(const std::vector< std::string > &args)
bool print_transaction(const std::vector< std::string > &args)
bool sign_message(const std::vector< std::string > &args)
bool print_net_stats(const std::vector< std::string > &args)
bool stop_daemon(const std::vector< std::string > &args)
bool stop_mining(const std::vector< std::string > &args)
bool version(const std::vector< std::string > &args)
bool hard_fork_info(const std::vector< std::string > &args)
bool relay_tx(const std::vector< std::string > &args)
bool set_validator_key(const std::vector< std::string > &args)
bool ban(const std::vector< std::string > &args)
bool print_coinbase_tx_sum(const std::vector< std::string > &args)
bool print_status(const std::vector< std::string > &args)
bool output_histogram(const std::vector< std::string > &args)
bool set_log_level(const std::vector< std::string > &args)
bool generate_ed25519_keypair(const std::vector< std::string > &args)
bool print_peer_list_stats(const std::vector< std::string > &args)
bool set_limit_down(const std::vector< std::string > &args)
bool is_public_output_spent(const std::vector< std::string > &args)
boost::endian::big_uint32_t ip
Definition: socks.cpp:61
boost::endian::big_uint16_t port
Definition: socks.cpp:60
bool show_difficulty(const std::vector< std::string > &args)
bool update(const std::vector< std::string > &args)
bool alt_chain_info(const std::vector< std::string > &args)
bool print_blockchain_info(const std::vector< std::string > &args)
bool in_peers(const std::vector< std::string > &args)
bool show_hash_rate(const std::vector< std::string > &args)
bool pop_blocks(const std::vector< std::string > &args)
bool print_peer_list(const std::vector< std::string > &args)
bool check_blockchain_pruning(const std::vector< std::string > &args)
bool prune_blockchain(const std::vector< std::string > &args)
bool set_limit(const std::vector< std::string > &args)
bool mining_status(const std::vector< std::string > &args)
bool sync_info(const std::vector< std::string > &args)
bool start_save_graph(const std::vector< std::string > &args)
bool print_blockchain_dynamic_stats(const std::vector< std::string > &args)
bool out_peers(const std::vector< std::string > &args)
bool save_blockchain(const std::vector< std::string > &args)
bool is_key_image_spent(const std::vector< std::string > &args)
bool print_height(const std::vector< std::string > &args)

Member Function Documentation

◆ process_command_str()

bool daemonize::t_command_server::process_command_str ( const std::string &  cmd)

Definition at line 341 of file command_server.cpp.

342 {
343  return m_command_lookup.process_command_str(cmd);
344 }
bool process_command_str(const std::string &cmd)
Here is the call graph for this function:

◆ process_command_vec()

bool daemonize::t_command_server::process_command_vec ( const std::vector< std::string > &  cmd)

Definition at line 346 of file command_server.cpp.

347 {
348  bool result = m_command_lookup.process_command_vec(cmd);
349  if (!result)
350  {
351  help(std::vector<std::string>());
352  }
353  return result;
354 }
bool process_command_vec(const std::vector< std::string > &cmd)
Here is the call graph for this function:

◆ start_handling()

bool daemonize::t_command_server::start_handling ( std::function< void(void)>  exit_handler = NULL)

Definition at line 356 of file command_server.cpp.

357 {
358  if (m_is_rpc) return false;
359 
360  m_command_lookup.start_handling("", get_commands_str(), exit_handler);
361 
362  return true;
363 }
bool start_handling(std::function< std::string(void)> prompt, const std::string &usage_string="", std::function< void(void)> exit_handler=NULL)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ stop_handling()

void daemonize::t_command_server::stop_handling ( )

Definition at line 365 of file command_server.cpp.

366 {
367  if (m_is_rpc) return;
368 
369  m_command_lookup.stop_handling();
370 }
Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files: