From 31b7921c6808381d5d5eb60292c18fb60e1d5984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Tue, 6 Jun 2023 16:38:34 +0100 Subject: [PATCH 01/18] bugfix #3434 --- clients/native/src/client/config/mod.rs | 2 +- clients/webassembly/src/client/config.rs | 4 ++-- common/client-core/src/config/mod.rs | 8 ++++---- common/socks5-client-core/src/config/mod.rs | 2 +- service-providers/network-requester/src/config/mod.rs | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/clients/native/src/client/config/mod.rs b/clients/native/src/client/config/mod.rs index 8072243c05..dd819471d8 100644 --- a/clients/native/src/client/config/mod.rs +++ b/clients/native/src/client/config/mod.rs @@ -75,7 +75,7 @@ impl NymConfigTemplate for Config { impl Config { pub fn new>(id: S) -> Self { Config { - base: BaseClientConfig::new(id.as_ref()), + base: BaseClientConfig::new(id.as_ref(), env!("CARGO_PKG_VERSION")), storage_paths: ClientPaths::new_default(default_data_directory(id.as_ref())), logging: Default::default(), socket: Default::default(), diff --git a/clients/webassembly/src/client/config.rs b/clients/webassembly/src/client/config.rs index 86d34bd52b..e531f072d1 100644 --- a/clients/webassembly/src/client/config.rs +++ b/clients/webassembly/src/client/config.rs @@ -29,7 +29,7 @@ impl Config { #[wasm_bindgen(constructor)] pub fn new(id: String, validator_server: String, debug: Option) -> Self { Config { - base: BaseClientConfig::new(id) + base: BaseClientConfig::new(id, env!("CARGO_PKG_VERSION").to_string()) .with_custom_nyxd(vec![validator_server .parse() .expect("provided url was malformed")]) @@ -39,7 +39,7 @@ impl Config { pub(crate) fn new_tester_config>(id: S) -> Self { Config { - base: BaseClientConfig::new(id) + base: BaseClientConfig::new(id.into(), env!("CARGO_PKG_VERSION").to_string()) .with_disabled_credentials(true) .with_disabled_cover_traffic(true) .with_disabled_topology_refresh(true), diff --git a/common/client-core/src/config/mod.rs b/common/client-core/src/config/mod.rs index 36c7aca4eb..d9ac4fd274 100644 --- a/common/client-core/src/config/mod.rs +++ b/common/client-core/src/config/mod.rs @@ -66,9 +66,9 @@ pub struct Config { } impl Config { - pub fn new>(id: S) -> Self { + pub fn new>(id: S, version: S) -> Self { Config { - client: Client::new_default(id), + client: Client::new_default(id, version), debug: Default::default(), } } @@ -243,7 +243,7 @@ pub struct Client { } impl Client { - pub fn new_default>(id: S) -> Self { + pub fn new_default>(id: S, version: S) -> Self { let network = NymNetworkDetails::new_mainnet(); let nyxd_urls = network .endpoints @@ -257,7 +257,7 @@ impl Client { .collect::>(); Client { - version: env!("CARGO_PKG_VERSION").to_string(), + version: version.into(), id: id.into(), disabled_credentials_mode: true, nyxd_urls, diff --git a/common/socks5-client-core/src/config/mod.rs b/common/socks5-client-core/src/config/mod.rs index 4dd377a76b..51d0539439 100644 --- a/common/socks5-client-core/src/config/mod.rs +++ b/common/socks5-client-core/src/config/mod.rs @@ -29,7 +29,7 @@ pub struct Config { impl Config { pub fn new>(id: S, provider_mix_address: S) -> Self { Config { - base: BaseClientConfig::new(id), + base: BaseClientConfig::new(id.into(), env!("CARGO_PKG_VERSION").to_string()), socks5: Socks5::new(provider_mix_address), } } diff --git a/service-providers/network-requester/src/config/mod.rs b/service-providers/network-requester/src/config/mod.rs index dc3c8eb23b..ee7b4ce60e 100644 --- a/service-providers/network-requester/src/config/mod.rs +++ b/service-providers/network-requester/src/config/mod.rs @@ -82,7 +82,7 @@ impl NymConfigTemplate for Config { impl Config { pub fn new>(id: S) -> Self { Config { - base: BaseClientConfig::new(id.as_ref()), + base: BaseClientConfig::new(id.as_ref(), env!("CARGO_PKG_VERSION")), network_requester: Default::default(), storage_paths: NetworkRequesterPaths::new_default(default_data_directory(id.as_ref())), network_requester_debug: Default::default(), From 3fcc16090a2316f445f7d94d4203e15014a0baae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Wed, 14 Jun 2023 13:15:40 +0200 Subject: [PATCH 02/18] Update nym-outfox Cargo.toml in prep for publish to crates.io --- nym-outfox/Cargo.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nym-outfox/Cargo.toml b/nym-outfox/Cargo.toml index 8fcadb2f03..98c7786c86 100644 --- a/nym-outfox/Cargo.toml +++ b/nym-outfox/Cargo.toml @@ -1,7 +1,11 @@ [package] name = "nym-outfox" version = "0.1.0" -edition = "2018" +description = "Outfox package format" +edition = { workspace = true } +authors = { workspace = true } +license = { workspace = true } +repository = { workspace = true } # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html From c9dcde0ee0cc11ad0dc90f051a45abc8f08cb262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Wed, 14 Jun 2023 13:26:09 +0200 Subject: [PATCH 03/18] getrandom on workspace level --- Cargo.lock | 26 +++++++++++++------------- Cargo.toml | 3 ++- nym-connect/desktop/Cargo.lock | 28 ++++++++++++++-------------- nym-outfox/Cargo.toml | 3 +-- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0863011bb3..8a8888cc15 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -68,7 +68,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -920,7 +920,7 @@ dependencies = [ "cosmos-sdk-proto", "ecdsa", "eyre", - "getrandom 0.2.9", + "getrandom 0.2.10", "k256", "prost 0.10.4", "prost-types 0.10.1", @@ -2025,9 +2025,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -3494,7 +3494,7 @@ dependencies = [ "digest 0.9.0", "doc-comment", "ff 0.11.1", - "getrandom 0.2.9", + "getrandom 0.2.10", "group 0.11.0", "itertools", "nym-dkg", @@ -3721,7 +3721,7 @@ name = "nym-gateway-client" version = "0.1.0" dependencies = [ "futures", - "getrandom 0.2.9", + "getrandom 0.2.10", "log", "nym-bandwidth-controller", "nym-coconut-interface", @@ -4038,7 +4038,7 @@ dependencies = [ "criterion", "curve25519-dalek", "fastrand", - "getrandom 0.2.9", + "getrandom 0.2.10", "log", "rand 0.7.3", "rayon", @@ -4390,7 +4390,7 @@ dependencies = [ "aes-gcm", "argon2", "generic-array 0.14.7", - "getrandom 0.2.9", + "getrandom 0.2.10", "rand 0.8.5", "serde", "serde_json", @@ -5285,7 +5285,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -5442,7 +5442,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "redox_syscall 0.2.16", "thiserror", ] @@ -6712,7 +6712,7 @@ dependencies = [ "bytes", "flex-error", "futures", - "getrandom 0.2.9", + "getrandom 0.2.10", "http", "hyper", "hyper-proxy", @@ -7412,7 +7412,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "wasm-bindgen", ] @@ -7574,7 +7574,7 @@ name = "wasm-utils" version = "0.1.0" dependencies = [ "futures", - "getrandom 0.2.9", + "getrandom 0.2.10", "indexed_db_futures", "js-sys", "nym-store-cipher", diff --git a/Cargo.toml b/Cargo.toml index 15bdce9f4f..6fae20403f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -112,8 +112,8 @@ edition = "2021" license = "Apache-2.0" [workspace.dependencies] -async-trait = "0.1.64" anyhow = "1.0.71" +async-trait = "0.1.64" bip39 = { version = "2.0.0", features = ["zeroize"] } cfg-if = "1.0.0" cosmwasm-derive = "=1.0.0" @@ -129,6 +129,7 @@ cw3-fixed-multisig = { version = "=0.13.4" } cw4 = { version = "=0.13.4" } dotenvy = "0.15.6" generic-array = "0.14.7" +getrandom = "0.2.10" lazy_static = "1.4.0" log = "0.4" once_cell = "1.7.2" diff --git a/nym-connect/desktop/Cargo.lock b/nym-connect/desktop/Cargo.lock index 4471a1425e..83ecb9f646 100644 --- a/nym-connect/desktop/Cargo.lock +++ b/nym-connect/desktop/Cargo.lock @@ -54,7 +54,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -783,7 +783,7 @@ dependencies = [ "cosmos-sdk-proto", "ecdsa", "eyre", - "getrandom 0.2.8", + "getrandom 0.2.10", "k256", "prost", "prost-types", @@ -1873,9 +1873,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -2752,9 +2752,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.140" +version = "0.2.146" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" [[package]] name = "libdbus-sys" @@ -3263,7 +3263,7 @@ dependencies = [ "bs58", "digest 0.9.0", "ff 0.11.1", - "getrandom 0.2.8", + "getrandom 0.2.10", "group 0.11.0", "itertools", "nym-dkg", @@ -3449,7 +3449,7 @@ name = "nym-gateway-client" version = "0.1.0" dependencies = [ "futures", - "getrandom 0.2.8", + "getrandom 0.2.10", "log", "nym-bandwidth-controller", "nym-coconut-interface", @@ -3585,7 +3585,7 @@ dependencies = [ "chacha20", "chacha20poly1305", "curve25519-dalek", - "getrandom 0.2.8", + "getrandom 0.2.10", "log", "rand 0.7.3", "rayon", @@ -4640,7 +4640,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", ] [[package]] @@ -4714,7 +4714,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", "redox_syscall", "thiserror", ] @@ -6164,7 +6164,7 @@ dependencies = [ "bytes", "flex-error", "futures", - "getrandom 0.2.8", + "getrandom 0.2.10", "http", "hyper", "hyper-proxy", @@ -6669,7 +6669,7 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", ] [[package]] @@ -6857,7 +6857,7 @@ name = "wasm-utils" version = "0.1.0" dependencies = [ "futures", - "getrandom 0.2.8", + "getrandom 0.2.10", "js-sys", "tungstenite", "wasm-bindgen", diff --git a/nym-outfox/Cargo.toml b/nym-outfox/Cargo.toml index 98c7786c86..abf7104fc2 100644 --- a/nym-outfox/Cargo.toml +++ b/nym-outfox/Cargo.toml @@ -16,8 +16,7 @@ zeroize = "1.5" chacha20 = "0.9.0" curve25519-dalek = "3.2" chacha20poly1305 = "0.10.1" -# Need this star over here to pull in js into getrandom -getrandom = { version = "*", features = ["js"] } +getrandom = { workspace = true, features = ["js"] } thiserror = "1" sphinx-packet = "0.1.0" rand = "0.7.3" From b31d3c003fa2eda20df11799c379c1f8d0d00723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Wed, 14 Jun 2023 15:04:37 +0200 Subject: [PATCH 04/18] Cargo.lock --- clients/webassembly/Cargo.lock | 26 +++++++++++++------------- contracts/Cargo.lock | 14 +++++++------- nym-wallet/Cargo.lock | 26 +++++++++++++------------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/clients/webassembly/Cargo.lock b/clients/webassembly/Cargo.lock index 92cab52991..c7792f6697 100644 --- a/clients/webassembly/Cargo.lock +++ b/clients/webassembly/Cargo.lock @@ -62,7 +62,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -622,7 +622,7 @@ dependencies = [ "cosmos-sdk-proto", "ecdsa", "eyre", - "getrandom 0.2.9", + "getrandom 0.2.10", "k256", "prost", "prost-types", @@ -1442,9 +1442,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -2345,7 +2345,7 @@ dependencies = [ "bs58", "digest 0.9.0", "ff 0.11.1", - "getrandom 0.2.9", + "getrandom 0.2.10", "group 0.11.0", "itertools", "nym-dkg", @@ -2489,7 +2489,7 @@ name = "nym-gateway-client" version = "0.1.0" dependencies = [ "futures", - "getrandom 0.2.9", + "getrandom 0.2.10", "log", "nym-bandwidth-controller", "nym-coconut-interface", @@ -2636,7 +2636,7 @@ dependencies = [ "chacha20", "chacha20poly1305", "curve25519-dalek", - "getrandom 0.2.9", + "getrandom 0.2.10", "log", "rand 0.7.3", "rayon", @@ -2816,7 +2816,7 @@ dependencies = [ "aes-gcm", "argon2", "generic-array 0.14.7", - "getrandom 0.2.9", + "getrandom 0.2.10", "rand 0.8.5", "serde", "serde_json", @@ -3402,7 +3402,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", ] [[package]] @@ -3470,7 +3470,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "redox_syscall 0.2.16", "thiserror", ] @@ -4388,7 +4388,7 @@ dependencies = [ "bytes", "flex-error", "futures", - "getrandom 0.2.9", + "getrandom 0.2.10", "http", "hyper", "hyper-proxy", @@ -4788,7 +4788,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" dependencies = [ - "getrandom 0.2.9", + "getrandom 0.2.10", "wasm-bindgen", ] @@ -4964,7 +4964,7 @@ name = "wasm-utils" version = "0.1.0" dependencies = [ "futures", - "getrandom 0.2.9", + "getrandom 0.2.10", "indexed_db_futures", "js-sys", "nym-store-cipher", diff --git a/contracts/Cargo.lock b/contracts/Cargo.lock index 12180e3cb3..fc4605b2e0 100644 --- a/contracts/Cargo.lock +++ b/contracts/Cargo.lock @@ -31,7 +31,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -936,9 +936,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -1148,9 +1148,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.142" +version = "0.2.146" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" [[package]] name = "libgit2-sys" @@ -1444,7 +1444,7 @@ dependencies = [ "chacha20", "chacha20poly1305", "curve25519-dalek", - "getrandom 0.2.8", + "getrandom 0.2.10", "log", "rand 0.7.3", "rayon", @@ -1750,7 +1750,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", ] [[package]] diff --git a/nym-wallet/Cargo.lock b/nym-wallet/Cargo.lock index a6066e568a..218ce62300 100644 --- a/nym-wallet/Cargo.lock +++ b/nym-wallet/Cargo.lock @@ -68,7 +68,7 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", "once_cell", "version_check", ] @@ -764,7 +764,7 @@ dependencies = [ "cosmos-sdk-proto", "ecdsa", "eyre", - "getrandom 0.2.8", + "getrandom 0.2.10", "k256", "prost", "prost-types", @@ -1763,9 +1763,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -2543,9 +2543,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.139" +version = "0.2.146" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" [[package]] name = "libgit2-sys" @@ -2936,7 +2936,7 @@ dependencies = [ "bs58", "digest 0.9.0", "ff", - "getrandom 0.2.8", + "getrandom 0.2.10", "group", "itertools", "nym-dkg", @@ -3111,7 +3111,7 @@ dependencies = [ "chacha20", "chacha20poly1305", "curve25519-dalek", - "getrandom 0.2.8", + "getrandom 0.2.10", "log", "rand 0.7.3", "rayon", @@ -3156,7 +3156,7 @@ dependencies = [ "aes-gcm", "argon2", "generic-array 0.14.7", - "getrandom 0.2.8", + "getrandom 0.2.10", "rand 0.8.5", "serde", "serde_json", @@ -4051,7 +4051,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", ] [[package]] @@ -4128,7 +4128,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", "redox_syscall", "thiserror", ] @@ -5292,7 +5292,7 @@ dependencies = [ "bytes", "flex-error", "futures", - "getrandom 0.2.8", + "getrandom 0.2.10", "http", "hyper", "hyper-proxy", @@ -5750,7 +5750,7 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79" dependencies = [ - "getrandom 0.2.8", + "getrandom 0.2.10", ] [[package]] From a76a51e823fe855aa8580db525131164ff3476d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Wed, 14 Jun 2023 16:44:01 +0100 Subject: [PATCH 05/18] fixed config version of binaries depending on socks5 core configs --- clients/socks5/src/config/mod.rs | 6 +++++- common/socks5-client-core/src/config/mod.rs | 4 ++-- nym-connect/desktop/src-tauri/src/config/mod.rs | 6 +++++- sdk/lib/socks5-listener/src/config/mod.rs | 6 +++++- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/clients/socks5/src/config/mod.rs b/clients/socks5/src/config/mod.rs index 1ca4c2b0ac..f4f74942cf 100644 --- a/clients/socks5/src/config/mod.rs +++ b/clients/socks5/src/config/mod.rs @@ -70,7 +70,11 @@ impl NymConfigTemplate for Config { impl Config { pub fn new>(id: S, provider_mix_address: S) -> Self { Config { - core: CoreConfig::new(id.as_ref(), provider_mix_address.as_ref()), + core: CoreConfig::new( + id.as_ref(), + env!("CARGO_PKG_VERSION"), + provider_mix_address.as_ref(), + ), storage_paths: SocksClientPaths::new_default(default_data_directory(id.as_ref())), logging: Default::default(), } diff --git a/common/socks5-client-core/src/config/mod.rs b/common/socks5-client-core/src/config/mod.rs index 51d0539439..6a34a06d22 100644 --- a/common/socks5-client-core/src/config/mod.rs +++ b/common/socks5-client-core/src/config/mod.rs @@ -27,9 +27,9 @@ pub struct Config { } impl Config { - pub fn new>(id: S, provider_mix_address: S) -> Self { + pub fn new>(id: S, version: S, provider_mix_address: S) -> Self { Config { - base: BaseClientConfig::new(id.into(), env!("CARGO_PKG_VERSION").to_string()), + base: BaseClientConfig::new(id, version), socks5: Socks5::new(provider_mix_address), } } diff --git a/nym-connect/desktop/src-tauri/src/config/mod.rs b/nym-connect/desktop/src-tauri/src/config/mod.rs index 79dc15e5af..a2c356f4b5 100644 --- a/nym-connect/desktop/src-tauri/src/config/mod.rs +++ b/nym-connect/desktop/src-tauri/src/config/mod.rs @@ -73,7 +73,11 @@ pub fn socks5_config_id_appended_with(gateway_id: &str) -> String { impl Config { pub fn new>(id: S, provider_mix_address: S) -> Self { Config { - core: Socks5CoreConfig::new(id.as_ref(), provider_mix_address.as_ref()), + core: Socks5CoreConfig::new( + id.as_ref(), + env!("CARGO_PKG_VERSION"), + provider_mix_address.as_ref(), + ), storage_paths: NymConnectPaths::new_default(default_data_directory(id.as_ref())), } } diff --git a/sdk/lib/socks5-listener/src/config/mod.rs b/sdk/lib/socks5-listener/src/config/mod.rs index f2c80303d9..c6a7060954 100644 --- a/sdk/lib/socks5-listener/src/config/mod.rs +++ b/sdk/lib/socks5-listener/src/config/mod.rs @@ -67,7 +67,11 @@ impl Config { S: AsRef, { Config { - core: CoreConfig::new(id.as_ref(), provider_mix_address.as_ref()), + core: CoreConfig::new( + id.as_ref(), + env!("CARGO_PKG_VERSION"), + provider_mix_address.as_ref(), + ), storage_paths: storage_root.map(|storage_root| { MobileSocksClientPaths::new_default(data_directory_from_root( storage_root, From 4071d30f3c043d2e689132b60f448e29b2adc461 Mon Sep 17 00:00:00 2001 From: Pierre Dommerc Date: Thu, 15 Jun 2023 19:23:23 +0200 Subject: [PATCH 06/18] feat(nc-desktop): add error reporting and monitoring setting (#3553) --- nym-connect/desktop/package.json | 4 +- nym-connect/desktop/src-tauri/src/main.rs | 1 + .../src-tauri/src/operations/common.rs | 9 +++ .../desktop/src-tauri/src/operations/mod.rs | 1 + nym-connect/desktop/src/context/main.tsx | 33 +++++++- .../desktop/src/context/mocks/main.tsx | 2 + .../menu/settings/MonitoringSettings.tsx | 52 +++++++++++++ .../desktop/src/pages/menu/settings/index.tsx | 1 + nym-connect/desktop/src/routes/index.tsx | 40 ++++++---- nym-connect/desktop/src/sentry.ts | 48 ++++++++++++ nym-connect/native/android/app/build.gradle | 2 +- .../android/app/src/main/AndroidManifest.xml | 2 +- nym-wallet/package.json | 2 +- yarn.lock | 76 ++++++++++++++++++- 14 files changed, 252 insertions(+), 21 deletions(-) create mode 100644 nym-connect/desktop/src-tauri/src/operations/common.rs create mode 100644 nym-connect/desktop/src/pages/menu/settings/MonitoringSettings.tsx create mode 100644 nym-connect/desktop/src/sentry.ts diff --git a/nym-connect/desktop/package.json b/nym-connect/desktop/package.json index 299d162628..60ea3b4830 100644 --- a/nym-connect/desktop/package.json +++ b/nym-connect/desktop/package.json @@ -28,11 +28,13 @@ "@emotion/styled": "^11.6.0", "@hookform/resolvers": "^2.8.0", "@mui/icons-material": "^5.2.0", + "@mui/lab": "^5.0.0-alpha.72", "@mui/material": "^5.2.2", "@mui/styles": "^5.2.2", "@mui/system": ">= 5", - "@mui/lab": "^5.0.0-alpha.72", "@nymproject/react": "^1.0.0", + "@sentry/integrations": "^7.54.0", + "@sentry/react": "^7.54.0", "@tauri-apps/api": "^1.2.0", "@tauri-apps/tauri-forage": "^1.0.0-beta.2", "clsx": "^1.1.1", diff --git a/nym-connect/desktop/src-tauri/src/main.rs b/nym-connect/desktop/src-tauri/src/main.rs index b1a599c41e..aef1f08fae 100644 --- a/nym-connect/desktop/src-tauri/src/main.rs +++ b/nym-connect/desktop/src-tauri/src/main.rs @@ -40,6 +40,7 @@ fn main() { .invoke_handler(tauri::generate_handler![ crate::operations::config::get_config_file_location, crate::operations::config::get_config_id, + crate::operations::common::get_env, crate::operations::connection::connect::get_gateway, crate::operations::connection::connect::get_service_provider, crate::operations::connection::connect::set_gateway, diff --git a/nym-connect/desktop/src-tauri/src/operations/common.rs b/nym-connect/desktop/src-tauri/src/operations/common.rs new file mode 100644 index 0000000000..707dd19860 --- /dev/null +++ b/nym-connect/desktop/src-tauri/src/operations/common.rs @@ -0,0 +1,9 @@ +use std::env; + +#[tauri::command] +pub async fn get_env(variable: String) -> Option { + let var = env::var(&variable).ok(); + log::trace!("get_env {variable} {:?}", var); + + var +} diff --git a/nym-connect/desktop/src-tauri/src/operations/mod.rs b/nym-connect/desktop/src-tauri/src/operations/mod.rs index 87e01e79da..977dcc5110 100644 --- a/nym-connect/desktop/src-tauri/src/operations/mod.rs +++ b/nym-connect/desktop/src-tauri/src/operations/mod.rs @@ -1,3 +1,4 @@ +pub mod common; pub mod config; pub mod connection; pub mod directory; diff --git a/nym-connect/desktop/src/context/main.tsx b/nym-connect/desktop/src/context/main.tsx index b999b957a2..f1dbe5948a 100644 --- a/nym-connect/desktop/src/context/main.tsx +++ b/nym-connect/desktop/src/context/main.tsx @@ -9,9 +9,11 @@ import { getItemFromStorage, setItemInStorage } from 'src/utils'; import { ConnectionStatusKind, GatewayPerformance } from '../types'; import { ConnectionStatsItem } from '../components/ConnectionStats'; import { ServiceProvider } from '../types/directory'; +import initSentry from '../sentry'; const FORAGE_GATEWAY_KEY = 'nym-connect-user-gateway'; const FORAGE_SP_KEY = 'nym-connect-user-sp'; +const FORAGE_MONITORING_ENABLED = 'nym-connect-monitoring-enabled'; type ModeType = 'light' | 'dark'; @@ -30,6 +32,7 @@ export type TClientContext = { serviceProviders?: ServiceProvider[]; setMode: (mode: ModeType) => void; clearError: () => void; + monitoringEnabled: boolean; setConnectionStatus: (connectionStatus: ConnectionStatusKind) => void; setConnectionStats: (connectionStats: ConnectionStatsItem[] | undefined) => void; setConnectedSince: (connectedSince: DateTime | undefined) => void; @@ -39,6 +42,7 @@ export type TClientContext = { startDisconnecting: () => Promise; setUserDefinedGateway: React.Dispatch>; setUserDefinedSPAddress: React.Dispatch>; + setMonitoring: (value: boolean) => Promise; }; export const ClientContext = createContext({} as TClientContext); @@ -62,12 +66,25 @@ export const ClientContextProvider: FCWithChildren = ({ children }) => { isActive: false, address: undefined, }); + const [monitoringEnabled, setMonitoringEnabled] = useState(false); const getAppVersion = async () => { const version = await getVersion(); return version; }; + useEffect(() => { + const initSentryClient = async () => { + const monitoring = await getItemFromStorage({ key: FORAGE_MONITORING_ENABLED }); + setMonitoringEnabled(Boolean(monitoring)); + if (monitoring === true) { + await initSentry(); + } + }; + + initSentryClient(); + }, []); + useEffect(() => { setItemInStorage({ key: FORAGE_GATEWAY_KEY, value: userDefinedGateway }); }, [userDefinedGateway]); @@ -85,8 +102,12 @@ export const ClientContextProvider: FCWithChildren = ({ children }) => { setAppVersion(AppVersion); setServiceProviders(services as ServiceProvider[]); - if (storedUserDefinedGateway) setUserDefinedGateway(storedUserDefinedGateway); - if (storedUserDefinedSP) setUserDefinedSPAddress(storedUserDefinedSP); + if (storedUserDefinedGateway) { + setUserDefinedGateway(storedUserDefinedGateway); + } + if (storedUserDefinedSP) { + setUserDefinedSPAddress(storedUserDefinedSP); + } }; useEvents({ @@ -162,6 +183,11 @@ export const ClientContextProvider: FCWithChildren = ({ children }) => { const clearError = () => setError(undefined); + const setMonitoring = async (value: boolean) => { + setMonitoringEnabled(value); + await setItemInStorage({ key: FORAGE_MONITORING_ENABLED, value }); + }; + const contextValue = useMemo( () => ({ mode, @@ -177,6 +203,7 @@ export const ClientContextProvider: FCWithChildren = ({ children }) => { selectedProvider, serviceProviders, connectedSince, + monitoringEnabled, setConnectedSince, setSerivceProvider, startConnecting, @@ -187,6 +214,7 @@ export const ClientContextProvider: FCWithChildren = ({ children }) => { userDefinedGateway, setUserDefinedGateway, setUserDefinedSPAddress, + setMonitoring, }), [ mode, @@ -202,6 +230,7 @@ export const ClientContextProvider: FCWithChildren = ({ children }) => { selectedProvider, userDefinedGateway, userDefinedSPAddress, + monitoringEnabled, ], ); diff --git a/nym-connect/desktop/src/context/mocks/main.tsx b/nym-connect/desktop/src/context/mocks/main.tsx index 78028b03f8..8c602596eb 100644 --- a/nym-connect/desktop/src/context/mocks/main.tsx +++ b/nym-connect/desktop/src/context/mocks/main.tsx @@ -11,6 +11,7 @@ const mockValues: TClientContext = { showInfoModal: false, userDefinedGateway: { isActive: false, gateway: '' }, userDefinedSPAddress: { isActive: false, address: '' }, + monitoringEnabled: false, setShowInfoModal: () => {}, setMode: () => {}, clearError: () => {}, @@ -22,6 +23,7 @@ const mockValues: TClientContext = { setSerivceProvider: () => {}, setUserDefinedGateway: () => {}, setUserDefinedSPAddress: () => {}, + setMonitoring: async () => {}, }; export const MockProvider: FCWithChildren<{ diff --git a/nym-connect/desktop/src/pages/menu/settings/MonitoringSettings.tsx b/nym-connect/desktop/src/pages/menu/settings/MonitoringSettings.tsx new file mode 100644 index 0000000000..0bc23a55bd --- /dev/null +++ b/nym-connect/desktop/src/pages/menu/settings/MonitoringSettings.tsx @@ -0,0 +1,52 @@ +import React, { ChangeEvent, useState } from 'react'; +import { Warning as WarningIcon } from '@mui/icons-material'; +import { Box, FormControl, FormControlLabel, FormHelperText, Stack, Switch, Typography } from '@mui/material'; +import { useClientContext } from 'src/context/main'; + +export const MonitoringSettings = () => { + const { monitoringEnabled, setMonitoring } = useClientContext(); + const [enabled, setEnabled] = useState(monitoringEnabled); + const [loading, setLoading] = useState(false); + + const handleChange = async (e: ChangeEvent) => { + setLoading(true); + setEnabled(e.target.checked); + await setMonitoring(e.target.checked); + setLoading(false); + }; + + return ( + + + + + Error reporting and performance monitoring + + + + } + label="Enable" + /> + + Help Nym developers to fix errors, crashes and improve the application by enabling this option. If errors + occur or if the app crashes, it will automatically send a report. Also it tracks various performance + metrics. We use sentry.io service to handle this. + + + Note: A report can include your external IP, this can be useful to catch issues related to IP location. + All recorded data is used by Nym developers and for app development purposes only. + + + + + + You must restart the application for the change to take effect. + + + + + + ); +}; diff --git a/nym-connect/desktop/src/pages/menu/settings/index.tsx b/nym-connect/desktop/src/pages/menu/settings/index.tsx index bc58b69f1b..fc7bd030cd 100644 --- a/nym-connect/desktop/src/pages/menu/settings/index.tsx +++ b/nym-connect/desktop/src/pages/menu/settings/index.tsx @@ -7,6 +7,7 @@ import { toggleLogViewer } from 'src/utils'; const menuSchema = [ { title: 'Select your gateway', path: 'gateway' }, { title: 'Select a service provider', path: 'service-provider' }, + { title: 'Help us improve the app', path: 'monitoring' }, ]; export const SettingsMenu = () => ( diff --git a/nym-connect/desktop/src/routes/index.tsx b/nym-connect/desktop/src/routes/index.tsx index dd3eec678e..e490fec83a 100644 --- a/nym-connect/desktop/src/routes/index.tsx +++ b/nym-connect/desktop/src/routes/index.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { Routes, Route } from 'react-router-dom'; +import * as Sentry from '@sentry/react'; import { ConnectionPage } from 'src/pages/connection'; import { Menu } from 'src/pages/menu'; import { CompatibleApps } from 'src/pages/menu/Apps'; @@ -7,19 +8,30 @@ import { HelpGuide } from 'src/pages/menu/Guide'; import { SettingsMenu } from 'src/pages/menu/settings'; import { GatewaySettings } from 'src/pages/menu/settings/GatewaySettings'; import { ServiceProviderSettings } from 'src/pages/menu/settings/ServiceProviderSettings'; +import { MonitoringSettings } from '../pages/menu/settings/MonitoringSettings'; +import { useClientContext } from '../context/main'; -export const AppRoutes = () => ( - - } /> - - } /> - } /> - } /> - - } /> - } /> - } /> +const SentryRoutes = Sentry.withSentryReactRouterV6Routing(Routes); + +export const AppRoutes = () => { + const { monitoringEnabled } = useClientContext(); + + const RoutesContainer = monitoringEnabled ? SentryRoutes : Routes; + + return ( + + } /> + + } /> + } /> + } /> + + } /> + } /> + } /> + } /> + - - -); + + ); +}; diff --git a/nym-connect/desktop/src/sentry.ts b/nym-connect/desktop/src/sentry.ts new file mode 100644 index 0000000000..835131c2ec --- /dev/null +++ b/nym-connect/desktop/src/sentry.ts @@ -0,0 +1,48 @@ +import React from 'react'; +import { createRoutesFromChildren, matchRoutes, useLocation, useNavigationType } from 'react-router-dom'; +import * as Sentry from '@sentry/react'; +import { CaptureConsole } from '@sentry/integrations'; +import { getVersion } from '@tauri-apps/api/app'; + +const SENTRY_DSN = 'https://625e2658da4945a7a253f3ee04413a31@o967446.ingest.sentry.io/4505306292289536'; + +async function initSentry() { + console.log('⚠ performance monitoring and error reporting enabled'); + console.log('initializing sentry'); + + Sentry.init({ + dsn: SENTRY_DSN, + integrations: [ + new Sentry.BrowserTracing({ + // Set `tracePropagationTargets` to control for which URLs distributed tracing should be enabled + tracePropagationTargets: ['localhost'], + routingInstrumentation: Sentry.reactRouterV6Instrumentation( + React.useEffect, + useLocation, + useNavigationType, + createRoutesFromChildren, + matchRoutes, + ), + }), + new Sentry.Replay(), + // captures Console API calls + new CaptureConsole({ levels: ['error', 'warn'] }), + ], + + // TODO adjust this in the future, 100% is not recommended for production + tracesSampleRate: 1.0, + + // Capture Replay for 10% of all sessions, + // plus for 100% of sessions with an error + replaysSessionSampleRate: 0.1, + replaysOnErrorSampleRate: 1.0, + + environment: process.env.NODE_ENV, + }); + + getVersion().then((version) => { + Sentry.setTag('app_version', version); + }); +} + +export default initSentry; diff --git a/nym-connect/native/android/app/build.gradle b/nym-connect/native/android/app/build.gradle index 63e9a51fe1..1afc11b2be 100644 --- a/nym-connect/native/android/app/build.gradle +++ b/nym-connect/native/android/app/build.gradle @@ -121,4 +121,4 @@ dependencies { debugImplementation 'androidx.compose.ui:ui-tooling' debugImplementation 'androidx.compose.ui:ui-test-manifest' implementation 'com.github.kittinunf.fuel:fuel:3.0.0-alpha1' -} \ No newline at end of file +} diff --git a/nym-connect/native/android/app/src/main/AndroidManifest.xml b/nym-connect/native/android/app/src/main/AndroidManifest.xml index 311aa8bd42..6321a2ce8c 100644 --- a/nym-connect/native/android/app/src/main/AndroidManifest.xml +++ b/nym-connect/native/android/app/src/main/AndroidManifest.xml @@ -36,4 +36,4 @@ tools:node="remove" /> - \ No newline at end of file + diff --git a/nym-wallet/package.json b/nym-wallet/package.json index 8f410b2eb8..155d677f5b 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -122,4 +122,4 @@ "webpack-favicons": "^1.3.8", "webpack-merge": "^5.8.0" } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index f8b88fd2bf..8479008ac8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3042,6 +3042,80 @@ resolved "https://registry.yarnpkg.com/@sapphire/utilities/-/utilities-3.11.1.tgz#75d068fe473d9cf8483156ae731bce92fa39a2ef" integrity sha512-SO7WvlPc0QEB+bCT6Z/NGpYTpOtYAJtxpxKV4YU+agEGlMZ5hM8J/xkco4/yFWH7X2gAcG4Ckoi2shFr7CMS/A== +"@sentry-internal/tracing@7.54.0": + version "7.54.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.54.0.tgz#eeb10ee72426d08669a7706faa4264f1ec02c71d" + integrity sha512-JsyhZ0wWZ+VqbHJg+azqRGdYJDkcI5R9+pnkO6SzbzxrRewqMAIwzkpPee3oI7vG99uhMEkOkMjHu0nQGwkOQw== + dependencies: + "@sentry/core" "7.54.0" + "@sentry/types" "7.54.0" + "@sentry/utils" "7.54.0" + tslib "^1.9.3" + +"@sentry/browser@7.54.0": + version "7.54.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.54.0.tgz#7fe331c776d02b5c902733aa41dcbfac7bef1ae6" + integrity sha512-EvLAw03N9WE2m1CMl2/1YMeIs1icw9IEOVJhWmf3uJEysNJOFWXu6ZzdtHEz1E6DiJYhc1HzDya0ExZeJxNARA== + dependencies: + "@sentry-internal/tracing" "7.54.0" + "@sentry/core" "7.54.0" + "@sentry/replay" "7.54.0" + "@sentry/types" "7.54.0" + "@sentry/utils" "7.54.0" + tslib "^1.9.3" + +"@sentry/core@7.54.0": + version "7.54.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.54.0.tgz#8c4cb8800f8df708b3f3f6483026bb9a02820014" + integrity sha512-MAn0E2EwgNn1pFQn4qxhU+1kz6edullWg6VE5wCmtpXWOVw6sILBUsQpeIG5djBKMcneJCdOlz5jeqcKPrLvZQ== + dependencies: + "@sentry/types" "7.54.0" + "@sentry/utils" "7.54.0" + tslib "^1.9.3" + +"@sentry/integrations@^7.54.0": + version "7.54.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.54.0.tgz#62c73013ca6040d0c9b045809fc5d6ecefda3339" + integrity sha512-RolGsQzJChJzjHTJcCKSZ1HanmY33floc5o13WgU9NoDqJbLGLNcOIrAu+WynqPe8P5VTVrVb8NiwhLqWrKp4g== + dependencies: + "@sentry/types" "7.54.0" + "@sentry/utils" "7.54.0" + localforage "^1.8.1" + tslib "^1.9.3" + +"@sentry/react@^7.54.0": + version "7.54.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.54.0.tgz#0d9e1b902fd9ded713ac46a623f6a490e4aa2c8a" + integrity sha512-qUbwmRRpTh05m2rbC8A2zAFQYsoHhwIpxT5UXxh0P64ZlA3cSg1/DmTTgwnd1l+7gzKrc31UikXQ4y0YDbMNKg== + dependencies: + "@sentry/browser" "7.54.0" + "@sentry/types" "7.54.0" + "@sentry/utils" "7.54.0" + hoist-non-react-statics "^3.3.2" + tslib "^1.9.3" + +"@sentry/replay@7.54.0": + version "7.54.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.54.0.tgz#f0f44f9413ceefd1809bf1665e82315927ae08db" + integrity sha512-C0F0568ybphzGmKGe23duB6n5wJcgM7WLYhoeqW3o2bHeqpj1dGPSka/K3s9KzGaAgzn1zeOUYXJsOs+T/XdsA== + dependencies: + "@sentry/core" "7.54.0" + "@sentry/types" "7.54.0" + "@sentry/utils" "7.54.0" + +"@sentry/types@7.54.0": + version "7.54.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.54.0.tgz#bfee18107a78e290e6c8ad41646e2b9d9dd95234" + integrity sha512-D+i9xogBeawvQi2r0NOrM7zYcUaPuijeME4O9eOTrDF20tj71hWtJLilK+KTGLYFtpGg1h+9bPaz7OHEIyVopg== + +"@sentry/utils@7.54.0": + version "7.54.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.54.0.tgz#a3acb5e25a1409cbca7b46d6356d7417a253ea9a" + integrity sha512-3Yf5KlKjIcYLddOexSt2ovu2TWlR4Fi7M+aCK8yUTzwNzf/xwFSWOstHlD/WiDy9HvfhWAOB/ukNTuAeJmtasw== + dependencies: + "@sentry/types" "7.54.0" + tslib "^1.9.3" + "@sigstore/protobuf-specs@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" @@ -12987,7 +13061,7 @@ loader-utils@^2.0.0, loader-utils@^2.0.4: emojis-list "^3.0.0" json5 "^2.1.2" -localforage@^1.7.3: +localforage@^1.7.3, localforage@^1.8.1: version "1.10.0" resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== From 9cbb3dfa0e5f8c06e4b7251f089f82fe25b14211 Mon Sep 17 00:00:00 2001 From: pierre Date: Fri, 16 Jun 2023 11:19:44 +0200 Subject: [PATCH 07/18] copy change --- nym-connect/desktop/src/pages/menu/settings/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nym-connect/desktop/src/pages/menu/settings/index.tsx b/nym-connect/desktop/src/pages/menu/settings/index.tsx index fc7bd030cd..c6dbfc5998 100644 --- a/nym-connect/desktop/src/pages/menu/settings/index.tsx +++ b/nym-connect/desktop/src/pages/menu/settings/index.tsx @@ -7,7 +7,7 @@ import { toggleLogViewer } from 'src/utils'; const menuSchema = [ { title: 'Select your gateway', path: 'gateway' }, { title: 'Select a service provider', path: 'service-provider' }, - { title: 'Help us improve the app', path: 'monitoring' }, + { title: 'Help improve the app', path: 'monitoring' }, ]; export const SettingsMenu = () => ( From 3748ab77a132143d5fd1cd75dd06334d33294815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Fri, 16 Jun 2023 11:27:25 +0200 Subject: [PATCH 08/18] Statically link openssl (#3504) * Statically link openssl * Fix wasm client build * Enable openssl for nyxd-client feature --- Cargo.lock | 1 + common/client-libs/validator-client/Cargo.toml | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb9b592daa..9f00346e27 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4631,6 +4631,7 @@ dependencies = [ "nym-service-provider-directory-common", "nym-vesting-contract", "nym-vesting-contract-common", + "openssl", "prost 0.10.4", "reqwest", "serde", diff --git a/common/client-libs/validator-client/Cargo.toml b/common/client-libs/validator-client/Cargo.toml index 1a741f6412..3e0428e643 100644 --- a/common/client-libs/validator-client/Cargo.toml +++ b/common/client-libs/validator-client/Cargo.toml @@ -29,6 +29,7 @@ log = { workspace = true } url = { version = "2.2", features = ["serde"] } tokio = { version = "1.24.1", features = ["sync", "time"] } futures = "0.3" +openssl = { version = "0.10", features = ["vendored"], optional = true } nym-coconut-interface = { path = "../../coconut-interface" } nym-network-defaults = { path = "../../network-defaults" } @@ -77,13 +78,14 @@ required-features = ["nyxd-client"] nyxd-client = [ "async-trait", "cosmrs", + "cosmwasm-std", "cw3", "cw4", - "prost", "flate2", - "sha2", "itertools", - "cosmwasm-std", + "openssl", + "prost", + "sha2", "signing" ] signing = [ From 8f579195715f4d41017c11593ade8b422f97202d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Fri, 16 Jun 2023 11:19:40 +0100 Subject: [PATCH 09/18] optional id argument for NymNodeTester (#3555) --- clients/webassembly/internal-dev/worker.js | 10 +++--- clients/webassembly/src/tester/mod.rs | 41 +++++++++++++++++----- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/clients/webassembly/internal-dev/worker.js b/clients/webassembly/internal-dev/worker.js index 01e3504e78..45c2762d0a 100644 --- a/clients/webassembly/internal-dev/worker.js +++ b/clients/webassembly/internal-dev/worker.js @@ -116,11 +116,11 @@ async function testWithTester() { // B) first get topology directly from nym-api // const validator = 'https://qwerty-validator-api.qa.nymte.ch/api'; // const topology = await current_network_topology(validator) - // const nodeTester = await new NymNodeTester(topology, preferredGateway); + // const nodeTester = await new NymNodeTester(topology, undefined, preferredGateway); // // C) use nym-api in the constructor (note: it does no filtering for 'good' nodes on other layers) // const validator = 'https://qwerty-validator-api.qa.nymte.ch/api'; - // const nodeTester = await NymNodeTester.new_with_api(validator, preferredGateway) + // const nodeTester = await NymNodeTester.new_with_api(validator, undefined, preferredGateway) // D, E, F) you also don't have to specify the gateway. if you don't, a random one (from your topology) will be used // const topology = dummyTopology() @@ -365,16 +365,16 @@ async function main() { set_panic_hook(); // show reconnection capabilities - await testerReconnection() + // await testerReconnection() // run test on simplified and dedicated tester: - // await testWithTester() + await testWithTester() // hook-up the whole client for testing // await testWithNymClient() // 'Normal' client setup (to send 'normal' messages) - await normalNymClientUsage() + // await normalNymClientUsage() } // Let's get started! diff --git a/clients/webassembly/src/tester/mod.rs b/clients/webassembly/src/tester/mod.rs index f7efac1043..1ce59a4024 100644 --- a/clients/webassembly/src/tester/mod.rs +++ b/clients/webassembly/src/tester/mod.rs @@ -73,6 +73,7 @@ pub struct NymNodeTester { #[wasm_bindgen] pub struct NymNodeTesterBuilder { gateway: Option, + id: Option, base_topology: NymTopology, @@ -94,9 +95,11 @@ impl NymNodeTesterBuilder { #[wasm_bindgen(constructor)] pub fn new( base_topology: WasmNymTopology, + id: Option, gateway: Option, ) -> NymNodeTesterBuilder { NymNodeTesterBuilder { + id, gateway, base_topology: base_topology.into(), bandwidth_controller: None, @@ -105,15 +108,20 @@ impl NymNodeTesterBuilder { async fn _new_with_api( api_url: String, + id: Option, gateway: Option, ) -> Result { let topology = current_network_topology_async(api_url).await?; - Ok(NymNodeTesterBuilder::new(topology, gateway)) + Ok(NymNodeTesterBuilder::new(topology, id, gateway)) } - pub fn new_with_api(gateway: Option, api_url: String) -> Promise { + pub fn new_with_api( + api_url: String, + id: Option, + gateway: Option, + ) -> Promise { future_to_promise(async move { - Self::_new_with_api(api_url, gateway) + Self::_new_with_api(api_url, id, gateway) .await .into_promise_result() }) @@ -133,7 +141,13 @@ impl NymNodeTesterBuilder { async fn _setup_client(mut self) -> Result { let task_manager = TaskManager::default(); - let client_store = ClientStorage::new_async(NODE_TESTER_ID, None).await?; + let storage_id = if let Some(client_id) = &self.id { + format!("{NODE_TESTER_ID}-{client_id}") + } else { + NODE_TESTER_ID.to_owned() + }; + + let client_store = ClientStorage::new_async(&storage_id, None).await?; let init_details = self.gateway_info(&client_store).await?; let gateway_endpoint = init_details.gateway_details; @@ -234,24 +248,33 @@ async fn test_mixnode( impl NymNodeTester { #[wasm_bindgen(constructor)] #[allow(clippy::new_ret_no_self)] - pub fn new(topology: WasmNymTopology, gateway: Option) -> Promise { + pub fn new( + topology: WasmNymTopology, + id: Option, + gateway: Option, + ) -> Promise { console_log!("constructing node tester!"); - NymNodeTesterBuilder::new(topology, gateway).setup_client() + NymNodeTesterBuilder::new(topology, id, gateway).setup_client() } async fn _new_with_api( api_url: String, + id: Option, gateway: Option, ) -> Result { - NymNodeTesterBuilder::_new_with_api(api_url, gateway) + NymNodeTesterBuilder::_new_with_api(api_url, id, gateway) .await? ._setup_client() .await } - pub fn new_with_api(api_url: String, gateway: Option) -> Promise { + pub fn new_with_api( + api_url: String, + id: Option, + gateway: Option, + ) -> Promise { future_to_promise(async move { - Self::_new_with_api(api_url, gateway) + Self::_new_with_api(api_url, id, gateway) .await .into_promise_result() }) From 2032b3bdaee10faf6bc4080ef6a93ea3390480f5 Mon Sep 17 00:00:00 2001 From: benedettadavico Date: Tue, 20 Jun 2023 09:51:28 +0200 Subject: [PATCH 10/18] updating versions for release v1.1.22 --- CHANGELOG.md | 17 +++++++++++++- Cargo.lock | 22 +++++++++---------- clients/native/Cargo.toml | 2 +- clients/socks5/Cargo.toml | 2 +- clients/webassembly/Cargo.toml | 2 +- common/bin-common/Cargo.toml | 2 +- common/client-core/Cargo.toml | 2 +- explorer-api/Cargo.toml | 2 +- gateway/Cargo.toml | 2 +- mixnode/Cargo.toml | 2 +- nym-api/Cargo.toml | 2 +- .../network-requester/Cargo.toml | 2 +- .../network-statistics/Cargo.toml | 2 +- tools/nym-cli/Cargo.toml | 2 +- 14 files changed, 39 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7f65d352c..2c56686c83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,24 @@ Post 1.0.0 release, the changelog format is based on [Keep a Changelog](https:// ## [Unreleased] +## [v1.1.22] (2023-06-20) + +- CLI tool for querying network-requesters ([#3539]) +- Statically link OpenSSL ([#3510]) +- NymConnect - add sentry.io reporting ([#3421]) +- init command does not change version number in config.toml ([#3336]) +- [Bug] Config version does not correspond to binary version ([#3434]) + +[#3539]: https://github.com/nymtech/nym/issues/3539 +[#3510]: https://github.com/nymtech/nym/issues/3510 +[#3421]: https://github.com/nymtech/nym/issues/3421 +[#3336]: https://github.com/nymtech/nym/issues/3336 +[#3434]: https://github.com/nymtech/nym/issues/3434 + ## [v1.1.21] (2023-06-13) -- mixFetch: Change socks5 `SendRequest` to include OrderedMessage index as a field rather than making it serialized inside the `data` field ([#3534]) +- mixFetch: Change socks5 `SendRequest` to include OrderedMessage index as a field rather than making it serialized inside the `data` field + ([#3534]) - Explorer - add more data columns to the Service Provider section: ([#3474]) - network-requester: support report if they run an open proxy using `ControlRequest` API ([#3461]) - Refactor client configs (London discussion) ([#3444]) diff --git a/Cargo.lock b/Cargo.lock index 9f00346e27..3a65ed0106 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1732,7 +1732,7 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "explorer-api" -version = "1.1.21" +version = "1.1.22" dependencies = [ "chrono", "clap 4.2.7", @@ -3322,7 +3322,7 @@ dependencies = [ [[package]] name = "nym-api" -version = "1.1.22" +version = "1.1.23" dependencies = [ "anyhow", "async-trait", @@ -3423,7 +3423,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "0.5.0" +version = "0.6.0" dependencies = [ "atty", "clap 4.2.7", @@ -3459,7 +3459,7 @@ dependencies = [ [[package]] name = "nym-cli" -version = "1.1.21" +version = "1.1.22" dependencies = [ "anyhow", "base64 0.13.1", @@ -3523,7 +3523,7 @@ dependencies = [ [[package]] name = "nym-client" -version = "1.1.21" +version = "1.1.22" dependencies = [ "clap 4.2.7", "dirs 4.0.0", @@ -3559,7 +3559,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.1.14" +version = "1.1.15" dependencies = [ "async-trait", "base64 0.21.2", @@ -3797,7 +3797,7 @@ dependencies = [ [[package]] name = "nym-gateway" -version = "1.1.21" +version = "1.1.22" dependencies = [ "anyhow", "async-trait", @@ -3948,7 +3948,7 @@ dependencies = [ [[package]] name = "nym-mixnode" -version = "1.1.22" +version = "1.1.23" dependencies = [ "anyhow", "bs58", @@ -4058,7 +4058,7 @@ dependencies = [ [[package]] name = "nym-network-requester" -version = "1.1.21" +version = "1.1.22" dependencies = [ "anyhow", "async-file-watcher", @@ -4104,7 +4104,7 @@ dependencies = [ [[package]] name = "nym-network-statistics" -version = "1.1.21" +version = "1.1.22" dependencies = [ "dirs 4.0.0", "log", @@ -4263,7 +4263,7 @@ dependencies = [ [[package]] name = "nym-socks5-client" -version = "1.1.21" +version = "1.1.22" dependencies = [ "clap 4.2.7", "lazy_static", diff --git a/clients/native/Cargo.toml b/clients/native/Cargo.toml index f131839b26..56ca474de7 100644 --- a/clients/native/Cargo.toml +++ b/clients/native/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-client" -version = "1.1.21" +version = "1.1.22" authors = ["Dave Hrycyszyn ", "Jędrzej Stuczyński "] description = "Implementation of the Nym Client" edition = "2021" diff --git a/clients/socks5/Cargo.toml b/clients/socks5/Cargo.toml index 5c0558200a..8d360b6bb5 100644 --- a/clients/socks5/Cargo.toml +++ b/clients/socks5/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-socks5-client" -version = "1.1.21" +version = "1.1.22" authors = ["Dave Hrycyszyn "] description = "A SOCKS5 localhost proxy that converts incoming messages to Sphinx and sends them to a Nym address" edition = "2021" diff --git a/clients/webassembly/Cargo.toml b/clients/webassembly/Cargo.toml index 705d23668a..11d1cb131a 100644 --- a/clients/webassembly/Cargo.toml +++ b/clients/webassembly/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "nym-client-wasm" authors = ["Dave Hrycyszyn ", "Jedrzej Stuczynski "] -version = "1.1.0" +version = "1.1.1" edition = "2021" keywords = ["nym", "sphinx", "wasm", "webassembly", "privacy", "client"] license = "Apache-2.0" diff --git a/common/bin-common/Cargo.toml b/common/bin-common/Cargo.toml index b46424d677..5e817b6afd 100644 --- a/common/bin-common/Cargo.toml +++ b/common/bin-common/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-bin-common" -version = "0.5.0" +version = "0.6.0" description = "Common code for nym binaries" edition = { workspace = true } authors = { workspace = true } diff --git a/common/client-core/Cargo.toml b/common/client-core/Cargo.toml index 98d7ce6151..b8b1403d86 100644 --- a/common/client-core/Cargo.toml +++ b/common/client-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-client-core" -version = "1.1.14" +version = "1.1.15" authors = ["Dave Hrycyszyn "] edition = "2021" rust-version = "1.66" diff --git a/explorer-api/Cargo.toml b/explorer-api/Cargo.toml index 0085320aa7..38e8645ecc 100644 --- a/explorer-api/Cargo.toml +++ b/explorer-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "explorer-api" -version = "1.1.21" +version = "1.1.22" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/gateway/Cargo.toml b/gateway/Cargo.toml index edf9bee5eb..76f78fc189 100644 --- a/gateway/Cargo.toml +++ b/gateway/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "nym-gateway" -version = "1.1.21" +version = "1.1.22" authors = [ "Dave Hrycyszyn ", "Jędrzej Stuczyński ", diff --git a/mixnode/Cargo.toml b/mixnode/Cargo.toml index c24c5da0a8..c12e9259b3 100644 --- a/mixnode/Cargo.toml +++ b/mixnode/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "nym-mixnode" -version = "1.1.22" +version = "1.1.23" authors = [ "Dave Hrycyszyn ", "Jędrzej Stuczyński ", diff --git a/nym-api/Cargo.toml b/nym-api/Cargo.toml index 73f299c4c7..51d8243c1f 100644 --- a/nym-api/Cargo.toml +++ b/nym-api/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "nym-api" -version = "1.1.22" +version = "1.1.23" authors = [ "Dave Hrycyszyn ", "Jędrzej Stuczyński ", diff --git a/service-providers/network-requester/Cargo.toml b/service-providers/network-requester/Cargo.toml index 6e70fdef2f..63730bb8bd 100644 --- a/service-providers/network-requester/Cargo.toml +++ b/service-providers/network-requester/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "nym-network-requester" -version = "1.1.21" +version = "1.1.22" authors.workspace = true edition.workspace = true rust-version = "1.65" diff --git a/service-providers/network-statistics/Cargo.toml b/service-providers/network-statistics/Cargo.toml index 555d931bdf..076b7c98c1 100644 --- a/service-providers/network-statistics/Cargo.toml +++ b/service-providers/network-statistics/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-network-statistics" -version = "1.1.21" +version = "1.1.22" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tools/nym-cli/Cargo.toml b/tools/nym-cli/Cargo.toml index a2c7dfc014..dc69da6e25 100644 --- a/tools/nym-cli/Cargo.toml +++ b/tools/nym-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-cli" -version = "1.1.21" +version = "1.1.22" authors.workspace = true edition = "2021" From 9fbab5aaad712f9f20d44ef496fabd76c74bc626 Mon Sep 17 00:00:00 2001 From: benedettadavico Date: Tue, 20 Jun 2023 10:24:54 +0200 Subject: [PATCH 11/18] updating versions for release v1.1.22 --- nym-connect/desktop/CHANGELOG.md | 6 ++++++ nym-connect/desktop/package.json | 2 +- nym-wallet/package.json | 2 +- nym-wallet/src-tauri/Cargo.toml | 2 +- nym-wallet/src-tauri/tauri.conf.json | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/nym-connect/desktop/CHANGELOG.md b/nym-connect/desktop/CHANGELOG.md index 4510836e7e..84a79d7886 100644 --- a/nym-connect/desktop/CHANGELOG.md +++ b/nym-connect/desktop/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] +## [v1.1.14] (2023-06-20) + +- NymConnect - add sentry.io reporting ([#3421]) + +[#3421]: https://github.com/nymtech/nym/issues/3421 + ## [v1.1.12] (2023-03-07) - NymConnect - Update display for selected Service Provider ([#3116]) diff --git a/nym-connect/desktop/package.json b/nym-connect/desktop/package.json index 60ea3b4830..df00561a19 100644 --- a/nym-connect/desktop/package.json +++ b/nym-connect/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@nym/nym-connect", - "version": "1.1.13", + "version": "1.1.14", "main": "index.js", "license": "MIT", "scripts": { diff --git a/nym-wallet/package.json b/nym-wallet/package.json index 155d677f5b..bd97e241a0 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/nym-wallet-app", - "version": "1.2.4", + "version": "1.2.5", "main": "index.js", "license": "MIT", "scripts": { diff --git a/nym-wallet/src-tauri/Cargo.toml b/nym-wallet/src-tauri/Cargo.toml index 7f75b533fd..13b241b1f0 100644 --- a/nym-wallet/src-tauri/Cargo.toml +++ b/nym-wallet/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym_wallet" -version = "1.2.4" +version = "1.2.5" description = "Nym Native Wallet" authors = ["Nym Technologies SA"] license = "" diff --git a/nym-wallet/src-tauri/tauri.conf.json b/nym-wallet/src-tauri/tauri.conf.json index 7c9d2719f3..debfcb3b1f 100644 --- a/nym-wallet/src-tauri/tauri.conf.json +++ b/nym-wallet/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "package": { "productName": "nym-wallet", - "version": "1.2.4" + "version": "1.2.5" }, "build": { "distDir": "../dist", From f0f9899f826e82cac2ed7d620cfc1d21a6410e2f Mon Sep 17 00:00:00 2001 From: Mark Sinclair <14054343+mmsinclair@users.noreply.github.com> Date: Tue, 20 Jun 2023 12:12:03 +0100 Subject: [PATCH 12/18] Update package.json to fix `build:dev` target --- sdk/typescript/packages/sdk/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/typescript/packages/sdk/package.json b/sdk/typescript/packages/sdk/package.json index f23a7d9c27..7b05d365af 100644 --- a/sdk/typescript/packages/sdk/package.json +++ b/sdk/typescript/packages/sdk/package.json @@ -24,6 +24,7 @@ "prebuild": "yarn build:dependencies", "build": "yarn build:only-this", "build:only-this": "scripts/build-prod.sh", + "prebuild:dev": "yarn build:dependencies", "build:dev": "yarn build:dev:only-this", "build:dev:only-this": "scripts/build.sh" }, From 38b95c26735835cbb93e4de0fa3d48ad38034144 Mon Sep 17 00:00:00 2001 From: benedettadavico Date: Tue, 20 Jun 2023 13:45:04 +0200 Subject: [PATCH 13/18] nym connect version fix --- nym-connect/desktop/CHANGELOG.md | 2 +- nym-connect/desktop/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nym-connect/desktop/CHANGELOG.md b/nym-connect/desktop/CHANGELOG.md index 84a79d7886..7335dacb94 100644 --- a/nym-connect/desktop/CHANGELOG.md +++ b/nym-connect/desktop/CHANGELOG.md @@ -2,7 +2,7 @@ ## [Unreleased] -## [v1.1.14] (2023-06-20) +## [v1.1.13] (2023-06-20) - NymConnect - add sentry.io reporting ([#3421]) diff --git a/nym-connect/desktop/package.json b/nym-connect/desktop/package.json index df00561a19..60ea3b4830 100644 --- a/nym-connect/desktop/package.json +++ b/nym-connect/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@nym/nym-connect", - "version": "1.1.14", + "version": "1.1.13", "main": "index.js", "license": "MIT", "scripts": { From e14db00fc2f77ad51e49715cc7309d7202706000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Tue, 20 Jun 2023 14:48:53 +0200 Subject: [PATCH 14/18] nym-cli: client identity signing support (#3575) * Add client identity key signing to nym-cli * Only load private key * rustfmt * Rename to identity key since it's generic * Rename client_key to identity_key --- Cargo.lock | 2 + common/commands/Cargo.toml | 3 + .../mixnet/operators/identity_key/mod.rs | 68 +++++++++++++++++++ .../src/validator/mixnet/operators/mod.rs | 3 + .../mixnet/operators/identity_key/mod.rs | 15 ++++ .../src/validator/mixnet/operators/mod.rs | 2 + 6 files changed, 93 insertions(+) create mode 100644 common/commands/src/validator/mixnet/operators/identity_key/mod.rs create mode 100644 tools/nym-cli/src/validator/mixnet/operators/identity_key/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 3a65ed0106..98a70afd7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3507,8 +3507,10 @@ dependencies = [ "nym-multisig-contract-common", "nym-name-service-common", "nym-network-defaults", + "nym-pemstore", "nym-service-provider-directory-common", "nym-sphinx", + "nym-types", "nym-validator-client", "nym-vesting-contract-common", "rand 0.6.5", diff --git a/common/commands/Cargo.toml b/common/commands/Cargo.toml index 7f72077383..9f77a9e4ae 100644 --- a/common/commands/Cargo.toml +++ b/common/commands/Cargo.toml @@ -41,3 +41,6 @@ nym-multisig-contract-common = { path = "../cosmwasm-smart-contracts/multisig-co nym-service-provider-directory-common = { path = "../cosmwasm-smart-contracts/service-provider-directory" } nym-name-service-common = { path = "../cosmwasm-smart-contracts/name-service" } nym-sphinx = { path = "../../common/nymsphinx" } + +nym-pemstore = { path = "../../common/pemstore", version = "0.3.0" } +nym-types = { path = "../../common/types" } diff --git a/common/commands/src/validator/mixnet/operators/identity_key/mod.rs b/common/commands/src/validator/mixnet/operators/identity_key/mod.rs new file mode 100644 index 0000000000..793259270e --- /dev/null +++ b/common/commands/src/validator/mixnet/operators/identity_key/mod.rs @@ -0,0 +1,68 @@ +use clap::{Args, Parser, Subcommand}; +use nym_bin_common::output_format::OutputFormat; +use nym_crypto::asymmetric::identity; +use nym_types::helpers::ConsoleSigningOutput; +use nym_validator_client::nyxd::error::NyxdError; +use std::path::PathBuf; + +#[derive(Debug, Args)] +#[clap(args_conflicts_with_subcommands = true, subcommand_required = true)] +pub struct MixnetOperatorsIdentityKey { + #[clap(subcommand)] + pub command: MixnetOperatorsIdentityKeyCommands, +} + +#[derive(Debug, Subcommand)] +pub enum MixnetOperatorsIdentityKeyCommands { + /// Register a name alias for a nym address + Sign(SignArgs), +} + +#[derive(Debug, Parser)] +pub struct SignArgs { + /// Path to private identity key (example: private_identity_key.pem) + #[clap(long)] + private_key: PathBuf, + + /// Base58 encoded message to sign + #[clap(long)] + base58_msg: String, + + #[clap(short, long, default_value_t = OutputFormat::default())] + output: OutputFormat, +} + +pub async fn sign(args: SignArgs) -> Result<(), NyxdError> { + eprintln!(">>> loading: {}", args.private_key.display()); + let private_identity_key: identity::PrivateKey = + nym_pemstore::load_key(args.private_key).expect("failed to load key"); + + print_signed_msg(&private_identity_key, &args.base58_msg, args.output); + Ok(()) +} + +fn print_signed_msg(private_key: &identity::PrivateKey, raw_msg: &str, output: OutputFormat) { + let trimmed = raw_msg.trim(); + eprintln!(">>> attempting to sign: {trimmed}"); + + let Ok(decoded) = bs58::decode(trimmed).into_vec() else { + println!("failed to base58 decode the message, did you copy it correctly?"); + return; + }; + + eprintln!(">>> decoding the message..."); + + // we don't really care about what particular information is embedded inside of it, + // we just want to know if user correctly copied the string, i.e. whether it's a valid bs58 encoded json + if serde_json::from_slice::(&decoded).is_err() { + println!("failed to parse the message after decoding, did you copy it correctly?"); + return; + }; + + // if this is a valid json, it MUST be a valid string + let decoded_string = String::from_utf8(decoded.clone()).unwrap(); + let signature = private_key.sign(&decoded).to_base58_string(); + + let sign_output = ConsoleSigningOutput::new(decoded_string, signature); + println!("{}", output.format(&sign_output)); +} diff --git a/common/commands/src/validator/mixnet/operators/mod.rs b/common/commands/src/validator/mixnet/operators/mod.rs index 008adf8ae2..ce732be9e4 100644 --- a/common/commands/src/validator/mixnet/operators/mod.rs +++ b/common/commands/src/validator/mixnet/operators/mod.rs @@ -4,6 +4,7 @@ use clap::{Args, Subcommand}; pub mod gateway; +pub mod identity_key; pub mod mixnode; pub mod name; pub mod service; @@ -26,4 +27,6 @@ pub enum MixnetOperatorsCommands { ServiceProvider(service::MixnetOperatorsService), /// Manage your registered name Name(name::MixnetOperatorsName), + /// Sign messages using your private identity key + IdentityKey(identity_key::MixnetOperatorsIdentityKey), } diff --git a/tools/nym-cli/src/validator/mixnet/operators/identity_key/mod.rs b/tools/nym-cli/src/validator/mixnet/operators/identity_key/mod.rs new file mode 100644 index 0000000000..7be1b3a7a7 --- /dev/null +++ b/tools/nym-cli/src/validator/mixnet/operators/identity_key/mod.rs @@ -0,0 +1,15 @@ +use nym_cli_commands::context::ClientArgs; +use nym_network_defaults::NymNetworkDetails; + +pub(crate) async fn execute( + _global_args: ClientArgs, + identity_key: nym_cli_commands::validator::mixnet::operators::identity_key::MixnetOperatorsIdentityKey, + _network_details: &NymNetworkDetails, +) -> anyhow::Result<()> { + let res = match identity_key.command { + nym_cli_commands::validator::mixnet::operators::identity_key::MixnetOperatorsIdentityKeyCommands::Sign(sign_args) => { + nym_cli_commands::validator::mixnet::operators::identity_key::sign(sign_args).await + } + }; + Ok(res?) +} diff --git a/tools/nym-cli/src/validator/mixnet/operators/mod.rs b/tools/nym-cli/src/validator/mixnet/operators/mod.rs index 4111cb4608..feb336524c 100644 --- a/tools/nym-cli/src/validator/mixnet/operators/mod.rs +++ b/tools/nym-cli/src/validator/mixnet/operators/mod.rs @@ -5,6 +5,7 @@ use nym_cli_commands::context::ClientArgs; use nym_network_defaults::NymNetworkDetails; pub(crate) mod gateways; +pub(crate) mod identity_key; pub(crate) mod mixnodes; pub(crate) mod name; pub(crate) mod services; @@ -23,5 +24,6 @@ pub(crate) async fn execute( ) => mixnodes::execute(global_args, mixnode, network_details).await, nym_cli_commands::validator::mixnet::operators::MixnetOperatorsCommands::ServiceProvider(service) => services::execute(global_args, service, network_details).await, nym_cli_commands::validator::mixnet::operators::MixnetOperatorsCommands::Name(name) => name::execute(global_args, name, network_details).await, + nym_cli_commands::validator::mixnet::operators::MixnetOperatorsCommands::IdentityKey(identity_key) => identity_key::execute(global_args, identity_key, network_details).await, } } From 35206655e0e0e0e3b64f03146d1e50823a58209e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Wed, 21 Jun 2023 09:01:47 +0200 Subject: [PATCH 15/18] Lock files --- clients/webassembly/Cargo.lock | 17 ++++++++++++++--- nym-connect/desktop/Cargo.lock | 15 +++++++++++++-- nym-wallet/Cargo.lock | 15 +++++++++++++-- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/clients/webassembly/Cargo.lock b/clients/webassembly/Cargo.lock index c7792f6697..e87614acf9 100644 --- a/clients/webassembly/Cargo.lock +++ b/clients/webassembly/Cargo.lock @@ -2240,7 +2240,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "0.5.0" +version = "0.6.0" dependencies = [ "atty", "clap", @@ -2255,7 +2255,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.1.14" +version = "1.1.15" dependencies = [ "async-trait", "base64 0.21.2", @@ -2300,7 +2300,7 @@ dependencies = [ [[package]] name = "nym-client-wasm" -version = "1.1.0" +version = "1.1.1" dependencies = [ "anyhow", "async-trait", @@ -2884,6 +2884,7 @@ dependencies = [ "nym-service-provider-directory-common", "nym-vesting-contract", "nym-vesting-contract-common", + "openssl", "prost", "reqwest", "serde", @@ -2974,6 +2975,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "111.26.0+1.1.1u" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.87" @@ -2982,6 +2992,7 @@ checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] diff --git a/nym-connect/desktop/Cargo.lock b/nym-connect/desktop/Cargo.lock index a3e407020a..4d18e043c4 100644 --- a/nym-connect/desktop/Cargo.lock +++ b/nym-connect/desktop/Cargo.lock @@ -3220,7 +3220,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "0.5.0" +version = "0.6.0" dependencies = [ "atty", "clap", @@ -3235,7 +3235,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.1.14" +version = "1.1.15" dependencies = [ "async-trait", "base64 0.21.2", @@ -3906,6 +3906,7 @@ dependencies = [ "nym-service-provider-directory-common", "nym-vesting-contract", "nym-vesting-contract-common", + "openssl", "prost", "reqwest", "serde", @@ -4045,6 +4046,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "111.26.0+1.1.1u" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.82" @@ -4054,6 +4064,7 @@ dependencies = [ "autocfg", "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] diff --git a/nym-wallet/Cargo.lock b/nym-wallet/Cargo.lock index 218ce62300..70502fc84a 100644 --- a/nym-wallet/Cargo.lock +++ b/nym-wallet/Cargo.lock @@ -2915,7 +2915,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "0.5.0" +version = "0.6.0" dependencies = [ "atty", "clap", @@ -3220,6 +3220,7 @@ dependencies = [ "nym-service-provider-directory-common", "nym-vesting-contract", "nym-vesting-contract-common", + "openssl", "prost", "reqwest", "serde", @@ -3297,7 +3298,7 @@ dependencies = [ [[package]] name = "nym_wallet" -version = "1.2.4" +version = "1.2.5" dependencies = [ "async-trait", "base64 0.13.1", @@ -3447,6 +3448,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "111.26.0+1.1.1u" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.80" @@ -3456,6 +3466,7 @@ dependencies = [ "autocfg", "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] From eba58f64512798d4cb9b50b1ff79620397c9577e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Thu, 22 Jun 2023 08:49:00 +0100 Subject: [PATCH 16/18] NC: load old gateway configuration if we're not registering (#3586) --- nym-connect/desktop/src-tauri/src/config/mod.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/nym-connect/desktop/src-tauri/src/config/mod.rs b/nym-connect/desktop/src-tauri/src/config/mod.rs index a2c356f4b5..2c2e2a9a00 100644 --- a/nym-connect/desktop/src-tauri/src/config/mod.rs +++ b/nym-connect/desktop/src-tauri/src/config/mod.rs @@ -160,7 +160,11 @@ pub async fn init_socks5_config(provider_address: String, chosen_gateway_id: Str config.core.base.client.nym_api_urls = nym_config_common::parse_urls(&raw_validators); } - let gateway_setup = GatewaySetup::new_fresh(Some(chosen_gateway_id), None); + let gateway_setup = if register_gateway { + GatewaySetup::new_fresh(Some(chosen_gateway_id), None) + } else { + GatewaySetup::MustLoad + }; // Setup gateway by either registering a new one, or reusing exiting keys let key_store = OnDiskKeys::new(config.storage_paths.common_paths.keys.clone()); From 4af70ef255647c031f504e929db0fbfb74fe40d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Thu, 22 Jun 2023 10:55:35 +0200 Subject: [PATCH 17/18] nym-connect: medium speed setting (#3585) * Lock files * Add flag to disable cover traffic * Add flag to disable per hop delays * Add flag to enable mixed size packets * Add meta flag to set medium speed * Special case zero averge hop delay to be exactly zero * Extract out generate_hop_delays function --- Cargo.lock | 3 +++ clients/webassembly/Cargo.lock | 17 ++++++++++++++--- common/nymsphinx/acknowledgements/Cargo.toml | 5 +++-- .../acknowledgements/src/surb_ack.rs | 4 ++-- common/nymsphinx/anonymous-replies/Cargo.toml | 1 + .../anonymous-replies/src/reply_surb.rs | 4 ++-- common/nymsphinx/cover/Cargo.toml | 3 ++- common/nymsphinx/cover/src/lib.rs | 4 ++-- common/nymsphinx/routing/src/lib.rs | 12 +++++++++++- common/nymsphinx/src/preparer/mod.rs | 4 ++-- nym-connect/desktop/Cargo.lock | 16 ++++++++++++++-- nym-connect/desktop/src-tauri/Cargo.toml | 1 + nym-connect/desktop/src-tauri/src/main.rs | 5 +++++ nym-connect/desktop/src-tauri/src/tasks.rs | 19 ++++++++++++++++++- nym-wallet/Cargo.lock | 15 +++++++++++++-- 15 files changed, 93 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 98a70afd7b..e0f32dda3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4404,6 +4404,7 @@ dependencies = [ "nym-pemstore", "nym-sphinx-addressing", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3", @@ -4431,6 +4432,7 @@ dependencies = [ "nym-crypto", "nym-sphinx-addressing", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3", @@ -4462,6 +4464,7 @@ dependencies = [ "nym-sphinx-chunking", "nym-sphinx-forwarding", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3", diff --git a/clients/webassembly/Cargo.lock b/clients/webassembly/Cargo.lock index c7792f6697..e87614acf9 100644 --- a/clients/webassembly/Cargo.lock +++ b/clients/webassembly/Cargo.lock @@ -2240,7 +2240,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "0.5.0" +version = "0.6.0" dependencies = [ "atty", "clap", @@ -2255,7 +2255,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.1.14" +version = "1.1.15" dependencies = [ "async-trait", "base64 0.21.2", @@ -2300,7 +2300,7 @@ dependencies = [ [[package]] name = "nym-client-wasm" -version = "1.1.0" +version = "1.1.1" dependencies = [ "anyhow", "async-trait", @@ -2884,6 +2884,7 @@ dependencies = [ "nym-service-provider-directory-common", "nym-vesting-contract", "nym-vesting-contract-common", + "openssl", "prost", "reqwest", "serde", @@ -2974,6 +2975,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "111.26.0+1.1.1u" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.87" @@ -2982,6 +2992,7 @@ checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] diff --git a/common/nymsphinx/acknowledgements/Cargo.toml b/common/nymsphinx/acknowledgements/Cargo.toml index a54f3d6fd0..95b3d8b30c 100644 --- a/common/nymsphinx/acknowledgements/Cargo.toml +++ b/common/nymsphinx/acknowledgements/Cargo.toml @@ -15,11 +15,12 @@ thiserror = { workspace = true } zeroize = { workspace = true } nym-crypto = { path = "../../crypto", features = ["symmetric", "rand"] } +nym-pemstore = { path = "../../pemstore" } nym-sphinx-addressing = { path = "../addressing" } nym-sphinx-params = { path = "../params" } +nym-sphinx-routing = { path = "../routing" } nym-sphinx-types = { path = "../types" } -nym-pemstore = { path = "../../pemstore" } nym-topology = { path = "../../topology" } [features] -serde = ["serde_crate", "generic-array"] \ No newline at end of file +serde = ["serde_crate", "generic-array"] diff --git a/common/nymsphinx/acknowledgements/src/surb_ack.rs b/common/nymsphinx/acknowledgements/src/surb_ack.rs index 6fb5b26c18..e623d4e738 100644 --- a/common/nymsphinx/acknowledgements/src/surb_ack.rs +++ b/common/nymsphinx/acknowledgements/src/surb_ack.rs @@ -9,7 +9,7 @@ use nym_sphinx_addressing::nodes::{ }; use nym_sphinx_params::packet_sizes::PacketSize; use nym_sphinx_params::{PacketType, DEFAULT_NUM_MIX_HOPS}; -use nym_sphinx_types::delays::{self, Delay}; +use nym_sphinx_types::delays::Delay; use nym_sphinx_types::{NymPacket, NymPacketError, MIN_PACKET_SIZE}; use nym_topology::{NymTopology, NymTopologyError}; use rand::{CryptoRng, RngCore}; @@ -51,7 +51,7 @@ impl SurbAck { { let route = topology.random_route_to_gateway(rng, DEFAULT_NUM_MIX_HOPS, recipient.gateway())?; - let delays = delays::generate_from_average_duration(route.len(), average_delay); + let delays = nym_sphinx_routing::generate_hop_delays(average_delay, route.len()); let destination = recipient.as_sphinx_destination(); let surb_ack_payload = prepare_identifier(rng, ack_key, marshaled_fragment_id); diff --git a/common/nymsphinx/anonymous-replies/Cargo.toml b/common/nymsphinx/anonymous-replies/Cargo.toml index 39d16f0b50..49367da152 100644 --- a/common/nymsphinx/anonymous-replies/Cargo.toml +++ b/common/nymsphinx/anonymous-replies/Cargo.toml @@ -16,6 +16,7 @@ thiserror = "1" nym-crypto = { path = "../../crypto", features = ["symmetric", "rand"] } nym-sphinx-addressing = { path = "../addressing" } nym-sphinx-params = { path = "../params" } +nym-sphinx-routing = { path = "../routing" } nym-sphinx-types = { path = "../types" } nym-topology = { path = "../../topology" } diff --git a/common/nymsphinx/anonymous-replies/src/reply_surb.rs b/common/nymsphinx/anonymous-replies/src/reply_surb.rs index 82fc8ea573..877e83023d 100644 --- a/common/nymsphinx/anonymous-replies/src/reply_surb.rs +++ b/common/nymsphinx/anonymous-replies/src/reply_surb.rs @@ -7,7 +7,7 @@ use nym_sphinx_addressing::clients::Recipient; use nym_sphinx_addressing::nodes::{NymNodeRoutingAddress, MAX_NODE_ADDRESS_UNPADDED_LEN}; use nym_sphinx_params::packet_sizes::PacketSize; use nym_sphinx_params::{PacketType, ReplySurbKeyDigestAlgorithm, DEFAULT_NUM_MIX_HOPS}; -use nym_sphinx_types::{delays, NymPacket, SURBMaterial, SphinxError, SURB}; +use nym_sphinx_types::{NymPacket, SURBMaterial, SphinxError, SURB}; use nym_topology::{NymTopology, NymTopologyError}; use rand::{CryptoRng, RngCore}; use serde::de::{Error as SerdeError, Visitor}; @@ -96,7 +96,7 @@ impl ReplySurb { { let route = topology.random_route_to_gateway(rng, DEFAULT_NUM_MIX_HOPS, recipient.gateway())?; - let delays = delays::generate_from_average_duration(route.len(), average_delay); + let delays = nym_sphinx_routing::generate_hop_delays(average_delay, route.len()); let destination = recipient.as_sphinx_destination(); let surb_material = SURBMaterial::new(route, delays, destination); diff --git a/common/nymsphinx/cover/Cargo.toml b/common/nymsphinx/cover/Cargo.toml index f1558d3676..e700327c93 100644 --- a/common/nymsphinx/cover/Cargo.toml +++ b/common/nymsphinx/cover/Cargo.toml @@ -15,7 +15,8 @@ nym-crypto = { path = "../../crypto" } nym-sphinx-acknowledgements = { path = "../acknowledgements" } nym-sphinx-addressing = { path = "../addressing" } nym-sphinx-chunking = { path = "../chunking" } -nym-sphinx-params = { path = "../params" } nym-sphinx-forwarding = { path = "../forwarding" } +nym-sphinx-params = { path = "../params" } +nym-sphinx-routing = { path = "../routing" } nym-sphinx-types = { path = "../types" } nym-topology = { path = "../../topology" } diff --git a/common/nymsphinx/cover/src/lib.rs b/common/nymsphinx/cover/src/lib.rs index bd2714c3ac..05f4cffe33 100644 --- a/common/nymsphinx/cover/src/lib.rs +++ b/common/nymsphinx/cover/src/lib.rs @@ -13,7 +13,7 @@ use nym_sphinx_params::packet_sizes::PacketSize; use nym_sphinx_params::{ PacketEncryptionAlgorithm, PacketHkdfAlgorithm, PacketType, DEFAULT_NUM_MIX_HOPS, }; -use nym_sphinx_types::{delays, NymPacket}; +use nym_sphinx_types::NymPacket; use nym_topology::{NymTopology, NymTopologyError}; use rand::{CryptoRng, RngCore}; use std::convert::TryFrom; @@ -120,7 +120,7 @@ where let route = topology.random_route_to_gateway(rng, DEFAULT_NUM_MIX_HOPS, full_address.gateway())?; - let delays = delays::generate_from_average_duration(route.len(), average_packet_delay); + let delays = nym_sphinx_routing::generate_hop_delays(average_packet_delay, route.len()); let destination = full_address.as_sphinx_destination(); let first_hop_address = diff --git a/common/nymsphinx/routing/src/lib.rs b/common/nymsphinx/routing/src/lib.rs index a7067f252c..e8881b409d 100644 --- a/common/nymsphinx/routing/src/lib.rs +++ b/common/nymsphinx/routing/src/lib.rs @@ -1,8 +1,10 @@ // Copyright 2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 +use std::time::Duration; + use nym_sphinx_addressing::clients::Recipient; -use nym_sphinx_types::Node; +use nym_sphinx_types::{delays, Delay, Node}; use thiserror::Error; pub trait SphinxRouteMaker { @@ -41,3 +43,11 @@ impl SphinxRouteMaker for Vec { } } } + +pub fn generate_hop_delays(average_packet_delay: Duration, num_hops: usize) -> Vec { + if average_packet_delay.is_zero() { + vec![nym_sphinx_types::Delay::new_from_millis(0); num_hops] + } else { + delays::generate_from_average_duration(num_hops, average_packet_delay) + } +} diff --git a/common/nymsphinx/src/preparer/mod.rs b/common/nymsphinx/src/preparer/mod.rs index e97a9d011f..64b8de3ae4 100644 --- a/common/nymsphinx/src/preparer/mod.rs +++ b/common/nymsphinx/src/preparer/mod.rs @@ -14,7 +14,7 @@ use nym_sphinx_chunking::fragment::{Fragment, FragmentIdentifier}; use nym_sphinx_forwarding::packet::MixPacket; use nym_sphinx_params::packet_sizes::PacketSize; use nym_sphinx_params::{PacketType, ReplySurbKeyDigestAlgorithm, DEFAULT_NUM_MIX_HOPS}; -use nym_sphinx_types::{delays, Delay, NymPacket}; +use nym_sphinx_types::{Delay, NymPacket}; use nym_topology::{NymTopology, NymTopologyError}; use rand::{CryptoRng, Rng}; use std::convert::TryFrom; @@ -233,7 +233,7 @@ pub trait FragmentPreparer { // including set of delays let delays = - delays::generate_from_average_duration(route.len(), self.average_packet_delay()); + nym_sphinx_routing::generate_hop_delays(self.average_packet_delay(), route.len()); // create the actual sphinx packet here. With valid route and correct payload size, // there's absolutely no reason for this call to fail. diff --git a/nym-connect/desktop/Cargo.lock b/nym-connect/desktop/Cargo.lock index a3e407020a..e15065fe12 100644 --- a/nym-connect/desktop/Cargo.lock +++ b/nym-connect/desktop/Cargo.lock @@ -3220,7 +3220,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "0.5.0" +version = "0.6.0" dependencies = [ "atty", "clap", @@ -3235,7 +3235,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.1.14" +version = "1.1.15" dependencies = [ "async-trait", "base64 0.21.2", @@ -3365,6 +3365,7 @@ dependencies = [ "nym-credential-storage", "nym-crypto", "nym-socks5-client-core", + "nym-sphinx", "nym-task", "pretty_env_logger", "rand 0.8.5", @@ -3906,6 +3907,7 @@ dependencies = [ "nym-service-provider-directory-common", "nym-vesting-contract", "nym-vesting-contract-common", + "openssl", "prost", "reqwest", "serde", @@ -4045,6 +4047,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "111.26.0+1.1.1u" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.82" @@ -4054,6 +4065,7 @@ dependencies = [ "autocfg", "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] diff --git a/nym-connect/desktop/src-tauri/Cargo.toml b/nym-connect/desktop/src-tauri/Cargo.toml index a27c6ccc55..13324c003c 100644 --- a/nym-connect/desktop/src-tauri/Cargo.toml +++ b/nym-connect/desktop/src-tauri/Cargo.toml @@ -53,6 +53,7 @@ nym-crypto = { path = "../../../common/crypto" } nym-credential-storage = { path = "../../../common/credential-storage" } nym-bin-common = { path = "../../../common/bin-common"} nym-socks5-client-core = { path = "../../../common/socks5-client-core" } +nym-sphinx = { path = "../../../common/nymsphinx" } nym-task = { path = "../../../common/task" } [dev-dependencies] diff --git a/nym-connect/desktop/src-tauri/src/main.rs b/nym-connect/desktop/src-tauri/src/main.rs index aef1f08fae..3ea171f279 100644 --- a/nym-connect/desktop/src-tauri/src/main.rs +++ b/nym-connect/desktop/src-tauri/src/main.rs @@ -25,6 +25,11 @@ mod tasks; mod window; fn main() { + if std::env::var("NYM_CONNECT_ENABLE_MEDIUM").is_ok() { + std::env::set_var("NYM_CONNECT_DISABLE_COVER", "1"); + std::env::set_var("NYM_CONNECT_ENABLE_MIXED_SIZE_PACKETS", "1"); + std::env::set_var("NYM_CONNECT_DISABLE_PER_HOP_DELAYS", "1"); + } setup_env(None); println!("Starting up..."); diff --git a/nym-connect/desktop/src-tauri/src/tasks.rs b/nym-connect/desktop/src-tauri/src/tasks.rs index 9e70500dd0..1645bb5b60 100644 --- a/nym-connect/desktop/src-tauri/src/tasks.rs +++ b/nym-connect/desktop/src-tauri/src/tasks.rs @@ -4,8 +4,10 @@ use nym_client_core::client::base_client::storage::{MixnetClientStorage, OnDiskP use nym_client_core::{config::GatewayEndpointConfig, error::ClientCoreStatusMessage}; use nym_socks5_client_core::NymClient as Socks5NymClient; use nym_socks5_client_core::Socks5ControlMessageSender; +use nym_sphinx::params::PacketSize; use nym_task::manager::TaskStatus; use std::sync::Arc; +use std::time::Duration; use tap::TapFallible; use tokio::sync::RwLock; @@ -39,7 +41,7 @@ pub async fn start_nym_socks5_client( GatewayEndpointConfig, )> { log::info!("Loading config from file: {id}"); - let config = Config::read_from_default_path(id) + let mut config = Config::read_from_default_path(id) .tap_err(|_| log::warn!("Failed to load configuration file"))?; let storage = @@ -53,6 +55,21 @@ pub async fn start_nym_socks5_client( .expect("failed to load gateway details") .into(); + // Disable both the loop cover traffic that runs in the background as well as the Poisson + // process that injects cover traffic into the traffic stream. + if std::env::var("NYM_CONNECT_DISABLE_COVER").is_ok() { + config.core.base.set_no_cover_traffic(); + } + + if std::env::var("NYM_CONNECT_ENABLE_MIXED_SIZE_PACKETS").is_ok() { + config.core.base.debug.traffic.secondary_packet_size = Some(PacketSize::ExtendedPacket16); + } + + if std::env::var("NYM_CONNECT_DISABLE_PER_HOP_DELAY").is_ok() { + config.core.base.debug.traffic.average_packet_delay = Duration::ZERO; + config.core.base.debug.acknowledgements.average_ack_delay = Duration::ZERO; + } + log::info!("Starting socks5 client"); // Channel to send control messages to the socks5 client diff --git a/nym-wallet/Cargo.lock b/nym-wallet/Cargo.lock index 218ce62300..70502fc84a 100644 --- a/nym-wallet/Cargo.lock +++ b/nym-wallet/Cargo.lock @@ -2915,7 +2915,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "0.5.0" +version = "0.6.0" dependencies = [ "atty", "clap", @@ -3220,6 +3220,7 @@ dependencies = [ "nym-service-provider-directory-common", "nym-vesting-contract", "nym-vesting-contract-common", + "openssl", "prost", "reqwest", "serde", @@ -3297,7 +3298,7 @@ dependencies = [ [[package]] name = "nym_wallet" -version = "1.2.4" +version = "1.2.5" dependencies = [ "async-trait", "base64 0.13.1", @@ -3447,6 +3448,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "111.26.0+1.1.1u" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efc62c9f12b22b8f5208c23a7200a442b2e5999f8bdf80233852122b5a4f6f37" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.80" @@ -3456,6 +3466,7 @@ dependencies = [ "autocfg", "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] From 31bc439f650df047ac7b027173a346dffd6b9e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Thu, 22 Jun 2023 10:59:08 +0200 Subject: [PATCH 18/18] Cargo.lock --- clients/webassembly/Cargo.lock | 3 +++ nym-connect/desktop/Cargo.lock | 3 +++ 2 files changed, 6 insertions(+) diff --git a/clients/webassembly/Cargo.lock b/clients/webassembly/Cargo.lock index e87614acf9..d0ba9718c5 100644 --- a/clients/webassembly/Cargo.lock +++ b/clients/webassembly/Cargo.lock @@ -2697,6 +2697,7 @@ dependencies = [ "nym-pemstore", "nym-sphinx-addressing", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3", @@ -2723,6 +2724,7 @@ dependencies = [ "nym-crypto", "nym-sphinx-addressing", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3", @@ -2753,6 +2755,7 @@ dependencies = [ "nym-sphinx-chunking", "nym-sphinx-forwarding", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3", diff --git a/nym-connect/desktop/Cargo.lock b/nym-connect/desktop/Cargo.lock index e15065fe12..2ac9e0852a 100644 --- a/nym-connect/desktop/Cargo.lock +++ b/nym-connect/desktop/Cargo.lock @@ -3736,6 +3736,7 @@ dependencies = [ "nym-pemstore", "nym-sphinx-addressing", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3", @@ -3761,6 +3762,7 @@ dependencies = [ "nym-crypto", "nym-sphinx-addressing", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3", @@ -3791,6 +3793,7 @@ dependencies = [ "nym-sphinx-chunking", "nym-sphinx-forwarding", "nym-sphinx-params", + "nym-sphinx-routing", "nym-sphinx-types", "nym-topology", "rand 0.7.3",