From 29c67e340c03f4891cc660031e15ec6192872864 Mon Sep 17 00:00:00 2001 From: Tiago Batista Cardoso Date: Thu, 15 Jan 2026 22:37:24 +0100 Subject: [PATCH] update --- client-network/src/lib.rs | 32 +++++++++++++++++++++--- client-network/src/messages_structure.rs | 4 +-- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/client-network/src/lib.rs b/client-network/src/lib.rs index 0c3a1c1..e06965f 100644 --- a/client-network/src/lib.rs +++ b/client-network/src/lib.rs @@ -19,7 +19,10 @@ use crate::{ registration::{parse_addresses, perform_handshake, register_with_the_server}, server_communication::{generate_id, get_peer_list}, }; -use std::{io::Error, net::UdpSocket}; +use std::{ + io::Error, + net::{Ipv4Addr, UdpSocket}, +}; use std::{ net::SocketAddr, sync::{Arc, Mutex}, @@ -35,6 +38,7 @@ pub struct P2PSharedData { } use bytes::Bytes; +use p256::pkcs8::der::pem::Base64Encoder; impl P2PSharedData { pub fn new( @@ -362,10 +366,16 @@ pub fn start_p2p_executor( match server_addr_query.await { Some(server_addr) => match peer_addr_query.await { Some(peer_addr) => { + let payload = + parse_pack(peer_addr.clone().to_string().as_str()) + .expect("couldnt create payload"); + + print!("{:?}", payload.clone()); + let natreq = construct_message( NATTRAVERSALREQUEST, - peer_addr.to_string().into_bytes(), - 8, + payload.clone().to_vec(), + generate_id(), &sd.cryptopair(), ); @@ -407,6 +417,22 @@ pub fn start_p2p_executor( }) } +fn parse_pack(s: &str) -> Option<[u8; 6]> { + // split into "ip" and "port" + let mut parts = s.rsplitn(2, ':'); + let port_str = parts.next()?; + let ip_str = parts.next()?; // if missing, invalid + + let ip: Ipv4Addr = ip_str.parse().ok()?; + let port: u16 = port_str.parse().ok()?; + + let octets = ip.octets(); + let port_be = port.to_be_bytes(); + Some([ + octets[0], octets[1], octets[2], octets[3], port_be[0], port_be[1], + ]) +} + /// /// sends a get request to the server to get the socket address of the given peer /// diff --git a/client-network/src/messages_structure.rs b/client-network/src/messages_structure.rs index ab5f6cc..f913fe4 100644 --- a/client-network/src/messages_structure.rs +++ b/client-network/src/messages_structure.rs @@ -55,8 +55,8 @@ pub fn construct_message( ROOTREPLY | NODATUM | DATUM | NATTRAVERSALREQUEST => { message.extend_from_slice(&payload.len().to_be_bytes()); message.extend_from_slice(&payload); - let signature = sign_message(crypto_pair, &message); - message.extend_from_slice(&signature); + //let signature = sign_message(crypto_pair, &message); + //message.extend_from_slice(&signature); return Some(message); }