From 9e50984549d931e7c556655914eb62fe0b3cd69b Mon Sep 17 00:00:00 2001 From: ospab Date: Sun, 24 May 2026 23:03:50 +0300 Subject: [PATCH] Fix linux format args, proxy config fields, and unused warnings --- ostp-client/src/bridge.rs | 22 +++++++++++----------- ostp-client/src/runner.rs | 15 +++++++++------ ostp-client/src/transport/xhttp.rs | 2 +- ostp-client/src/tunnel/linux_handler.rs | 2 +- ostp-client/src/tunnel/wintun_handler.rs | 9 +++++++++ ostp-server/src/transport/uot.rs | 1 - 6 files changed, 31 insertions(+), 20 deletions(-) diff --git a/ostp-client/src/bridge.rs b/ostp-client/src/bridge.rs index 579728d..44ab0ff 100644 --- a/ostp-client/src/bridge.rs +++ b/ostp-client/src/bridge.rs @@ -221,7 +221,7 @@ impl Bridge { } } ProtocolAction::SendDatagram(frame) => { - let _ = send_datagram(&session.socket, &frame, (self.transport_mode == "udp")).await; + let _ = send_datagram(&session.socket, &frame, self.transport_mode == "udp" ).await; self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed); } _ => {} @@ -274,7 +274,7 @@ impl Bridge { let session_index = sessions.len(); let socket_clone = sock.clone(); let udp_tx_clone = udp_tx.clone(); - let is_webrtc = (self.transport_mode == "udp"); + let is_webrtc = self.transport_mode == "udp" ; tokio::spawn(async move { let mut buf = vec![0_u8; 65535]; loop { @@ -364,7 +364,7 @@ impl Bridge { let session_index = new_sessions.len(); let socket_clone = sock.clone(); let udp_tx_clone = udp_tx.clone(); - let is_webrtc = (self.transport_mode == "udp"); + let is_webrtc = self.transport_mode == "udp" ; tokio::spawn(async move { let mut buf = vec![0_u8; 65535]; loop { @@ -475,7 +475,7 @@ impl Bridge { let session_index = new_sessions.len(); let socket_clone = sock.clone(); let udp_tx_clone = udp_tx.clone(); - let is_webrtc = (self.transport_mode == "udp"); + let is_webrtc = self.transport_mode == "udp" ; tokio::spawn(async move { let mut buf = vec![0_u8; 65535]; loop { @@ -529,14 +529,14 @@ impl Bridge { if let Ok(ProtocolAction::SendDatagram(frame)) = session.machine.on_event(OstpEvent::Outbound(0, ping_payload)) { // Must go through send_datagram() for TURN-mode wrapping; // raw socket.send() bypasses the ChannelData header and breaks RTT in TURN. - let _ = send_datagram(&session.socket, &frame, (self.transport_mode == "udp")).await; + let _ = send_datagram(&session.socket, &frame, self.transport_mode == "udp" ).await; self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed); } // Send Relay KeepAlive (Force NAT/Server Persistence) let ka_payload = Bytes::from(RelayMessage::KeepAlive.encode()); if let Ok(ProtocolAction::SendDatagram(frame)) = session.machine.on_event(OstpEvent::Outbound(0, ka_payload)) { - let _ = send_datagram(&session.socket, &frame, (self.transport_mode == "udp")).await; + let _ = send_datagram(&session.socket, &frame, self.transport_mode == "udp" ).await; self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed); } } @@ -559,7 +559,7 @@ impl Bridge { } } ProtocolAction::SendDatagram(frame) => { - let _ = send_datagram(&session.socket, &frame, (self.transport_mode == "udp")).await; + let _ = send_datagram(&session.socket, &frame, self.transport_mode == "udp" ).await; self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed); } _ => {} @@ -622,7 +622,7 @@ impl Bridge { let out_payload = Bytes::from(relay_msg.encode()); match session.machine.on_event(OstpEvent::Outbound(stream_id, out_payload)) { Ok(ProtocolAction::SendDatagram(frame)) => { - if send_datagram(&session.socket, &frame, (self.transport_mode == "udp")).await.is_ok() { + if send_datagram(&session.socket, &frame, self.transport_mode == "udp" ).await.is_ok() { self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed); if self.debug { let _ = tx.send(UiEvent::Log(format!( @@ -636,7 +636,7 @@ impl Bridge { let mut sent = 0usize; for item in list { if let ProtocolAction::SendDatagram(frame) = item { - if send_datagram(&session.socket, &frame, (self.transport_mode == "udp")).await.is_ok() { + if send_datagram(&session.socket, &frame, self.transport_mode == "udp" ).await.is_ok() { self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed); sent += 1; } @@ -830,7 +830,7 @@ impl Bridge { if attempt > 0 { tx.send(UiEvent::Log(format!("Handshake attempt {} lost. Retransmitting...", attempt))).await.ok(); } - send_datagram(&socket, &handshake_frame, (self.transport_mode == "udp")).await?; + send_datagram(&socket, &handshake_frame, self.transport_mode == "udp" ).await?; self.metrics.bytes_sent.fetch_add(handshake_frame.len() as u64, Ordering::Relaxed); match timeout(Duration::from_millis(attempt_timeout_ms), socket.recv(&mut buf)).await { @@ -856,7 +856,7 @@ impl Bridge { if attempt > 0 { tx.send(UiEvent::Log(format!("NAT64 handshake attempt {} lost. Retransmitting...", attempt))).await.ok(); } - send_datagram(&fallback_socket, &handshake_frame, (self.transport_mode == "udp")).await?; + send_datagram(&fallback_socket, &handshake_frame, self.transport_mode == "udp" ).await?; match timeout(Duration::from_millis(1200), fallback_socket.recv(&mut buf)).await { Ok(Ok(n)) => { size = n; diff --git a/ostp-client/src/runner.rs b/ostp-client/src/runner.rs index 792c962..93c0dd1 100644 --- a/ostp-client/src/runner.rs +++ b/ostp-client/src/runner.rs @@ -169,16 +169,19 @@ pub async fn run_client_core( #[cfg(target_os = "linux")] if config.mode == "proxy" { println!("\n[ostp] ==========================================================================="); - println!("[ostp] Proxy mode initialized on {}:{}", config.local_proxy.bind_host, config.local_proxy.bind_port); + println!("[ostp] Proxy mode initialized on {}", config.local_proxy.bind_addr); println!("[ostp] To use this proxy in your current terminal session, run:"); - println!("[ostp] export http_proxy=\"http://{}:{}\"", config.local_proxy.bind_host, config.local_proxy.bind_port); - println!("[ostp] export https_proxy=\"http://{}:{}\"", config.local_proxy.bind_host, config.local_proxy.bind_port); - println!("[ostp] export all_proxy=\"socks5://{}:{}\"", config.local_proxy.bind_host, config.local_proxy.bind_port); + println!("[ostp] export http_proxy=\"http://{}\"", config.local_proxy.bind_addr); + println!("[ostp] export https_proxy=\"http://{}\"", config.local_proxy.bind_addr); + println!("[ostp] export all_proxy=\"socks5://{}\"", config.local_proxy.bind_addr); println!("[ostp] "); println!("[ostp] For GNOME desktop system-wide proxy, you can use:"); println!("[ostp] gsettings set org.gnome.system.proxy mode 'manual'"); - println!("[ostp] gsettings set org.gnome.system.proxy.http host '{}'", config.local_proxy.bind_host); - println!("[ostp] gsettings set org.gnome.system.proxy.http port {}", config.local_proxy.bind_port); + let mut parts = config.local_proxy.bind_addr.split(':'); + let host = parts.next().unwrap_or("127.0.0.1"); + let port = parts.next().unwrap_or("1088"); + println!("[ostp] gsettings set org.gnome.system.proxy.http host '{}'", host); + println!("[ostp] gsettings set org.gnome.system.proxy.http port {}", port); println!("[ostp] ===========================================================================\n"); } diff --git a/ostp-client/src/transport/xhttp.rs b/ostp-client/src/transport/xhttp.rs index 4532101..6aa766d 100644 --- a/ostp-client/src/transport/xhttp.rs +++ b/ostp-client/src/transport/xhttp.rs @@ -17,7 +17,7 @@ mod danger { use rustls::client::danger::{HandshakeSignatureValid, ServerCertVerified, ServerCertVerifier}; use rustls::pki_types::{CertificateDer, ServerName, UnixTime}; use rustls::DigitallySignedStruct; - use rustls::crypto::CryptoProvider; + #[derive(Debug)] pub struct NoCertificateVerification; diff --git a/ostp-client/src/tunnel/linux_handler.rs b/ostp-client/src/tunnel/linux_handler.rs index 2103848..db9714c 100644 --- a/ostp-client/src/tunnel/linux_handler.rs +++ b/ostp-client/src/tunnel/linux_handler.rs @@ -145,7 +145,7 @@ pub async fn run_linux_tunnel( ip route add 1.1.1.1 via {} dev {}; \ ip route add 0.0.0.0/1 dev ostp_tun; \ ip route add 128.0.0.0/1 dev ostp_tun", - server_ip_str, default_gw, default_if, + config.ostp.mtu, server_ip_str, default_gw, default_if, default_gw, default_if ); diff --git a/ostp-client/src/tunnel/wintun_handler.rs b/ostp-client/src/tunnel/wintun_handler.rs index a7fae85..9e5f7dc 100644 --- a/ostp-client/src/tunnel/wintun_handler.rs +++ b/ostp-client/src/tunnel/wintun_handler.rs @@ -230,3 +230,12 @@ pub async fn run_wintun_tunnel( Ok(()) } + +#[cfg(not(target_os = "windows"))] +#[allow(dead_code)] +pub async fn run_wintun_tunnel( + _config: crate::config::ClientConfig, + _shutdown: watch::Receiver, +) -> Result<()> { + Err(anyhow!("Wintun driver executed on a non-Windows host!")) +} diff --git a/ostp-server/src/transport/uot.rs b/ostp-server/src/transport/uot.rs index 6e0f5f3..aa9d579 100644 --- a/ostp-server/src/transport/uot.rs +++ b/ostp-server/src/transport/uot.rs @@ -7,7 +7,6 @@ use std::net::SocketAddr; use std::sync::{Arc, RwLock as StdRwLock}; use std::time::{SystemTime, UNIX_EPOCH}; use tokio::io::{AsyncReadExt, AsyncWriteExt}; -use tokio::net::TcpStream; use tokio::sync::{mpsc, RwLock}; use tracing::info;