From 6b3cbbe557dbfe4be45e61b92c6edf2d0bdeea23 Mon Sep 17 00:00:00 2001 From: Tiago Batista Cardoso Date: Fri, 16 Jan 2026 12:33:21 +0100 Subject: [PATCH] some modifications --- client-network/src/cryptographic_signature.rs | 30 +++++++++++-------- client-network/src/lib.rs | 29 ++++++++++++++---- 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/client-network/src/cryptographic_signature.rs b/client-network/src/cryptographic_signature.rs index 542daba..d8f6579 100644 --- a/client-network/src/cryptographic_signature.rs +++ b/client-network/src/cryptographic_signature.rs @@ -7,6 +7,7 @@ use p256::ecdsa::{ signature::{Signer, Verifier}, }; use rand_core::OsRng; +use reqwest::Error; use sha2::{Digest, Sha256}; /// @@ -50,19 +51,24 @@ pub async fn get_peer_key(username: &String) -> Result { + println!("Successfully retreived the peers key."); + let body: Bytes = res.bytes().await?; + let slice: &[u8] = body.as_ref(); + let body_bytes: &[u8; 64] = slice.try_into().expect("size error"); + let received_key = convert_verifyingkey(body_bytes); + Ok(received_key) + } + Err(e) => { + eprintln!( + "Failed to get the peers key from the server. Status: {}", + res.status() + ); + Err(e) + } } - let body: Bytes = res.bytes().await?; - let slice: &[u8] = body.as_ref(); - let body_bytes: &[u8; 64] = slice.try_into().expect("size error"); - let received_key = convert_verifyingkey(body_bytes); - Ok(received_key) } fn convert_verifyingkey(raw_xy: &[u8; 64]) -> VerifyingKey { diff --git a/client-network/src/lib.rs b/client-network/src/lib.rs index 6b7f9d2..0d02222 100644 --- a/client-network/src/lib.rs +++ b/client-network/src/lib.rs @@ -461,12 +461,31 @@ pub async fn get_socket_address(username: String, ip: String) -> Option { let addresses = parse_addresses(&s); - if let Some(first) = addresses.first() { - Some(first.clone()) - } else { - None - } + addresses.iter().copied().find(|a| a.is_ipv4()) } Err(_) => None, } } + +pub async fn get_possible_socket_address(username: String, ip: String) -> Vec { + let client = reqwest::Client::new(); + let uri = format!("{}/peers/{}/addresses", ip, username); + let res = client.get(uri).send().await.expect("couldnt get response"); + if res.status().is_success() { + println!("Successfully retreived the addresses."); + } else { + eprintln!( + "Failed to get the peers addresses from the server. Status: {}", + res.status() + ); + } + let body: Bytes = res.bytes().await.expect("couldnt get bytes"); + + match String::from_utf8(body.to_vec()) { + Ok(s) => { + let addresses = parse_addresses(&s); + addresses.iter().copied().filter(|a| a.is_ipv4()).collect() + } + Err(_) => Vec::new(), + } +}