removed force register flag + improved error message on no gateways available

This commit is contained in:
Jędrzej Stuczyński
2024-03-28 08:11:57 +00:00
parent b869c30909
commit 8fa213502d
11 changed files with 70 additions and 91 deletions
Generated
+40 -40
View File
@@ -389,16 +389,6 @@ dependencies = [
"futures-core",
]
[[package]]
name = "async-file-watcher"
version = "0.1.0"
dependencies = [
"futures",
"log",
"notify",
"tokio",
]
[[package]]
name = "async-io"
version = "1.13.0"
@@ -3301,20 +3291,6 @@ dependencies = [
"itoa",
]
[[package]]
name = "http-api-client"
version = "0.1.0"
dependencies = [
"async-trait",
"reqwest",
"serde",
"serde_json",
"thiserror",
"tracing",
"url",
"wasmtimer",
]
[[package]]
name = "http-body"
version = "0.4.5"
@@ -3943,17 +3919,6 @@ version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "ledger"
version = "0.1.0"
dependencies = [
"bip32",
"k256",
"ledger-transport",
"ledger-transport-hid",
"thiserror",
]
[[package]]
name = "ledger-apdu"
version = "0.10.0"
@@ -4596,9 +4561,9 @@ version = "1.3.0-rc.0"
dependencies = [
"async-trait",
"futures",
"http-api-client",
"js-sys",
"nym-bin-common",
"nym-http-api-client",
"nym-ordered-buffer",
"nym-service-providers-common",
"nym-socks5-requests",
@@ -5073,6 +5038,16 @@ dependencies = [
"ts-rs",
]
[[package]]
name = "nym-async-file-watcher"
version = "0.1.0"
dependencies = [
"futures",
"log",
"notify",
"tokio",
]
[[package]]
name = "nym-bandwidth-controller"
version = "0.1.0"
@@ -5729,6 +5704,20 @@ dependencies = [
"serde",
]
[[package]]
name = "nym-http-api-client"
version = "0.1.0"
dependencies = [
"async-trait",
"reqwest",
"serde",
"serde_json",
"thiserror",
"tracing",
"url",
"wasmtimer",
]
[[package]]
name = "nym-id"
version = "0.1.0"
@@ -5819,6 +5808,17 @@ dependencies = [
"url",
]
[[package]]
name = "nym-ledger"
version = "0.1.0"
dependencies = [
"bip32",
"k256",
"ledger-transport",
"ledger-transport-hid",
"thiserror",
]
[[package]]
name = "nym-metrics"
version = "0.1.0"
@@ -5983,7 +5983,6 @@ version = "1.1.33"
dependencies = [
"addr",
"anyhow",
"async-file-watcher",
"async-trait",
"bs58 0.5.0",
"clap 4.4.7",
@@ -5992,6 +5991,7 @@ dependencies = [
"humantime-serde",
"ipnetwork 0.20.0",
"log",
"nym-async-file-watcher",
"nym-bin-common",
"nym-client-core",
"nym-client-websocket-requests",
@@ -6086,10 +6086,10 @@ version = "0.1.0"
dependencies = [
"async-trait",
"base64 0.21.4",
"http-api-client",
"nym-bin-common",
"nym-crypto",
"nym-exit-policy",
"nym-http-api-client",
"nym-wireguard-types",
"schemars",
"serde",
@@ -6667,7 +6667,6 @@ dependencies = [
"eyre",
"flate2",
"futures",
"http-api-client",
"itertools 0.10.5",
"log",
"nym-api-requests",
@@ -6678,6 +6677,7 @@ dependencies = [
"nym-contracts-common",
"nym-ephemera-common",
"nym-group-contract-common",
"nym-http-api-client",
"nym-mixnet-contract-common",
"nym-multisig-contract-common",
"nym-name-service-common",
@@ -6803,7 +6803,6 @@ name = "nymvisor"
version = "0.1.0"
dependencies = [
"anyhow",
"async-file-watcher",
"bytes",
"clap 4.4.7",
"dotenvy",
@@ -6813,6 +6812,7 @@ dependencies = [
"humantime 2.1.0",
"humantime-serde",
"nix 0.27.1",
"nym-async-file-watcher",
"nym-bin-common",
"nym-config",
"nym-task",
@@ -39,11 +39,6 @@ pub struct CommonClientAddGatewayArgs {
#[cfg_attr(feature = "cli", clap(long, conflicts_with = "gateway"))]
pub latency_based_selection: bool,
/// Force register gateway. WARNING: this will overwrite any existing keys for the given id,
/// potentially causing loss of access.
#[cfg_attr(feature = "cli", clap(long))]
pub force_register_gateway: bool,
/// Specify whether this new gateway should be set as the active one
#[cfg_attr(feature = "cli", clap(long, default_value_t = true))]
pub set_active: bool,
@@ -80,11 +75,6 @@ where
let key_store = OnDiskKeys::new(paths.keys.clone());
let details_store = setup_fs_gateways_storage(&paths.gateway_registrations).await?;
let user_wants_force_register = common_args.force_register_gateway;
if user_wants_force_register {
eprintln!("Instructed to force registering gateway. This might overwrite keys!");
}
// Attempt to use a user-provided gateway, if possible
let user_chosen_gateway_id = common_args.gateway_id;
log::debug!("User chosen gateway id: {user_chosen_gateway_id:?}");
@@ -101,7 +91,7 @@ where
// if user provided gateway id (and we can't overwrite data), make sure we're not trying to register
// with a known gateway
if let Some(user_chosen) = user_chosen_gateway_id {
if !common_args.force_register_gateway && registered_gateways.contains(&user_chosen) {
if registered_gateways.contains(&user_chosen) {
return Err(ClientCoreError::AlreadyRegistered {
gateway_id: user_chosen.to_base58_string(),
}
@@ -126,20 +116,18 @@ where
// since we're registering with a brand new gateway,
// make sure the list of available gateways doesn't overlap the list of known gateways
let available_gateways = if common_args.force_register_gateway {
// if we're force registering, all bets are off
available_gateways
} else {
available_gateways
.into_iter()
.filter(|g| !registered_gateways.contains(g.identity()))
.collect()
};
let available_gateways = available_gateways
.into_iter()
.filter(|g| !registered_gateways.contains(g.identity()))
.collect::<Vec<_>>();
if available_gateways.is_empty() {
return Err(ClientCoreError::NoNewGatewaysAvailable.into())
}
let gateway_setup = GatewaySetup::New {
specification: selection_spec,
available_gateways,
overwrite_data: common_args.force_register_gateway,
wg_tun_address: None,
};
@@ -169,7 +169,6 @@ where
let gateway_setup = GatewaySetup::New {
specification: selection_spec,
available_gateways,
overwrite_data: false,
wg_tun_address: None,
};
+3
View File
@@ -38,6 +38,9 @@ pub enum ClientCoreError {
#[error("no gateways on network")]
NoGatewaysOnNetwork,
#[error("there are no more new gateways on the network - it seems this client has already registered with all nodes it could have")]
NoNewGatewaysAvailable,
#[error("list of nym apis is empty")]
ListOfNymApisIsEmpty,
+2 -5
View File
@@ -50,7 +50,6 @@ where
async fn setup_new_gateway<K, D>(
key_store: &K,
details_store: &D,
overwrite_data: bool,
selection_specification: GatewaySelectionSpecification,
available_gateways: Vec<gateway::Node>,
wg_tun_ip_address: Option<IpAddr>,
@@ -94,8 +93,8 @@ where
// check if we already have details associated with this particular gateway
// and if so, see if we can overwrite it
let selected_id = selected_gateway.gateway_id().to_base58_string();
if has_gateway_details(details_store, &selected_id).await? && !overwrite_data {
return Err(ClientCoreError::ForbiddenGatewayKeyOverwrite {
if has_gateway_details(details_store, &selected_id).await? {
return Err(ClientCoreError::AlreadyRegistered {
gateway_id: selected_id,
});
}
@@ -208,14 +207,12 @@ where
GatewaySetup::New {
specification,
available_gateways,
overwrite_data,
wg_tun_address,
} => {
log::trace!("GatewaySetup::New with spec: {specification:?}");
setup_new_gateway(
key_store,
details_store,
overwrite_data,
specification,
available_gateways,
wg_tun_address,
+1 -5
View File
@@ -244,10 +244,7 @@ pub enum GatewaySetup {
// TODO: seems to be a bit inefficient to pass them by value
available_gateways: Vec<gateway::Node>,
/// Specifies whether old data should be overwritten whilst setting up new gateway client.
overwrite_data: bool,
/// Implicitly specify whether the chosen gateway must use wireguard mode by setting the tun address.
///
/// Currently this is imperfect solution as I'd imagine this address could vary from gateway to gateway
@@ -287,7 +284,6 @@ impl GatewaySetup {
additional_data: None,
},
available_gateways: vec![],
overwrite_data: false,
wg_tun_address: None,
}
}
-1
View File
@@ -106,7 +106,6 @@ pub async fn setup_gateway_wasm(
GatewaySetup::New {
specification: selection_spec,
available_gateways: gateways.to_vec(),
overwrite_data: false,
wg_tun_address: None,
}
};
+15 -15
View File
@@ -2844,20 +2844,6 @@ dependencies = [
"itoa 1.0.9",
]
[[package]]
name = "http-api-client"
version = "0.1.0"
dependencies = [
"async-trait",
"reqwest",
"serde",
"serde_json",
"thiserror",
"tracing",
"url",
"wasmtimer",
]
[[package]]
name = "http-body"
version = "0.4.5"
@@ -4211,6 +4197,20 @@ dependencies = [
"serde",
]
[[package]]
name = "nym-http-api-client"
version = "0.1.0"
dependencies = [
"async-trait",
"reqwest",
"serde",
"serde_json",
"thiserror",
"tracing",
"url",
"wasmtimer",
]
[[package]]
name = "nym-id"
version = "0.1.0"
@@ -4636,7 +4636,6 @@ dependencies = [
"eyre",
"flate2",
"futures",
"http-api-client",
"itertools",
"log",
"nym-api-requests",
@@ -4647,6 +4646,7 @@ dependencies = [
"nym-contracts-common",
"nym-ephemera-common",
"nym-group-contract-common",
"nym-http-api-client",
"nym-mixnet-contract-common",
"nym-multisig-contract-common",
"nym-name-service-common",
@@ -220,7 +220,6 @@ pub async fn init_socks5_config(provider_address: String, chosen_gateway_id: Str
GatewaySetup::New {
specification: selection_spec,
available_gateways,
overwrite_data: true,
wg_tun_address: None,
}
} else {
-1
View File
@@ -276,7 +276,6 @@ where
must_use_tls: false,
},
available_gateways: current_gateways(&mut rng, &nym_apis).await?,
overwrite_data: false,
wg_tun_address: None,
});
-1
View File
@@ -434,7 +434,6 @@ where
Ok(GatewaySetup::New {
specification: selection_spec,
available_gateways,
overwrite_data: !self.config.key_mode.is_keep(),
wg_tun_address: self.wireguard_tun_address(),
})
}