mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2025-08-10 15:30:14 -04:00
Allow external addr to be specified in ASB CLI param
This commit is contained in:
parent
92e77d1b71
commit
fa4cc82de0
2 changed files with 40 additions and 13 deletions
|
@ -4,6 +4,7 @@ use crate::env;
|
||||||
use crate::env::GetConfig;
|
use crate::env::GetConfig;
|
||||||
use anyhow::{bail, Result};
|
use anyhow::{bail, Result};
|
||||||
use bitcoin::Address;
|
use bitcoin::Address;
|
||||||
|
use libp2p::Multiaddr;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use std::ffi::OsString;
|
use std::ffi::OsString;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
@ -24,12 +25,18 @@ where
|
||||||
let command: RawCommand = args.cmd;
|
let command: RawCommand = args.cmd;
|
||||||
|
|
||||||
let arguments = match command {
|
let arguments = match command {
|
||||||
RawCommand::Start { resume_only } => Arguments {
|
RawCommand::Start {
|
||||||
|
resume_only,
|
||||||
|
external_addr,
|
||||||
|
} => Arguments {
|
||||||
testnet: is_testnet,
|
testnet: is_testnet,
|
||||||
json: is_json,
|
json: is_json,
|
||||||
config_path: config_path(config, is_testnet)?,
|
config_path: config_path(config, is_testnet)?,
|
||||||
env_config: env_config(is_testnet),
|
env_config: env_config(is_testnet),
|
||||||
cmd: Command::Start { resume_only },
|
cmd: Command::Start {
|
||||||
|
resume_only,
|
||||||
|
external_addr,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
RawCommand::History => Arguments {
|
RawCommand::History => Arguments {
|
||||||
testnet: is_testnet,
|
testnet: is_testnet,
|
||||||
|
@ -167,6 +174,7 @@ pub struct Arguments {
|
||||||
pub enum Command {
|
pub enum Command {
|
||||||
Start {
|
Start {
|
||||||
resume_only: bool,
|
resume_only: bool,
|
||||||
|
external_addr: Option<Multiaddr>,
|
||||||
},
|
},
|
||||||
History,
|
History,
|
||||||
WithdrawBtc {
|
WithdrawBtc {
|
||||||
|
@ -234,6 +242,11 @@ pub enum RawCommand {
|
||||||
help = "For maintenance only. When set, no new swap requests will be accepted, but existing unfinished swaps will be resumed."
|
help = "For maintenance only. When set, no new swap requests will be accepted, but existing unfinished swaps will be resumed."
|
||||||
)]
|
)]
|
||||||
resume_only: bool,
|
resume_only: bool,
|
||||||
|
#[structopt(
|
||||||
|
long = "external-addr",
|
||||||
|
help = "Our external address to be used when registering our service with a rendezvous node"
|
||||||
|
)]
|
||||||
|
external_addr: Option<Multiaddr>,
|
||||||
},
|
},
|
||||||
#[structopt(about = "Prints swap-id and the state of each swap ever made.")]
|
#[structopt(about = "Prints swap-id and the state of each swap ever made.")]
|
||||||
History,
|
History,
|
||||||
|
@ -338,7 +351,10 @@ mod tests {
|
||||||
json: false,
|
json: false,
|
||||||
config_path: default_mainnet_conf_path.clone(),
|
config_path: default_mainnet_conf_path.clone(),
|
||||||
env_config: mainnet_env_config,
|
env_config: mainnet_env_config,
|
||||||
cmd: Command::Start { resume_only: false },
|
cmd: Command::Start {
|
||||||
|
resume_only: false,
|
||||||
|
external_addr: None,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
let args = parse_args(raw_ars).unwrap();
|
let args = parse_args(raw_ars).unwrap();
|
||||||
assert_eq!(expected_args, args);
|
assert_eq!(expected_args, args);
|
||||||
|
@ -475,7 +491,10 @@ mod tests {
|
||||||
json: false,
|
json: false,
|
||||||
config_path: default_testnet_conf_path.clone(),
|
config_path: default_testnet_conf_path.clone(),
|
||||||
env_config: testnet_env_config,
|
env_config: testnet_env_config,
|
||||||
cmd: Command::Start { resume_only: false },
|
cmd: Command::Start {
|
||||||
|
resume_only: false,
|
||||||
|
external_addr: None,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
let args = parse_args(raw_ars).unwrap();
|
let args = parse_args(raw_ars).unwrap();
|
||||||
assert_eq!(expected_args, args);
|
assert_eq!(expected_args, args);
|
||||||
|
|
|
@ -107,7 +107,10 @@ async fn main() -> Result<()> {
|
||||||
Seed::from_file_or_generate(&config.data.dir).expect("Could not retrieve/initialize seed");
|
Seed::from_file_or_generate(&config.data.dir).expect("Could not retrieve/initialize seed");
|
||||||
|
|
||||||
match cmd {
|
match cmd {
|
||||||
Command::Start { resume_only } => {
|
Command::Start {
|
||||||
|
resume_only,
|
||||||
|
external_addr,
|
||||||
|
} => {
|
||||||
let bitcoin_wallet = init_bitcoin_wallet(&config, &seed, env_config).await?;
|
let bitcoin_wallet = init_bitcoin_wallet(&config, &seed, env_config).await?;
|
||||||
|
|
||||||
let monero_wallet = init_monero_wallet(&config, env_config).await?;
|
let monero_wallet = init_monero_wallet(&config, env_config).await?;
|
||||||
|
@ -163,14 +166,19 @@ async fn main() -> Result<()> {
|
||||||
|
|
||||||
tracing::info!(peer_id = %swarm.local_peer_id(), "Network layer initialized");
|
tracing::info!(peer_id = %swarm.local_peer_id(), "Network layer initialized");
|
||||||
|
|
||||||
Swarm::dial_addr(&mut swarm, config.rendezvous_node.addr.clone()).with_context(
|
// todo: Option<Multiaddr> is being used as a rendezvous feature toggle.
|
||||||
|| {
|
// The fact that rendezvous is an optional feature could be expressed better.
|
||||||
format!(
|
if let Some(addr) = external_addr {
|
||||||
"Failed to dial rendezvous node addr {}",
|
let _ = Swarm::add_external_address(&mut swarm, addr, AddressScore::Infinite);
|
||||||
config.rendezvous_node.addr
|
Swarm::dial_addr(&mut swarm, config.rendezvous_node.addr.clone()).with_context(
|
||||||
)
|
|| {
|
||||||
},
|
format!(
|
||||||
)?;
|
"Failed to dial rendezvous node addr {}",
|
||||||
|
config.rendezvous_node.addr
|
||||||
|
)
|
||||||
|
},
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
|
||||||
let namespace = if testnet {
|
let namespace = if testnet {
|
||||||
XmrBtcNamespace::Testnet
|
XmrBtcNamespace::Testnet
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue