Changes to be committed:

modified:   src/main.rs
	modified:   src/tcp_client.rs
	modified:   src/tcp_server.rs
	new file:   src/util.rs
This commit is contained in:
Michael Wain 2024-08-12 04:46:26 +03:00
parent 5bc50b0e29
commit 9530aa43c0
4 changed files with 22 additions and 4 deletions

View File

@ -12,6 +12,7 @@ use serde_derive::Deserialize;
//mod server; //mod server;
mod tcp_client; mod tcp_client;
mod tcp_server; mod tcp_server;
mod util;
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
struct VpnPacket { struct VpnPacket {

View File

@ -11,6 +11,8 @@ use std::collections::HashMap;
use std::process::Command; use std::process::Command;
use tokio::io::AsyncReadExt; use tokio::io::AsyncReadExt;
use crate::VpnPacket;
fn configure_routes() { fn configure_routes() {
let ip_output = Command::new("ip") let ip_output = Command::new("ip")
.arg("addr") .arg("addr")
@ -101,14 +103,17 @@ pub async fn client_mode(remote_addr: String) {
let mut buf = vec![0; 2048]; let mut buf = vec![0; 2048];
loop { loop {
if let Ok(n) = sock_reader.read(&mut buf).await { if let Ok(n) = sock_reader.read(&mut buf).await {
tx.send(buf[..n].to_vec()).unwrap(); let vpn_packet: VpnPacket = bincode::deserialize(&buf[..n]).unwrap();
tx.send(vpn_packet.data).unwrap();
} }
} }
}); });
loop { loop {
if let Ok(bytes) = mx.recv() { if let Ok(bytes) = mx.recv() {
sock_writer.write(&bytes).await.unwrap(); let vpn_packet = VpnPacket{ data: bytes };
let serialized_data = bincode::serialize(&vpn_packet).unwrap();
sock_writer.write(&serialized_data).await.unwrap();
info!("Wrote to sock"); info!("Wrote to sock");
} }
} }

View File

@ -10,6 +10,8 @@ use std::net::SocketAddr;
use std::collections::HashMap; use std::collections::HashMap;
use tokio::io::AsyncReadExt; use tokio::io::AsyncReadExt;
use crate::VpnPacket;
pub async fn server_mode() { pub async fn server_mode() {
info!("Starting server..."); info!("Starting server...");
@ -54,7 +56,9 @@ pub async fn server_mode() {
tokio::spawn(async move { tokio::spawn(async move {
loop { loop {
if let Ok(bytes) = thread_mx.recv() { if let Ok(bytes) = thread_mx.recv() {
sock_writer.write(&bytes).await.unwrap(); let vpn_packet = VpnPacket{ data: bytes };
let serialized_data = bincode::serialize(&vpn_packet).unwrap();
sock_writer.write_all(&serialized_data).await.unwrap();
info!("Wrote to sock"); info!("Wrote to sock");
} }
} }
@ -64,7 +68,8 @@ pub async fn server_mode() {
let mut buf = vec![0; 2048]; let mut buf = vec![0; 2048];
loop { loop {
if let Ok(n) = sock_reader.read(&mut buf).await { if let Ok(n) = sock_reader.read(&mut buf).await {
thread_tx.send(buf[..n].to_vec()).unwrap(); let vpn_packet: VpnPacket = bincode::deserialize(&buf[..n]).unwrap();
thread_tx.send(vpn_packet.data).unwrap();
} }
} }
}); });

7
src/util.rs Normal file
View File

@ -0,0 +1,7 @@
use serde_derive::Serialize;
use serde_derive::Deserialize;
#[derive(Serialize, Deserialize)]
struct VpnPacket {
data: Vec<u8>,
}