This commit is contained in:
Jędrzej Stuczyński
2023-05-11 12:01:20 +01:00
parent c98dbc0407
commit 1f61b3d4ef
8 changed files with 5319 additions and 19 deletions
Generated
+9 -9
View File
@@ -1640,7 +1640,7 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
name = "explorer-api"
version = "1.1.17"
version = "1.1.18"
dependencies = [
"chrono",
"clap 4.2.7",
@@ -3069,7 +3069,7 @@ dependencies = [
[[package]]
name = "nym-api"
version = "1.1.18"
version = "1.1.19"
dependencies = [
"anyhow",
"async-trait",
@@ -3203,7 +3203,7 @@ dependencies = [
[[package]]
name = "nym-cli"
version = "1.1.17"
version = "1.1.18"
dependencies = [
"anyhow",
"base64 0.13.1",
@@ -3265,7 +3265,7 @@ dependencies = [
[[package]]
name = "nym-client"
version = "1.1.17"
version = "1.1.18"
dependencies = [
"clap 4.2.7",
"dirs",
@@ -3534,7 +3534,7 @@ dependencies = [
[[package]]
name = "nym-gateway"
version = "1.1.17"
version = "1.1.18"
dependencies = [
"anyhow",
"async-trait",
@@ -3682,7 +3682,7 @@ dependencies = [
[[package]]
name = "nym-mixnode"
version = "1.1.18"
version = "1.1.19"
dependencies = [
"anyhow",
"bs58",
@@ -3793,7 +3793,7 @@ dependencies = [
[[package]]
name = "nym-network-requester"
version = "1.1.17"
version = "1.1.18"
dependencies = [
"async-file-watcher",
"async-trait",
@@ -3835,7 +3835,7 @@ dependencies = [
[[package]]
name = "nym-network-statistics"
version = "1.1.17"
version = "1.1.18"
dependencies = [
"dirs",
"log",
@@ -3970,7 +3970,7 @@ dependencies = [
[[package]]
name = "nym-socks5-client"
version = "1.1.17"
version = "1.1.18"
dependencies = [
"clap 4.2.7",
"lazy_static",
+1 -1
View File
@@ -100,7 +100,7 @@ default-members = [
"explorer-api",
]
exclude = ["explorer", "contracts", "clients/webassembly", "nym-wallet", "nym-connect/mobile/src-tauri", "nym-connect/desktop", "cpu-cycles"]
exclude = ["socks5-c", "explorer", "contracts", "clients/webassembly", "nym-wallet", "nym-connect/mobile/src-tauri", "nym-connect/desktop", "cpu-cycles"]
[workspace.package]
authors = ["Nym Technologies SA"]
+28
View File
@@ -219,6 +219,34 @@ impl NymClient {
res
}
pub async fn run_and_listen2(self) -> Result<(), Box<dyn Error + Send + Sync>> {
// Start the main task
let mut shutdown = self.start().await?;
// Listen to status messages from task, that we forward back to the caller
let res = tokio::select! {
biased;
Some(msg) = shutdown.wait_for_error() => {
log::info!("Task error: {:?}", msg);
Err(msg)
}
_ = tokio::signal::ctrl_c() => {
log::info!("Received SIGINT");
Ok(())
},
};
log::info!("Sending shutdown");
shutdown.signal_shutdown().ok();
log::info!("Waiting for tasks to finish... (Press ctrl-c to force)");
shutdown.wait_for_shutdown().await;
log::info!("Stopping nym-socks5-client");
res
}
pub async fn start(self) -> Result<TaskManager, Socks5ClientCoreError> {
#[cfg(not(target_os = "android"))]
let base_builder = BaseClientBuilder::new_from_base_config(
+1
View File
@@ -1248,6 +1248,7 @@ name = "nym-name-service-common"
version = "0.1.0"
dependencies = [
"cosmwasm-std",
"schemars",
"serde",
]
+1
View File
@@ -3528,6 +3528,7 @@ name = "nym-name-service-common"
version = "0.1.0"
dependencies = [
"cosmwasm-std",
"schemars",
"serde",
]
+5141
View File
File diff suppressed because it is too large Load Diff
+35
View File
@@ -6,3 +6,38 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0"
bip39 = { version = "2.0.0", features = ["zeroize"] }
dirs = "4.0"
eyre = "0.6.5"
futures = "0.3"
itertools = "0.10.5"
rand = "0.8"
reqwest = { version = "0.11", features = ["json", "socks"] }
rust-embed = { version = "6.4.2", features = ["include-exclude"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_repr = "0.1"
tap = "1.0.1"
# tauri = { git = "https://github.com/tauri-apps/tauri", branch = "next", features = ["clipboard-write-text", "native-tls-vendored", "notification-all", "shell-open"] }
tendermint-rpc = "0.23.0"
thiserror = "1.0"
time = { version = "0.3.17", features = ["local-offset"] }
tokio = { version = "1.24.1", features = ["sync", "time"] }
url = "2.2"
yaml-rust = "0.4"
nym-client-core = { path = "../common/client-core", default-features = false }
nym-api-requests = { path = "../nym-api/nym-api-requests" }
nym-contracts-common = { path = "../common/cosmwasm-smart-contracts/contracts-common"}
nym-config-common = { path = "../common/config", package = "nym-config" }
nym-credential-storage = { path = "../common/credential-storage" }
nym-crypto = { path = "../common/crypto" }
nym-bin-common = { path = "../common/bin-common"}
nym-socks5-client-core = { path = "../common/socks5-client-core", default-features = false }
nym-task = { path = "../common/task" }
[lib]
name = "my_rust_module"
crate-type = ["staticlib"]
+103 -9
View File
@@ -1,14 +1,108 @@
pub fn add(left: usize, right: usize) -> usize {
left + right
use nym_socks5_client_core::NymClient as Socks5NymClient;
use std::ffi::*;
#[no_mangle]
pub extern "C" fn run_client() {
let service_provider = "".to_string();
let gateway = "".to_string();
let rt = tokio::runtime::Runtime::new().unwrap();
rt.block_on(async move {
let (config, keys) = init_socks5_config(service_provider, gateway).await.unwrap();
let socks5_client = Socks5NymClient::new_with_keys(config.socks5, Some(keys));
socks5_client.run_and_listen2().await
})
.unwrap();
}
#[cfg(test)]
mod tests {
use super::*;
use anyhow::Result;
use futures::channel::mpsc;
use nym_client_core::config::{ClientCoreConfigTrait, GatewayEndpointConfig};
use nym_client_core::{client::key_manager::KeyManager, config::Config as BaseConfig};
use nym_config_common::NymConfig;
use nym_credential_storage::ephemeral_storage::EphemeralStorage;
use nym_crypto::asymmetric::identity;
use nym_socks5_client_core::config::{Config as Socks5Config, Socks5};
use nym_socks5_client_core::Socks5ControlMessageSender;
use std::path::PathBuf;
use std::sync::Arc;
use tap::TapFallible;
use tokio::sync::RwLock;
#[test]
fn it_works() {
let result = add(2, 2);
assert_eq!(result, 4);
static SOCKS5_CONFIG_ID: &str = "nym-connect";
#[derive(Debug)]
pub struct Config {
pub socks5: Socks5Config,
}
impl Config {
pub fn new<S: Into<String>>(id: S, provider_mix_address: S) -> Self {
Config {
socks5: Socks5Config::new(id, provider_mix_address),
}
}
#[allow(unused)]
pub fn new_with_port<S: Into<String>>(id: S, provider_mix_address: S, port: u16) -> Self {
Config {
socks5: Socks5Config::new(id, provider_mix_address).with_port(port),
}
}
pub fn get_config(&self) -> &Socks5Config {
&self.socks5
}
pub fn get_socks5(&self) -> &Socks5 {
self.socks5.get_socks5()
}
#[allow(unused)]
pub fn get_socks5_mut(&mut self) -> &mut Socks5 {
self.socks5.get_socks5_mut()
}
pub fn get_base(&self) -> &BaseConfig<Socks5Config> {
self.socks5.get_base()
}
pub fn get_base_mut(&mut self) -> &mut BaseConfig<Socks5Config> {
self.socks5.get_base_mut()
}
}
pub async fn init_socks5_config(
provider_address: String,
chosen_gateway_id: String,
) -> Result<(Config, KeyManager)> {
let mut config = Config::new(SOCKS5_CONFIG_ID, &provider_address);
if let Ok(raw_validators) = std::env::var(nym_config_common::defaults::var_names::NYM_API) {
config
.get_base_mut()
.set_custom_nym_apis(nym_config_common::parse_urls(&raw_validators));
}
let nym_api_endpoints = config.get_base().get_nym_api_endpoints();
let chosen_gateway_id = identity::PublicKey::from_base58_string(chosen_gateway_id)?;
let mut key_manager = nym_client_core::init::new_client_keys();
// Setup gateway and register a new key each time
let gateway = nym_client_core::init::register_with_gateway::<EphemeralStorage>(
&mut key_manager,
nym_api_endpoints,
Some(chosen_gateway_id),
false,
)
.await?;
config.get_base_mut().set_gateway_endpoint(gateway);
let address = *key_manager.identity_keypair().public_key();
Ok((config, key_manager))
}