root request

This commit is contained in:
TIBERGHIEN corentin
2026-01-13 17:13:35 +01:00
parent 98fcc1a0b2
commit c852c5bb4a
6 changed files with 210 additions and 78 deletions

View File

@@ -3,7 +3,7 @@
use std::{
collections::{HashMap, VecDeque},
net::{AddrParseError, SocketAddr},
net::{AddrParseError, Ipv4Addr, SocketAddr},
ops::Add,
process::Command,
sync::{Arc, Mutex},
@@ -21,7 +21,7 @@ use p256::ecdsa::VerifyingKey;
#[derive(Debug, Clone)]
pub struct PeerInfo {
username: String,
pub username: String,
pub pubkey: VerifyingKey,
pub ip: SocketAddr,
}
@@ -82,6 +82,27 @@ impl HandshakeHistory {
});
}
pub fn update_peer_info(&mut self, ip: String, username: String) {
let peerinfo = self.get_peer_info_ip(ip.clone());
match peerinfo {
Some(peer_info) => match ip.parse::<SocketAddr>() {
Ok(addr) => {
let new_peer_info = PeerInfo {
username: username.clone(),
pubkey: peer_info.pubkey,
ip: addr,
};
self.ip_k_peerinfo_v.insert(ip, new_peer_info.clone());
self.username_k_peerinfo_v.insert(username, new_peer_info);
}
Err(e) => eprintln!("parse error: {}", e),
},
None => {
eprintln!("no peer info found in hashmap")
}
}
}
pub fn add_new_handshake(&mut self, hash: VerifyingKey, username: String, ip: SocketAddr) {
let peerinfo = PeerInfo {
username: username.clone(),
@@ -104,8 +125,8 @@ pub fn perform_discover(
) {
// first, sends handshake
if hash == "root" {
perform_handshake(sd, username, server_ip, event_tx);
if let Some(data) = construct_message(
perform_handshake(sd, username, server_ip, event_tx, false);
/*if let Some(data) = construct_message(
messages_structure::ROOTREQUEST,
Vec::new(),
generate_id(),
@@ -115,7 +136,7 @@ pub fn perform_discover(
sd.senders_ref()
.send_via(0, data, peerinfo.ip.to_string(), false);
}
}
}*/
} else {
// envoyer un datum request
}