diff --git a/pubky-homeserver/src/io/mod.rs b/pubky-homeserver/src/io/mod.rs index 4f45128..5a84ff9 100644 --- a/pubky-homeserver/src/io/mod.rs +++ b/pubky-homeserver/src/io/mod.rs @@ -50,6 +50,13 @@ impl HomeserverBuilder { self } + /// Set the public domain of this Homeserver + pub fn domain(&mut self, domain: &str) -> &mut Self { + self.0.io.domain = Some(domain.to_string()); + + self + } + /// Run a Homeserver /// /// # Safety diff --git a/pubky-testnet/src/lib.rs b/pubky-testnet/src/lib.rs index df1dd07..d5bf324 100644 --- a/pubky-testnet/src/lib.rs +++ b/pubky-testnet/src/lib.rs @@ -9,7 +9,6 @@ use url::Url; pub struct Testnet { dht: mainline::Testnet, - bootstrap: Vec, relays: Vec, } @@ -18,7 +17,6 @@ impl Testnet { let dht = mainline::Testnet::new(10)?; let mut testnet = Self { - bootstrap: dht.bootstrap.clone(), dht, relays: vec![], }; @@ -37,12 +35,7 @@ impl Testnet { pub async fn run_with_hardcoded_configurations() -> Result { let dht = mainline::Testnet::new(10)?; - let node = mainline::Dht::builder() - .server_mode() - .bootstrap(&dht.bootstrap) - .build()?; - - let bootstrap = vec![node.info().local_addr().to_string()]; + dht.leak(); let storage = std::env::temp_dir().join(Timestamp::now().to_string()); @@ -58,31 +51,31 @@ impl Testnet { config .pkarr .request_timeout(Duration::from_millis(100)) - .bootstrap(&bootstrap) - .dht(|builder| builder.server_mode()); + .bootstrap(&dht.bootstrap) + .dht(|builder| { + if !dht.bootstrap.first().unwrap().contains("6881") { + builder.server_mode().port(6881); + } + + builder + }); unsafe { pkarr_relay::Relay::run(config).await? } }; - { - let mut builder = Homeserver::builder(); + let mut builder = Homeserver::builder(); + builder + .keypair(Keypair::from_secret_key(&[0; 32])) + .storage(storage) + .bootstrap(&dht.bootstrap) + .relays(&[relay.local_url()]) + .domain("localhost"); + unsafe { builder.run().await }?; - builder - .keypair(Keypair::from_secret_key(&[0; 32])) - .storage(storage) - .bootstrap(&bootstrap) - .relays(&[]); - - unsafe { builder.run().await? } - }; - - { - HttpRelay::builder().http_port(15412).run().await? - }; + HttpRelay::builder().http_port(15412).run().await?; let testnet = Self { dht, - bootstrap, relays: vec![relay], }; @@ -93,7 +86,7 @@ impl Testnet { /// Returns a list of DHT bootstrapping nodes. pub fn bootstrap(&self) -> &[String] { - &self.bootstrap + &self.dht.bootstrap } /// Returns a list of pkarr relays. diff --git a/pubky/.cargo/config.toml b/pubky/.cargo/config.toml new file mode 100644 index 0000000..0e465b2 --- /dev/null +++ b/pubky/.cargo/config.toml @@ -0,0 +1,2 @@ +[target.wasm32-unknown-unknown] +rustflags = ["--cfg", "getrandom_backend=\"wasm_js\""] diff --git a/pubky/Cargo.toml b/pubky/Cargo.toml index 5e7fac4..cafeacd 100644 --- a/pubky/Cargo.toml +++ b/pubky/Cargo.toml @@ -33,7 +33,9 @@ reqwest = { version = "0.12.12", features = ["cookies", "rustls-tls"], default-f tokio = { version = "1.43.0", features = ["full"] } # Wasm dependencies -[target.'cfg(target_arch = "wasm32")'.dependencies] +[target.wasm32-unknown-unknown.dependencies] +getrandom = { version = "0.3.1", features = ["wasm_js"] } +getrandom2 = { version = "0.2.15", package = "getrandom", features = ["js"] } reqwest = { version = "0.12.12", default-features = false } futures-lite = { version = "2.6.0", default-features = false } wasm-bindgen = "0.2.100" diff --git a/pubky/src/native.rs b/pubky/src/native.rs index e9370da..6826b8c 100644 --- a/pubky/src/native.rs +++ b/pubky/src/native.rs @@ -84,7 +84,7 @@ impl ClientBuilder { .user_agent(user_agent); #[cfg(wasm_browser)] - let mut http_builder = reqwest::Client::builder().user_agent(user_agent); + let http_builder = reqwest::Client::builder().user_agent(user_agent); #[cfg(not(wasm_browser))] let mut icann_http_builder = reqwest::Client::builder()