diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2019-04-01 23:11:56 +0000 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2019-04-11 11:11:45 +0000 |
commit | d843f20044e56c7e7329e6490217231b3118d0c2 (patch) | |
tree | 588dde36c7032af47fecdaaf8a321b55c9c93300 /src | |
parent | Merge pull request #5411 (diff) | |
download | monero-d843f20044e56c7e7329e6490217231b3118d0c2.tar.xz |
simplewallet: add a welcome/disclaimer message command
I saw one when landing on www.tribler.org, and it seemed
like a good idea to have something similar, alongside some
more general "what is monero" text.
Diffstat (limited to 'src')
-rw-r--r-- | src/simplewallet/simplewallet.cpp | 33 | ||||
-rw-r--r-- | src/simplewallet/simplewallet.h | 1 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index 4692f7d59..66317adcb 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -244,6 +244,7 @@ namespace const char* USAGE_THAW("thaw <key_image>"); const char* USAGE_FROZEN("frozen <key_image>"); const char* USAGE_NET_STATS("net_stats"); + const char* USAGE_WELCOME("welcome"); const char* USAGE_VERSION("version"); const char* USAGE_HELP("help [<command>]"); @@ -2139,6 +2140,24 @@ bool simple_wallet::net_stats(const std::vector<std::string> &args) return true; } +bool simple_wallet::welcome(const std::vector<std::string> &args) +{ + message_writer() << tr("Welcome to Monero, the private cryptocurrency."); + message_writer() << ""; + message_writer() << tr("Monero, like Bitcoin, is a cryptocurrency. That is, it is digital money."); + message_writer() << tr("Unlike Bitcoin, your Monero transactions and balance stay private, and not visible to the world by default."); + message_writer() << tr("However, you have the option of making those available to select parties, if you choose to."); + message_writer() << ""; + message_writer() << tr("Monero protects your privacy on the blockchain, and while Monero strives to improve all the time,"); + message_writer() << tr("no privacy technology can be 100% perfect, Monero included."); + message_writer() << tr("Monero cannot protect you from malware, and it may not be as effective as we hope against powerful adversaries."); + message_writer() << tr("Flaws in Monero may be discovered in the future, and attacks may be developed to peek under some"); + message_writer() << tr("of the layers of privacy Monero provides. Be safe and practice defense in depth."); + message_writer() << ""; + message_writer() << tr("Welcome to Monero and financial privacy. For more information, see https://getmonero.org/"); + return true; +} + bool simple_wallet::version(const std::vector<std::string> &args) { message_writer() << "Monero '" << MONERO_RELEASE_NAME << "' (v" << MONERO_VERSION_FULL << ")"; @@ -3170,6 +3189,9 @@ simple_wallet::simple_wallet() m_cmd_binder.set_handler("net_stats", boost::bind(&simple_wallet::net_stats, this, _1), tr(USAGE_NET_STATS), + m_cmd_binder.set_handler("welcome", + boost::bind(&simple_wallet::welcome, this, _1), + tr(USAGE_WELCOME), tr("Prints simple network stats")); m_cmd_binder.set_handler("version", boost::bind(&simple_wallet::version, this, _1), @@ -3491,6 +3513,8 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) if (!handle_command_line(vm)) return false; + bool welcome = false; + if((!m_generate_new.empty()) + (!m_wallet_file.empty()) + (!m_generate_from_device.empty()) + (!m_generate_from_view_key.empty()) + (!m_generate_from_spend_key.empty()) + (!m_generate_from_keys.empty()) + (!m_generate_from_multisig_keys.empty()) + (!m_generate_from_json.empty()) > 1) { fail_msg_writer() << tr("can't specify more than one of --generate-new-wallet=\"wallet_name\", --wallet-file=\"wallet_name\", --generate-from-view-key=\"wallet_name\", --generate-from-spend-key=\"wallet_name\", --generate-from-keys=\"wallet_name\", --generate-from-multisig-keys=\"wallet_name\", --generate-from-json=\"jsonfilename\" and --generate-from-device=\"wallet_name\""); @@ -3648,6 +3672,7 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) auto r = new_wallet(vm, info.address, boost::none, viewkey); CHECK_AND_ASSERT_MES(r, false, tr("account creation failed")); password = *r; + welcome = true; } else if (!m_generate_from_spend_key.empty()) { @@ -3668,6 +3693,7 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) auto r = new_wallet(vm, m_recovery_key, true, false, ""); CHECK_AND_ASSERT_MES(r, false, tr("account creation failed")); password = *r; + welcome = true; } else if (!m_generate_from_keys.empty()) { @@ -3745,6 +3771,7 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) auto r = new_wallet(vm, info.address, spendkey, viewkey); CHECK_AND_ASSERT_MES(r, false, tr("account creation failed")); password = *r; + welcome = true; } // Asks user for all the data required to merge secret keys from multisig wallets into one master wallet, which then gets full control of the multisig wallet. The resulting wallet will be the same as any other regular wallet. @@ -3878,6 +3905,7 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) auto r = new_wallet(vm, info.address, spendkey, viewkey); CHECK_AND_ASSERT_MES(r, false, tr("account creation failed")); password = *r; + welcome = true; } else if (!m_generate_from_json.empty()) @@ -3904,6 +3932,7 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) auto r = new_wallet(vm); CHECK_AND_ASSERT_MES(r, false, tr("account creation failed")); password = *r; + welcome = true; // if no block_height is specified, assume its a new account and start it "now" if(m_wallet->get_refresh_from_block_height() == 0) { { @@ -3935,6 +3964,7 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) r = new_wallet(vm, m_recovery_key, m_restore_deterministic_wallet, m_non_deterministic, old_language); CHECK_AND_ASSERT_MES(r, false, tr("account creation failed")); password = *r; + welcome = true; } if (m_restoring && m_generate_from_json.empty() && m_generate_from_device.empty()) @@ -4058,6 +4088,9 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) check_background_mining(password); + if (welcome) + message_writer(console_color_yellow, true) << tr("If you are new to Monero, type \"welcome\" for a brief overview."); + return true; } //---------------------------------------------------------------------------------------------------- diff --git a/src/simplewallet/simplewallet.h b/src/simplewallet/simplewallet.h index 0cbb33cf9..76d446ba5 100644 --- a/src/simplewallet/simplewallet.h +++ b/src/simplewallet/simplewallet.h @@ -244,6 +244,7 @@ namespace cryptonote bool thaw(const std::vector<std::string>& args); bool frozen(const std::vector<std::string>& args); bool net_stats(const std::vector<std::string>& args); + bool welcome(const std::vector<std::string>& args); bool version(const std::vector<std::string>& args); bool cold_sign_tx(const std::vector<tools::wallet2::pending_tx>& ptx_vector, tools::wallet2::signed_tx_set &exported_txs, std::vector<cryptonote::address_parse_info> &dsts_info, std::function<bool(const tools::wallet2::signed_tx_set &)> accept_func); |