wip nattraversal

This commit is contained in:
TIBERGHIEN corentin
2026-01-16 01:12:52 +01:00
parent 29c67e340c
commit 14fa256f9c
3 changed files with 18 additions and 10 deletions

View File

@@ -21,7 +21,7 @@ use crate::{
};
use std::{
io::Error,
net::{Ipv4Addr, UdpSocket},
net::{IpAddr, Ipv4Addr, UdpSocket},
};
use std::{
net::SocketAddr,
@@ -366,15 +366,13 @@ 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");
let payload = socket_addr_to_vec(server_addr);
print!("{:?}", payload.clone());
let natreq = construct_message(
NATTRAVERSALREQUEST,
payload.clone().to_vec(),
server_addr.to_string().into_bytes(),
generate_id(),
&sd.cryptopair(),
);
@@ -417,6 +415,15 @@ pub fn start_p2p_executor(
})
}
fn socket_addr_to_vec(addr: SocketAddr) -> Vec<u8> {
let mut v = match addr.ip() {
IpAddr::V4(v4) => v4.octets().to_vec(),
IpAddr::V6(v6) => v6.octets().to_vec(),
};
v.extend(&addr.port().to_be_bytes());
v
}
fn parse_pack(s: &str) -> Option<[u8; 6]> {
// split into "ip" and "port"
let mut parts = s.rsplitn(2, ':');