foomp
This commit is contained in:
Generated
+9
-9
@@ -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
@@ -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"]
|
||||
|
||||
@@ -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(
|
||||
|
||||
Generated
+1
@@ -1248,6 +1248,7 @@ name = "nym-name-service-common"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"cosmwasm-std",
|
||||
"schemars",
|
||||
"serde",
|
||||
]
|
||||
|
||||
|
||||
Generated
+1
@@ -3528,6 +3528,7 @@ name = "nym-name-service-common"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"cosmwasm-std",
|
||||
"schemars",
|
||||
"serde",
|
||||
]
|
||||
|
||||
|
||||
Generated
+5141
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user