Fix linux format args, proxy config fields, and unused warnings

This commit is contained in:
ospab 2026-05-24 23:03:50 +03:00
parent 1865f66e48
commit 9e50984549
6 changed files with 31 additions and 20 deletions

View File

@ -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;

View File

@ -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");
}

View File

@ -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;

View File

@ -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
);

View File

@ -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<bool>,
) -> Result<()> {
Err(anyhow!("Wintun driver executed on a non-Windows host!"))
}

View File

@ -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;