From b1ffe86a55492d08f050ebdd8317272da5c78dd7 Mon Sep 17 00:00:00 2001 From: Yeastplume Date: Sat, 8 Mar 2025 13:28:27 +0000 Subject: [PATCH] Revert "Fix for many wallet config errors (#731)" This reverts commit 7ceade4449aaa23ee8fccc0effa6949f82529d54. --- Cargo.lock | 2 +- config/src/config.rs | 105 ++++++++------------------------- controller/src/command.rs | 11 +--- impls/src/lifecycle/default.rs | 22 +++---- impls/src/node_clients/http.rs | 3 +- src/bin/grin-wallet.rs | 5 +- tests/common/mod.rs | 2 +- 7 files changed, 42 insertions(+), 108 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9b2c951..bee516a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 4 +version = 3 [[package]] name = "addr2line" diff --git a/config/src/config.rs b/config/src/config.rs index 9666ccb..d112980 100644 --- a/config/src/config.rs +++ b/config/src/config.rs @@ -14,6 +14,7 @@ //! Configuration file management +use dirs; use rand::distributions::{Alphanumeric, Distribution}; use rand::thread_rng; use std::env; @@ -34,8 +35,7 @@ use crate::util::logger::LoggingConfig; /// Wallet configuration file name pub const WALLET_CONFIG_FILE_NAME: &str = "grin-wallet.toml"; const WALLET_LOG_FILE_NAME: &str = "grin-wallet.log"; -/// .grin folder, usually in home/.grin -pub const GRIN_HOME: &str = ".grin"; +const GRIN_HOME: &str = ".grin"; /// Wallet data directory pub const GRIN_WALLET_DIR: &str = "wallet_data"; /// Node API secret @@ -43,8 +43,7 @@ pub const API_SECRET_FILE_NAME: &str = ".foreign_api_secret"; /// Owner API secret pub const OWNER_API_SECRET_FILE_NAME: &str = ".owner_api_secret"; -/// Function to get wallet dir and create dirs if not existing -pub fn get_wallet_path( +fn get_grin_path( chain_type: &global::ChainTypes, create_path: bool, ) -> Result { @@ -69,49 +68,6 @@ pub fn get_wallet_path( } } -/// Smart function to find the most likely .api_secret location for the node -pub fn get_node_path( - data_path: Option, - chain_type: &global::ChainTypes, -) -> Result { - let node_path = match data_path { - // 1) A If top dir provided and api_secret exist, return top dir - Some(path) => { - let mut node_path = path; - node_path.push(GRIN_HOME); - node_path.push(chain_type.shortname()); - node_path.push(API_SECRET_FILE_NAME); - if node_path.exists() { - node_path.pop(); - Ok(node_path) - - // 1) B If top dir exists, but no config there, return home dir - } else { - let mut node_path = match dirs::home_dir() { - Some(p) => p, - None => PathBuf::new(), - }; - node_path.push(GRIN_HOME); - node_path.push(chain_type.shortname()); - Ok(node_path) - } - } - - // 2) If there is no top_dir provided, always return home dir - None => { - let mut node_path = match dirs::home_dir() { - Some(p) => p, - None => PathBuf::new(), - }; - node_path.push(GRIN_HOME); - node_path.push(chain_type.shortname()); - Ok(node_path) - } - }; - node_path -} - -/// Checks if config in current working dir fn check_config_current_dir(path: &str) -> Option { let p = env::current_dir(); let mut c = match p { @@ -166,7 +122,7 @@ fn check_api_secret_file( ) -> Result<(), ConfigError> { let grin_path = match data_path { Some(p) => p, - None => get_node_path(data_path, chain_type)?, + None => get_grin_path(chain_type, false)?, }; let mut api_secret_path = grin_path; api_secret_path.push(file_name); @@ -178,7 +134,6 @@ fn check_api_secret_file( } /// Handles setup and detection of paths for wallet -/// Use config file in a) current dir as template, b) in top path, or c) .grin home pub fn initial_setup_wallet( chain_type: &global::ChainTypes, data_path: Option, @@ -189,45 +144,33 @@ pub fn initial_setup_wallet( fs::create_dir_all(p)?; } } - - // Get wallet data_dir path, create it if it does not exist - let wallet_path = match data_path { - Some(p) => { - let mut abs_wallet_path = std::env::current_dir()?; - abs_wallet_path.push(p); - abs_wallet_path - } - None => get_wallet_path(chain_type, create_path)?, - }; - - // Get path to the node dir(s), first try top dir, if no node api_secret return home./grin - let node_path = get_node_path(Some(wallet_path.clone()), chain_type)?; - - // Get path to the newwly to be created config file - let mut config_path = wallet_path.clone(); - config_path.push(WALLET_CONFIG_FILE_NAME); - - // Check if config exists in working dir, if so, use it as template for newly created config + // Use config file if current directory if it exists, .grin home otherwise let (path, config) = if let Some(p) = check_config_current_dir(WALLET_CONFIG_FILE_NAME) { let mut path = p.clone(); path.pop(); - let mut config = GlobalWalletConfig::new(p.to_str().unwrap())?; - // Use template config, update data_dir, network and api secrets - config.config_file_path = Some(config_path); - config.update_paths(&wallet_path, &node_path); - (path, config) + (path, GlobalWalletConfig::new(p.to_str().unwrap())?) } else { - // Return defaults config updated with node and wallet dir and chain dir + // Check if grin dir exists + let grin_path = match data_path { + Some(p) => p, + None => get_grin_path(chain_type, create_path)?, + }; + + // Get path to default config file + let mut config_path = grin_path.clone(); + config_path.push(WALLET_CONFIG_FILE_NAME); + + // Return defaults if file doesn't exist match config_path.clone().exists() { false => { let mut default_config = GlobalWalletConfig::for_chain(chain_type); default_config.config_file_path = Some(config_path); - // Update paths relative to current dir - default_config.update_paths(&wallet_path, &node_path); - (wallet_path, default_config) + // update paths relative to current dir + default_config.update_paths(&grin_path); + (grin_path, default_config) } true => { - let mut path = wallet_path.clone(); + let mut path = config_path.clone(); path.pop(); ( path, @@ -236,7 +179,7 @@ pub fn initial_setup_wallet( } } }; - // Check API secrets, if ok, return config + check_api_secret_file(chain_type, Some(path.clone()), OWNER_API_SECRET_FILE_NAME)?; check_api_secret_file(chain_type, Some(path), API_SECRET_FILE_NAME)?; Ok(config) @@ -325,7 +268,7 @@ impl GlobalWalletConfig { } /// Update paths - pub fn update_paths(&mut self, wallet_home: &PathBuf, node_home: &PathBuf) { + pub fn update_paths(&mut self, wallet_home: &PathBuf) { let mut wallet_path = wallet_home.clone(); wallet_path.push(GRIN_WALLET_DIR); self.members.as_mut().unwrap().wallet.data_file_dir = @@ -334,7 +277,7 @@ impl GlobalWalletConfig { secret_path.push(OWNER_API_SECRET_FILE_NAME); self.members.as_mut().unwrap().wallet.api_secret_path = Some(secret_path.to_str().unwrap().to_owned()); - let mut node_secret_path = node_home.clone(); + let mut node_secret_path = wallet_home.clone(); node_secret_path.push(API_SECRET_FILE_NAME); self.members.as_mut().unwrap().wallet.node_api_secret_path = Some(node_secret_path.to_str().unwrap().to_owned()); diff --git a/controller/src/command.rs b/controller/src/command.rs index 1d1c082..938eb82 100644 --- a/controller/src/command.rs +++ b/controller/src/command.rs @@ -70,7 +70,6 @@ pub struct InitArgs { pub restore: bool, } -/// Write config (default if None), initiate the wallet pub fn init( owner_api: &mut Owner, _g_args: &GlobalArgs, @@ -82,16 +81,12 @@ where C: NodeClient + 'static, K: keychain::Keychain + 'static, { + // Assume global chain type has already been initialized. let chain_type = global::get_chain_type(); + let mut w_lock = owner_api.wallet_inst.lock(); let p = w_lock.lc_provider()?; - p.create_config( - &chain_type, - WALLET_CONFIG_FILE_NAME, - Some(args.config), - None, - None, - )?; + p.create_config(&chain_type, WALLET_CONFIG_FILE_NAME, None, None, None)?; p.create_wallet( None, args.recovery_phrase, diff --git a/impls/src/lifecycle/default.rs b/impls/src/lifecycle/default.rs index 45435da..d0cc606 100644 --- a/impls/src/lifecycle/default.rs +++ b/impls/src/lifecycle/default.rs @@ -87,12 +87,11 @@ where None => None, }, }; - // Check if config was provided, if not load default and set update to "true" - let (wallet, update) = match wallet_config { - Some(w) => (w, false), + let wallet = match wallet_config { + Some(w) => w, None => match default_config.members.as_ref() { - Some(m) => (m.clone().wallet, true), - None => (WalletConfig::default(), true), + Some(m) => m.clone().wallet, + None => WalletConfig::default(), }, }; let tor = match tor_config { @@ -137,16 +136,11 @@ where if config_file_name.exists() { return Ok(()); } - // default settings are updated if no config was provided, no support for top_dir/here - let mut abs_path_node = std::env::current_dir()?; - abs_path_node.push(self.data_dir.clone()); - let mut absolute_path_wallet = std::env::current_dir()?; - absolute_path_wallet.push(self.data_dir.clone()); - // if no config provided, update defaults - if update == true { - default_config.update_paths(&abs_path_node, &absolute_path_wallet); - }; + let mut abs_path = std::env::current_dir()?; + abs_path.push(self.data_dir.clone()); + + default_config.update_paths(&abs_path); let res = default_config.write_to_file(config_file_name.to_str().unwrap(), false, None, None); if let Err(e) = res { diff --git a/impls/src/node_clients/http.rs b/impls/src/node_clients/http.rs index 6251d38..83e0488 100644 --- a/impls/src/node_clients/http.rs +++ b/impls/src/node_clients/http.rs @@ -128,8 +128,7 @@ impl NodeClient for HTTPNodeClient { verified: Some(false), }); } else { - error!("Unable to contact Node to get version info: {}, check your node is running", e); - warn!("Warning: a) Node is offline, or b) 'node_api_secret_path' in 'grin-wallet.toml' is set incorrectly"); + error!("Unable to contact Node to get version info: {}", e); return None; } } diff --git a/src/bin/grin-wallet.rs b/src/bin/grin-wallet.rs index 69e8923..3a192fd 100644 --- a/src/bin/grin-wallet.rs +++ b/src/bin/grin-wallet.rs @@ -87,7 +87,7 @@ fn real_main() -> i32 { let res = args.value_of("top_level_dir"); match res { Some(d) => { - current_dir = Some(PathBuf::from(d.replace("/", "\\"))); + current_dir = Some(PathBuf::from(d)); } None => { warn!("Argument --top_level_dir needs a value. Defaulting to current directory") @@ -138,6 +138,7 @@ fn real_main() -> i32 { "Using wallet configuration file at {}", config.config_file_path.as_ref().unwrap().to_str().unwrap() ); + log_build_info(); global::init_global_chain_type( @@ -151,9 +152,11 @@ fn real_main() -> i32 { .unwrap() .clone(), ); + global::init_global_accept_fee_base(config.members.as_ref().unwrap().wallet.accept_fee_base()); let wallet_config = config.clone().members.unwrap().wallet; let node_client = HTTPNodeClient::new(&wallet_config.check_node_api_http_addr, None).unwrap(); + cmd::wallet_command(&args, config, node_client) } diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 569fd33..de71fc9 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -165,7 +165,7 @@ pub fn config_command_wallet( .to_owned(), ))?; } - default_config.update_paths(¤t_dir, ¤t_dir); + default_config.update_paths(¤t_dir); default_config .write_to_file(config_file_name.to_str().unwrap(), false, None, None) .unwrap_or_else(|e| {