copy pasted socks tun

This commit is contained in:
2026-03-05 12:18:07 +07:00
parent 8d3c7875cf
commit 9cc9b75123
15 changed files with 2074 additions and 140 deletions
+2 -39
View File
@@ -1,4 +1,4 @@
use netrunner_client::{stack::NetStack, tun::tun_builder::TunBuilder};
use netrunner_client::{stack::NetStack, tun::TunBuilder};
use netrunner_common::{
logger_init,
proxy::{connection::connection::ConnectionRole, network::Network},
@@ -8,16 +8,10 @@ use tracing::{error, info};
#[tokio::main]
async fn main() {
let mut tun_result = TunBuilder::new().build().await;
logger_init();
let net = Network::new(8080, ConnectionRole::Client, Some("0.0.0.0:4443".into()));
let Ok(tun) = tun_result else {
error!("Tun creation error");
return;
};
let muxer = match net.initialize_client_tunnel().await {
Ok(m) => m,
Err(e) => {
@@ -36,36 +30,5 @@ async fn main() {
let mut net_stack = NetStack::new(muxer);
loop {
net_stack.poll();
let mut buf = [0u8; 1600];
tokio::select! {
// Читаем из реального мира (TUN) и закидываем в очередь стека
tun_res = tun.read(&mut buf) => {
if let Ok(n) = tun_res {
// Прямой вызов обработки (без лишних каналов, если это один поток)
// Или через твой метод, если логика разделена:
net_stack.process_tun_input(&buf[..n]);
}
}
// Читаем из очереди стека и отдаем в реальный мир (TUN)
Some(packet_to_tun) = net_stack.next_outbound_packet() => {
let _ = tun.write_all(&packet_to_tun).await;
}
// Ждем, пока стек сам попросит проснуться (таймеры TCP)
_ = net_stack.poll_delay() => {
// Просто просыпаемся. На следующей итерации вызовется poll()
}
// Ошибка прокси
net_res = &mut net_handle => {
error!("SOCKS5 server stopped: {:?}", net_res);
break;
}
}
}
loop {}
}