From ad7db7481df16f260730ad7d433e073f82b1c059 Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Mon, 5 Apr 2021 17:20:27 +0530 Subject: [PATCH 1/2] src: add minimal logging --- Cargo.lock | 21 +++++++++++++++++++++ Cargo.toml | 2 ++ src/discovery.rs | 2 ++ src/main.rs | 3 ++- 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 5c7b93c..82de156 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -314,7 +314,9 @@ dependencies = [ "clap", "dirs", "ed25519-dalek", + "env_logger", "json", + "log", "rand", "regex", "toml", @@ -412,6 +414,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "env_logger" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17392a012ea30ef05a610aa97dfb49496e71c9f676b27879922ea5bdf60d9d3f" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + [[package]] name = "event-listener" version = "2.5.1" @@ -521,6 +536,12 @@ dependencies = [ "libc", ] +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "indexmap" version = "1.6.2" diff --git a/Cargo.toml b/Cargo.toml index 9c411df..6850e20 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,8 @@ json = "0.12.4" base64 = "0.13.0" regex = "1.4.5" async-trait = "0.1.7" +log = "0.4.14" +env_logger = "0.8.3" [dependencies.async-std] version = "1.6.2" diff --git a/src/discovery.rs b/src/discovery.rs index c39e73b..c10e29b 100644 --- a/src/discovery.rs +++ b/src/discovery.rs @@ -17,6 +17,7 @@ pub async fn recv(sender: async_std::channel::Sender) { let (amt, _) = socket.recv_from(&mut buf).await.unwrap(); let buf = &mut buf[..amt]; let packet = String::from_utf8(buf.to_vec()).unwrap(); + log::debug!("Recieved discovery beacon: {}", packet); let peer = Peer::from_discovery_packet(packet.as_str()); if !old.contains(&peer) { old.insert(peer.clone()); @@ -42,6 +43,7 @@ pub async fn send(pubkey: Arc) { socket.set_broadcast(true).unwrap(); loop { + log::debug!("Sending discovery beacon"); socket.send_to(&buf, "255.255.255.255:8008").await.unwrap(); socket.send_to(&buf, "[FF02::1]:8008").await.unwrap(); task::sleep(std::time::Duration::from_secs(1)).await; diff --git a/src/main.rs b/src/main.rs index 8edb2aa..2e42e42 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,6 +12,7 @@ use keypair::{SSBKeypair, SSBPublicKey}; #[async_std::main] async fn main() { + env_logger::init(); let options = load_yaml!("options.yaml"); let options = App::from(options).get_matches(); @@ -41,6 +42,6 @@ async fn main() { task::spawn(discovery::send(Arc::new(keypair.public.to_base64()))); while let Ok(peer) = precv.recv().await { - println!("{}", peer.to_discovery_packet()); + log::info!("New peer found: {}", peer.to_discovery_packet()); }; } From ac4031924929e15d16db8e4e8f1f2150c07ec055 Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Mon, 5 Apr 2021 22:31:00 +0530 Subject: [PATCH 2/2] src: filter out own beacons --- src/discovery.rs | 4 ++-- src/main.rs | 2 +- src/peer.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/discovery.rs b/src/discovery.rs index c10e29b..611b5c2 100644 --- a/src/discovery.rs +++ b/src/discovery.rs @@ -8,7 +8,7 @@ use std::collections::HashSet; use crate::keypair::SSBPublicKey; use crate::peer::{Address, Handshake, Peer, Protocol}; -pub async fn recv(sender: async_std::channel::Sender) { +pub async fn recv(sender: async_std::channel::Sender, pubkey: Arc) { let socket = UdpSocket::bind(":::8008").await.unwrap(); let mut buf = [0u8; 1024]; let mut old = HashSet::new(); @@ -19,7 +19,7 @@ pub async fn recv(sender: async_std::channel::Sender) { let packet = String::from_utf8(buf.to_vec()).unwrap(); log::debug!("Recieved discovery beacon: {}", packet); let peer = Peer::from_discovery_packet(packet.as_str()); - if !old.contains(&peer) { + if peer.key.to_base64() != pubkey.to_base64() && !old.contains(&peer) { old.insert(peer.clone()); sender.send(peer).await.unwrap(); } diff --git a/src/main.rs b/src/main.rs index 2e42e42..6768a62 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,7 +38,7 @@ async fn main() { let keypair = Keypair::read_or_generate(path.join("secret")).await; let (psend, precv) = async_std::channel::unbounded(); - task::spawn(async move { discovery::recv(psend).await }); + task::spawn(discovery::recv(psend, Arc::new(keypair.public))); task::spawn(discovery::send(Arc::new(keypair.public.to_base64()))); while let Ok(peer) = precv.recv().await { diff --git a/src/peer.rs b/src/peer.rs index 621792e..6dd3b5e 100644 --- a/src/peer.rs +++ b/src/peer.rs @@ -40,7 +40,7 @@ impl Address { #[derive(Clone)] pub struct Peer { addresses: Vec
, - key: PublicKey, + pub key: PublicKey, } impl Peer {