Skip to content

Commit 21c7ff3

Browse files
authored
Merge b242ddd into eb90bfc
2 parents eb90bfc + b242ddd commit 21c7ff3

File tree

2 files changed

+91
-6
lines changed

2 files changed

+91
-6
lines changed

.github/workflows/netsim_runner.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ jobs:
135135
cp target/${{inputs.build_profile}}/examples/* ../chuck/netsim/bins/
136136
cp target/${{inputs.build_profile}}/examples/transfer ../chuck/netsim/bins/iroh-transfer
137137
cp target/${{inputs.build_profile}}/iroh-relay ../chuck/netsim/bins/iroh-relay
138+
cp target/${{inputs.build_profile}}/iroh-dns-server ../chuck/netsim/bins/iroh-dns-server
138139
cp ../chuck/target/release/chuck ../chuck/netsim/bins/chuck
139140
140141
- name: Get commit sha

iroh/examples/transfer.rs

+90-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use bytes::Bytes;
88
use clap::{Parser, Subcommand};
99
use indicatif::HumanBytes;
1010
use iroh::{
11+
discovery::{dns::DnsDiscovery, pkarr::PkarrPublisher},
1112
endpoint::{ConnectionError, PathSelection},
1213
Endpoint, NodeAddr, RelayMap, RelayMode, RelayUrl, SecretKey,
1314
};
@@ -32,6 +33,10 @@ enum Commands {
3233
relay_url: Option<String>,
3334
#[clap(long, default_value = "false")]
3435
relay_only: bool,
36+
#[clap(long)]
37+
pkarr_relay_url: Option<String>,
38+
#[clap(long)]
39+
dns_origin_domain: Option<String>,
3540
},
3641
Fetch {
3742
#[arg(index = 1)]
@@ -40,6 +45,10 @@ enum Commands {
4045
relay_url: Option<String>,
4146
#[clap(long, default_value = "false")]
4247
relay_only: bool,
48+
#[clap(long)]
49+
pkarr_relay_url: Option<String>,
50+
#[clap(long)]
51+
dns_origin_domain: Option<String>,
4352
},
4453
}
4554

@@ -53,18 +62,46 @@ async fn main() -> anyhow::Result<()> {
5362
size,
5463
relay_url,
5564
relay_only,
56-
} => provide(*size, relay_url.clone(), *relay_only).await?,
65+
pkarr_relay_url,
66+
dns_origin_domain,
67+
} => {
68+
provide(
69+
*size,
70+
relay_url.clone(),
71+
*relay_only,
72+
pkarr_relay_url.clone(),
73+
dns_origin_domain.clone(),
74+
)
75+
.await?
76+
}
5777
Commands::Fetch {
5878
ticket,
5979
relay_url,
6080
relay_only,
61-
} => fetch(ticket, relay_url.clone(), *relay_only).await?,
81+
pkarr_relay_url,
82+
dns_origin_domain,
83+
} => {
84+
fetch(
85+
ticket,
86+
relay_url.clone(),
87+
*relay_only,
88+
pkarr_relay_url.clone(),
89+
dns_origin_domain.clone(),
90+
)
91+
.await?
92+
}
6293
}
6394

6495
Ok(())
6596
}
6697

67-
async fn provide(size: u64, relay_url: Option<String>, relay_only: bool) -> anyhow::Result<()> {
98+
async fn provide(
99+
size: u64,
100+
relay_url: Option<String>,
101+
relay_only: bool,
102+
pkarr_relay_url: Option<String>,
103+
dns_origin_domain: Option<String>,
104+
) -> anyhow::Result<()> {
68105
let secret_key = SecretKey::generate(rand::rngs::OsRng);
69106
let relay_mode = match relay_url {
70107
Some(relay_url) => {
@@ -78,7 +115,28 @@ async fn provide(size: u64, relay_url: Option<String>, relay_only: bool) -> anyh
78115
true => PathSelection::RelayOnly,
79116
false => PathSelection::default(),
80117
};
81-
let endpoint = Endpoint::builder()
118+
119+
let mut endpoint_builder = Endpoint::builder();
120+
121+
if let Some(pkarr_relay_url) = pkarr_relay_url {
122+
let pkarr_relay_url = pkarr_relay_url
123+
.parse()
124+
.context("Invalid pkarr URL provided")?;
125+
126+
let pkarr_discovery_closure = move |secret_key: &SecretKey| {
127+
let pkarr_d = PkarrPublisher::new(secret_key.clone(), pkarr_relay_url);
128+
Some(pkarr_d)
129+
};
130+
endpoint_builder = endpoint_builder.add_discovery(pkarr_discovery_closure);
131+
}
132+
133+
if let Some(dns_origin_domain) = dns_origin_domain {
134+
let dns_discovery_closure = move |_: &SecretKey| Some(DnsDiscovery::new(dns_origin_domain));
135+
136+
endpoint_builder = endpoint_builder.add_discovery(dns_discovery_closure);
137+
}
138+
139+
let endpoint = endpoint_builder
82140
.secret_key(secret_key)
83141
.alpns(vec![TRANSFER_ALPN.to_vec()])
84142
.relay_mode(relay_mode)
@@ -160,7 +218,13 @@ async fn provide(size: u64, relay_url: Option<String>, relay_only: bool) -> anyh
160218
Ok(())
161219
}
162220

163-
async fn fetch(ticket: &str, relay_url: Option<String>, relay_only: bool) -> anyhow::Result<()> {
221+
async fn fetch(
222+
ticket: &str,
223+
relay_url: Option<String>,
224+
relay_only: bool,
225+
pkarr_relay_url: Option<String>,
226+
dns_origin_domain: Option<String>,
227+
) -> anyhow::Result<()> {
164228
let ticket: NodeTicket = ticket.parse()?;
165229
let secret_key = SecretKey::generate(rand::rngs::OsRng);
166230
let relay_mode = match relay_url {
@@ -175,7 +239,27 @@ async fn fetch(ticket: &str, relay_url: Option<String>, relay_only: bool) -> any
175239
true => PathSelection::RelayOnly,
176240
false => PathSelection::default(),
177241
};
178-
let endpoint = Endpoint::builder()
242+
let mut endpoint_builder = Endpoint::builder();
243+
244+
if let Some(pkarr_relay_url) = pkarr_relay_url {
245+
let pkarr_relay_url = pkarr_relay_url
246+
.parse()
247+
.context("Invalid pkarr URL provided")?;
248+
249+
let pkarr_discovery_closure = move |secret_key: &SecretKey| {
250+
let pkarr_d = PkarrPublisher::new(secret_key.clone(), pkarr_relay_url);
251+
Some(pkarr_d)
252+
};
253+
endpoint_builder = endpoint_builder.add_discovery(pkarr_discovery_closure);
254+
}
255+
256+
if let Some(dns_origin_domain) = dns_origin_domain {
257+
let dns_discovery_closure = move |_: &SecretKey| Some(DnsDiscovery::new(dns_origin_domain));
258+
259+
endpoint_builder = endpoint_builder.add_discovery(dns_discovery_closure);
260+
}
261+
262+
let endpoint = endpoint_builder
179263
.secret_key(secret_key)
180264
.alpns(vec![TRANSFER_ALPN.to_vec()])
181265
.relay_mode(relay_mode)

0 commit comments

Comments
 (0)