Changes to be committed:

modified:   src/client.rs
	modified:   src/server.rs
This commit is contained in:
Michael Wain 2024-08-17 17:39:43 +03:00
parent fb4276b54b
commit f173bbdc12
2 changed files with 9 additions and 3 deletions

View File

@ -11,7 +11,7 @@ use std::collections::HashMap;
use std::process::Command; use std::process::Command;
use tokio::io::AsyncReadExt; use tokio::io::AsyncReadExt;
use crate::{UDPVpnPacket, VpnPacket}; use crate::{UDPVpnHandshake, UDPVpnPacket, VpnPacket};
fn configure_routes() { fn configure_routes() {
let ip_output = Command::new("ip") let ip_output = Command::new("ip")
@ -90,6 +90,7 @@ pub async fn client_mode(remote_addr: String) {
tokio::spawn(async move { tokio::spawn(async move {
while let Ok(bytes) = rx.recv() { while let Ok(bytes) = rx.recv() {
info!("Write to tun");
dev_writer.write_all(&bytes).unwrap(); dev_writer.write_all(&bytes).unwrap();
} }
}); });
@ -110,11 +111,14 @@ pub async fn client_mode(remote_addr: String) {
} }
}); });
let handshake = UDPVpnHandshake{};
sock_snd.send(&handshake.serialize()).await.unwrap();
loop { loop {
if let Ok(bytes) = mx.recv() { if let Ok(bytes) = mx.recv() {
let vpn_packet = UDPVpnPacket{ data: bytes }; let vpn_packet = UDPVpnPacket{ data: bytes };
let serialized_data = vpn_packet.serialize(); let serialized_data = vpn_packet.serialize();
//info!("Writing to sock: {:?}", serialized_data); info!("Writing to sock: {:?}", serialized_data);
sock_snd.send(&serialized_data).await.unwrap(); sock_snd.send(&serialized_data).await.unwrap();
} }
} }

View File

@ -54,7 +54,8 @@ pub async fn server_mode(bind_addr: String) {
let ip = IpAddr::V4(Ipv4Addr::new(buf[16], buf[17], buf[18], buf[19])); let ip = IpAddr::V4(Ipv4Addr::new(buf[16], buf[17], buf[18], buf[19]));
let mp = addrs_cl.lock().await; let mp = addrs_cl.lock().await;
if let Some(peer) = mp.get(&ip) { if let Some(peer) = mp.get(&ip) {
sock_snd.send_to(&buf[..n], peer.addr); info!("Sent to client");
sock_snd.send_to(&buf[..n], peer.addr).await;
} else { } else {
mp.values().for_each(| peer | { sock_snd.send_to(&buf[..n], peer.addr); }); mp.values().for_each(| peer | { sock_snd.send_to(&buf[..n], peer.addr); });
error!("UDPeer not found {:?}; what we have {:?}", ip, mp.keys().collect::<Vec<&IpAddr>>()); error!("UDPeer not found {:?}; what we have {:?}", ip, mp.keys().collect::<Vec<&IpAddr>>());
@ -76,6 +77,7 @@ pub async fn server_mode(bind_addr: String) {
0 => { 0 => {
// (&buf[1..len]).to_vec() // (&buf[1..len]).to_vec()
let internal_ip = IpAddr::V4(Ipv4Addr::new(10,8,0,2)); let internal_ip = IpAddr::V4(Ipv4Addr::new(10,8,0,2));
info!("Got handshake");
mp.insert(internal_ip, UDPeer { addr }); mp.insert(internal_ip, UDPeer { addr });
}, // handshake }, // handshake
1 => { 1 => {