Skip to content

Commit

Permalink
Use n0 default discovery
Browse files Browse the repository at this point in the history
- PkarrPublisher and DnsDiscovery when listening
- Just DnsDiscovery when connecting
  • Loading branch information
rklaehn committed May 3, 2024
1 parent 8da09fc commit 7491920
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@
use anyhow::Context;
use clap::{Parser, Subcommand};
use dumbpipe::NodeTicket;
use iroh_net::{key::SecretKey, magic_endpoint::get_remote_node_id, MagicEndpoint, NodeAddr};
use iroh_net::{
discovery::{dns::DnsDiscovery, pkarr_publish::PkarrPublisher, ConcurrentDiscovery, Discovery},
key::SecretKey,
magic_endpoint::get_remote_node_id,
MagicEndpoint, NodeAddr,
};
use std::{
io,
net::{SocketAddr, ToSocketAddrs},
Expand Down Expand Up @@ -254,7 +259,9 @@ async fn forward_bidi(

async fn listen_stdio(args: ListenArgs) -> anyhow::Result<()> {
let secret_key = get_or_create_secret()?;
let discovery = n0_discovery(secret_key.clone());
let endpoint = MagicEndpoint::builder()
.discovery(discovery)
.alpns(vec![args.common.alpn()?])
.secret_key(secret_key)
.bind(args.common.magic_port)
Expand Down Expand Up @@ -316,8 +323,10 @@ async fn listen_stdio(args: ListenArgs) -> anyhow::Result<()> {

async fn connect_stdio(args: ConnectArgs) -> anyhow::Result<()> {
let secret_key = get_or_create_secret()?;
let discovery = Box::new(DnsDiscovery::n0_dns());
let endpoint = MagicEndpoint::builder()
.secret_key(secret_key)
.discovery(discovery)
.alpns(vec![])
.bind(args.common.magic_port)
.await?;
Expand Down Expand Up @@ -349,9 +358,11 @@ async fn connect_tcp(args: ConnectTcpArgs) -> anyhow::Result<()> {
.to_socket_addrs()
.context(format!("invalid host string {}", args.addr))?;
let secret_key = get_or_create_secret()?;
let discovery = Box::new(DnsDiscovery::n0_dns());
let endpoint = MagicEndpoint::builder()
.alpns(vec![])
.secret_key(secret_key)
.discovery(discovery)
.bind(args.common.magic_port)
.await
.context("unable to bind magicsock")?;
Expand Down Expand Up @@ -425,8 +436,10 @@ async fn listen_tcp(args: ListenTcpArgs) -> anyhow::Result<()> {
Err(e) => anyhow::bail!("invalid host string {}: {}", args.host, e),
};
let secret_key = get_or_create_secret()?;
let discovery = n0_discovery(secret_key.clone());
let endpoint = MagicEndpoint::builder()
.alpns(vec![args.common.alpn()?])
.discovery(discovery)
.secret_key(secret_key)
.bind(args.common.magic_port)
.await?;
Expand Down Expand Up @@ -505,6 +518,14 @@ async fn listen_tcp(args: ListenTcpArgs) -> anyhow::Result<()> {
Ok(())
}

/// Create a discovery service that resolves and publishes via iroh DNS.
pub fn n0_discovery(secret_key: SecretKey) -> Box<dyn Discovery> {
Box::new(ConcurrentDiscovery::from_services(vec![
Box::new(DnsDiscovery::n0_dns()),
Box::new(PkarrPublisher::n0_dns(secret_key)),
]))
}

#[tokio::main]
async fn main() -> anyhow::Result<()> {
tracing_subscriber::fmt::init();
Expand Down

0 comments on commit 7491920

Please sign in to comment.