diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 2038e259d..08c629786 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -1300,6 +1300,11 @@ bool wallet2::has_stagenet_option(const boost::program_options::variables_map& v return command_line::get_arg(vm, options().stagenet); } +bool wallet2::has_password_option(const boost::program_options::variables_map& vm) +{ + return command_line::has_arg(vm, options().password); +} + bool wallet2::has_proxy_option() const { return !m_proxy.empty(); diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index e06b43ec5..d951addee 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -280,6 +280,7 @@ private: static bool has_testnet_option(const boost::program_options::variables_map& vm); static bool has_stagenet_option(const boost::program_options::variables_map& vm); + static bool has_password_option(const boost::program_options::variables_map& vm); static std::string device_name_option(const boost::program_options::variables_map& vm); static std::string device_derivation_path_option(const boost::program_options::variables_map &vm); static void init_options(boost::program_options::options_description& desc_params); diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index 06cf52432..fb7d611a6 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -4919,6 +4919,12 @@ public: return false; } + if(!wallet_dir.empty() && tools::wallet2::has_password_option(vm)) + { + LOG_ERROR(tools::wallet_rpc_server::tr("--password is not allowed in combination with --wallet-dir")); + return false; + } + if (!wallet_dir.empty()) { wal = NULL; diff --git a/utils/fish/monero-wallet-rpc.fish b/utils/fish/monero-wallet-rpc.fish index 6dc10e15b..e323c845b 100644 --- a/utils/fish/monero-wallet-rpc.fish +++ b/utils/fish/monero-wallet-rpc.fish @@ -7,8 +7,8 @@ complete -c monero-wallet-rpc -l daemon-host -r -d "Use daemon instance at host complete -c monero-wallet-rpc -l proxy -r -d "[:] socks proxy to use for daemon connections" complete -c monero-wallet-rpc -l trusted-daemon -d "Enable commands which rely on a trusted daemon" complete -c monero-wallet-rpc -l untrusted-daemon -d "Disable commands which rely on a trusted daemon" -complete -c monero-wallet-rpc -l password -r -d "Wallet password (escape/quote as needed)" -complete -c monero-wallet-rpc -l password-file -r -F -d "Wallet password file" +complete -c monero-wallet-rpc -l password -r -n "not __fish_seen_argument -l wallet-dir" -d "Wallet password (escape/quote as needed)" +complete -c monero-wallet-rpc -l password-file -r -F -n "not __fish_seen_argument -l wallet-dir" -d "Wallet password file" complete -c monero-wallet-rpc -l daemon-port -r -d "Use daemon instance at port instead of 18081. Default: 0" complete -c monero-wallet-rpc -l daemon-login -r -d "Specify username[:password] for daemon RPC client" complete -c monero-wallet-rpc -l daemon-ssl -x -a "enabled disabled autodetect" -d "Enable SSL on daemon RPC connections. Default: autodetect" @@ -52,7 +52,7 @@ complete -c monero-wallet-rpc -l rpc-ssl-allow-chained -d "Allow user (via --rpc complete -c monero-wallet-rpc -l disable-rpc-ban -d "Do not ban hosts on RPC errors" complete -c monero-wallet-rpc -l wallet-file -r -F -d "Use wallet " complete -c monero-wallet-rpc -l generate-from-json -r -k -a "(__fish_complete_suffix .json)" -d "Generate wallet from JSON format file" -complete -c monero-wallet-rpc -l wallet-dir -r -F -d "Directory for newly created wallets" +complete -c monero-wallet-rpc -l wallet-dir -r -F -n "not __fish_seen_argument -l password -l password-file" -d "Directory for newly created wallets" complete -c monero-wallet-rpc -l prompt-for-password -d "Prompts for password when not provided" complete -c monero-wallet-rpc -l rpc-client-secret-key -r -d "Set RPC client secret key for RPC payments" complete -c monero-wallet-rpc -l detach -d "Run as daemon"