create socks proxy with --i2p-socks-proxy-host cli arg

This commit is contained in:
creating2morrow 2023-06-28 21:08:18 -04:00
parent 9077a61cfd
commit b8505d3c4e
4 changed files with 40 additions and 35 deletions

View file

@ -170,6 +170,10 @@ pub struct Args {
)] )]
pub i2p_normal: bool, pub i2p_normal: bool,
/// i2p anonymous inbound port /// i2p anonymous inbound port
#[arg(long, help = "Set i2p anon inbound connectivity", default_value = "38089")] #[arg(
long,
help = "Set i2p anon inbound connectivity",
default_value = "38089"
)]
pub anon_inbound_port: u16, pub anon_inbound_port: u16,
} }

View file

@ -74,11 +74,11 @@ async fn find_tunnels() {
debug!("i2p tunnels: {}", contents); debug!("i2p tunnels: {}", contents);
let has_app_tunnel = contents.contains(&format!("{}", app_port)); let has_app_tunnel = contents.contains(&format!("{}", app_port));
let proxy_port = get_i2p_proxy_port(); let proxy_port = get_i2p_proxy_port();
let tx_proxy_port = monero::get_daemon_port(); let socks_proxy_port = get_i2p_socks_proxy_port();
let has_http_tunnel = contents.contains(&proxy_port); let has_http_tunnel = contents.contains(&proxy_port);
let has_tx_proxy_tunnel = contents.contains(&format!("{}", &tx_proxy_port)); let has_socks_proxy_tunnel = contents.contains(&format!("{}", &socks_proxy_port));
let has_anon_inbound_tunnel = contents.contains(&format!("{}", args.anon_inbound_port)); let has_anon_inbound_tunnel = contents.contains(&format!("{}", args.anon_inbound_port));
if !has_app_tunnel || !has_http_tunnel || !has_anon_inbound_tunnel { if !has_app_tunnel || !has_http_tunnel || !has_anon_inbound_tunnel || !has_socks_proxy_tunnel {
tokio::time::sleep(Duration::new(120, 0)).await; tokio::time::sleep(Duration::new(120, 0)).await;
} }
if !has_app_tunnel { if !has_app_tunnel {
@ -93,13 +93,9 @@ async fn find_tunnels() {
debug!("creating anon inbound tunnel"); debug!("creating anon inbound tunnel");
create_anon_inbound_tunnel(); create_anon_inbound_tunnel();
} }
let env = utils::get_release_env(); if !has_socks_proxy_tunnel {
// only use tx proxy on mainnet debug!("creating socks proxy tunnel");
if env == utils::ReleaseEnvironment::Production { create_tx_proxy_tunnel();
if !has_tx_proxy_tunnel && !utils::is_using_remote_node() {
debug!("creating tx proxy tunnel");
create_tx_proxy_tunnel();
}
} }
} }
@ -146,9 +142,9 @@ fn create_tunnel() {
debug!("{:?}", output.stdout); debug!("{:?}", output.stdout);
} }
/// Create an i2p tunnel for the monero tx proxy /// Create an i2p tunnel for the monero wallet socks proxy
fn create_tx_proxy_tunnel() { fn create_tx_proxy_tunnel() {
info!("creating monerod tx proxy tunnel"); info!("creating monerod socks proxy tunnel");
let args = args::Args::parse(); let args = args::Args::parse();
let path = args.i2p_zero_dir; let path = args.i2p_zero_dir;
let output = Command::new(format!("{}/router/bin/tunnel-control.sh", path)) let output = Command::new(format!("{}/router/bin/tunnel-control.sh", path))
@ -158,7 +154,7 @@ fn create_tx_proxy_tunnel() {
&format!("{}", get_i2p_socks_proxy_port()), &format!("{}", get_i2p_socks_proxy_port()),
]) ])
.spawn() .spawn()
.expect("i2p-zero failed to create a tx proxy tunnel"); .expect("i2p-zero failed to create a socks proxy tunnel");
debug!("{:?}", output.stdout); debug!("{:?}", output.stdout);
} }

View file

@ -193,9 +193,15 @@ pub fn start_rpc() {
let rpc_login = format!("{}:{}", &login.username, &login.credential); let rpc_login = format!("{}:{}", &login.username, &login.credential);
let release_env = utils::get_release_env(); let release_env = utils::get_release_env();
let is_dev = release_env == utils::ReleaseEnvironment::Development; let is_dev = release_env == utils::ReleaseEnvironment::Development;
let wallet_path = if is_dev { ".neveko/stagenet/wallet/" } else { ".neveko/wallet/" }; let wallet_path = if is_dev {
".neveko/stagenet/wallet/"
} else {
".neveko/wallet/"
};
let wallet_dir = format!( let wallet_dir = format!(
"/home/{}/{}", std::env::var("USER").unwrap_or(String::from("user")), wallet_path "/home/{}/{}",
std::env::var("USER").unwrap_or(String::from("user")),
wallet_path
); );
if cli_args.remote_node && !&daemon_address.contains(".i2p") { if cli_args.remote_node && !&daemon_address.contains(".i2p") {
warn!("invalid i2p monero remote node detected"); warn!("invalid i2p monero remote node detected");
@ -208,24 +214,24 @@ pub fn start_rpc() {
proxy_host = v.remove(1); proxy_host = v.remove(1);
} }
let mut args = vec![ let mut args = vec![
"--rpc-bind-port", "--rpc-bind-port",
&port, &port,
"--wallet-dir", "--wallet-dir",
&wallet_dir, &wallet_dir,
"--rpc-login", "--rpc-login",
&rpc_login, &rpc_login,
]; ];
if cli_args.remote_node { if cli_args.remote_node {
args.push("--proxy"); args.push("--proxy");
args.push(&proxy_host); args.push(&proxy_host);
args.push("--daemon-address"); args.push("--daemon-address");
args.push(&daemon_address); args.push(&daemon_address);
args.push("--trusted-daemon"); args.push("--trusted-daemon");
args.push("--daemon-ssl-allow-any-cert"); args.push("--daemon-ssl-allow-any-cert");
} else { } else {
args.push("--daemon-address"); args.push("--daemon-address");
args.push(&daemon_address); args.push(&daemon_address);
} }
if is_dev { if is_dev {
args.push("--stagenet"); args.push("--stagenet");
let output = Command::new(format!("{}/monero-wallet-rpc", bin_dir)) let output = Command::new(format!("{}/monero-wallet-rpc", bin_dir))

View file

@ -242,7 +242,6 @@ pub fn get_i2p_wallet_proxy_host() -> String {
args.i2p_socks_proxy_host args.i2p_socks_proxy_host
} }
/// app auth port /// app auth port
pub fn get_app_auth_port() -> u16 { pub fn get_app_auth_port() -> u16 {
let args = args::Args::parse(); let args = args::Args::parse();