mirror of https://github.com/ospab/ostp.git
Fix linux format args, proxy config fields, and unused warnings
This commit is contained in:
parent
1865f66e48
commit
9e50984549
|
|
@ -221,7 +221,7 @@ impl Bridge {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ProtocolAction::SendDatagram(frame) => {
|
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);
|
self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed);
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
|
@ -274,7 +274,7 @@ impl Bridge {
|
||||||
let session_index = sessions.len();
|
let session_index = sessions.len();
|
||||||
let socket_clone = sock.clone();
|
let socket_clone = sock.clone();
|
||||||
let udp_tx_clone = udp_tx.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 {
|
tokio::spawn(async move {
|
||||||
let mut buf = vec![0_u8; 65535];
|
let mut buf = vec![0_u8; 65535];
|
||||||
loop {
|
loop {
|
||||||
|
|
@ -364,7 +364,7 @@ impl Bridge {
|
||||||
let session_index = new_sessions.len();
|
let session_index = new_sessions.len();
|
||||||
let socket_clone = sock.clone();
|
let socket_clone = sock.clone();
|
||||||
let udp_tx_clone = udp_tx.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 {
|
tokio::spawn(async move {
|
||||||
let mut buf = vec![0_u8; 65535];
|
let mut buf = vec![0_u8; 65535];
|
||||||
loop {
|
loop {
|
||||||
|
|
@ -475,7 +475,7 @@ impl Bridge {
|
||||||
let session_index = new_sessions.len();
|
let session_index = new_sessions.len();
|
||||||
let socket_clone = sock.clone();
|
let socket_clone = sock.clone();
|
||||||
let udp_tx_clone = udp_tx.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 {
|
tokio::spawn(async move {
|
||||||
let mut buf = vec![0_u8; 65535];
|
let mut buf = vec![0_u8; 65535];
|
||||||
loop {
|
loop {
|
||||||
|
|
@ -529,14 +529,14 @@ impl Bridge {
|
||||||
if let Ok(ProtocolAction::SendDatagram(frame)) = session.machine.on_event(OstpEvent::Outbound(0, ping_payload)) {
|
if let Ok(ProtocolAction::SendDatagram(frame)) = session.machine.on_event(OstpEvent::Outbound(0, ping_payload)) {
|
||||||
// Must go through send_datagram() for TURN-mode wrapping;
|
// Must go through send_datagram() for TURN-mode wrapping;
|
||||||
// raw socket.send() bypasses the ChannelData header and breaks RTT in TURN.
|
// 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);
|
self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send Relay KeepAlive (Force NAT/Server Persistence)
|
// Send Relay KeepAlive (Force NAT/Server Persistence)
|
||||||
let ka_payload = Bytes::from(RelayMessage::KeepAlive.encode());
|
let ka_payload = Bytes::from(RelayMessage::KeepAlive.encode());
|
||||||
if let Ok(ProtocolAction::SendDatagram(frame)) = session.machine.on_event(OstpEvent::Outbound(0, ka_payload)) {
|
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);
|
self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -559,7 +559,7 @@ impl Bridge {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ProtocolAction::SendDatagram(frame) => {
|
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);
|
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());
|
let out_payload = Bytes::from(relay_msg.encode());
|
||||||
match session.machine.on_event(OstpEvent::Outbound(stream_id, out_payload)) {
|
match session.machine.on_event(OstpEvent::Outbound(stream_id, out_payload)) {
|
||||||
Ok(ProtocolAction::SendDatagram(frame)) => {
|
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);
|
self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed);
|
||||||
if self.debug {
|
if self.debug {
|
||||||
let _ = tx.send(UiEvent::Log(format!(
|
let _ = tx.send(UiEvent::Log(format!(
|
||||||
|
|
@ -636,7 +636,7 @@ impl Bridge {
|
||||||
let mut sent = 0usize;
|
let mut sent = 0usize;
|
||||||
for item in list {
|
for item in list {
|
||||||
if let ProtocolAction::SendDatagram(frame) = item {
|
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);
|
self.metrics.bytes_sent.fetch_add(frame.len() as u64, Ordering::Relaxed);
|
||||||
sent += 1;
|
sent += 1;
|
||||||
}
|
}
|
||||||
|
|
@ -830,7 +830,7 @@ impl Bridge {
|
||||||
if attempt > 0 {
|
if attempt > 0 {
|
||||||
tx.send(UiEvent::Log(format!("Handshake attempt {} lost. Retransmitting...", attempt))).await.ok();
|
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);
|
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 {
|
match timeout(Duration::from_millis(attempt_timeout_ms), socket.recv(&mut buf)).await {
|
||||||
|
|
@ -856,7 +856,7 @@ impl Bridge {
|
||||||
if attempt > 0 {
|
if attempt > 0 {
|
||||||
tx.send(UiEvent::Log(format!("NAT64 handshake attempt {} lost. Retransmitting...", attempt))).await.ok();
|
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 {
|
match timeout(Duration::from_millis(1200), fallback_socket.recv(&mut buf)).await {
|
||||||
Ok(Ok(n)) => {
|
Ok(Ok(n)) => {
|
||||||
size = n;
|
size = n;
|
||||||
|
|
|
||||||
|
|
@ -169,16 +169,19 @@ pub async fn run_client_core(
|
||||||
#[cfg(target_os = "linux")]
|
#[cfg(target_os = "linux")]
|
||||||
if config.mode == "proxy" {
|
if config.mode == "proxy" {
|
||||||
println!("\n[ostp] ===========================================================================");
|
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] 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 http_proxy=\"http://{}\"", config.local_proxy.bind_addr);
|
||||||
println!("[ostp] export https_proxy=\"http://{}:{}\"", config.local_proxy.bind_host, config.local_proxy.bind_port);
|
println!("[ostp] export https_proxy=\"http://{}\"", config.local_proxy.bind_addr);
|
||||||
println!("[ostp] export all_proxy=\"socks5://{}:{}\"", config.local_proxy.bind_host, config.local_proxy.bind_port);
|
println!("[ostp] export all_proxy=\"socks5://{}\"", config.local_proxy.bind_addr);
|
||||||
println!("[ostp] ");
|
println!("[ostp] ");
|
||||||
println!("[ostp] For GNOME desktop system-wide proxy, you can use:");
|
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 mode 'manual'");
|
||||||
println!("[ostp] gsettings set org.gnome.system.proxy.http host '{}'", config.local_proxy.bind_host);
|
let mut parts = config.local_proxy.bind_addr.split(':');
|
||||||
println!("[ostp] gsettings set org.gnome.system.proxy.http port {}", config.local_proxy.bind_port);
|
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");
|
println!("[ostp] ===========================================================================\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ mod danger {
|
||||||
use rustls::client::danger::{HandshakeSignatureValid, ServerCertVerified, ServerCertVerifier};
|
use rustls::client::danger::{HandshakeSignatureValid, ServerCertVerified, ServerCertVerifier};
|
||||||
use rustls::pki_types::{CertificateDer, ServerName, UnixTime};
|
use rustls::pki_types::{CertificateDer, ServerName, UnixTime};
|
||||||
use rustls::DigitallySignedStruct;
|
use rustls::DigitallySignedStruct;
|
||||||
use rustls::crypto::CryptoProvider;
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct NoCertificateVerification;
|
pub struct NoCertificateVerification;
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ pub async fn run_linux_tunnel(
|
||||||
ip route add 1.1.1.1 via {} dev {}; \
|
ip route add 1.1.1.1 via {} dev {}; \
|
||||||
ip route add 0.0.0.0/1 dev ostp_tun; \
|
ip route add 0.0.0.0/1 dev ostp_tun; \
|
||||||
ip route add 128.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
|
default_gw, default_if
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -230,3 +230,12 @@ pub async fn run_wintun_tunnel(
|
||||||
|
|
||||||
Ok(())
|
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!"))
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ use std::net::SocketAddr;
|
||||||
use std::sync::{Arc, RwLock as StdRwLock};
|
use std::sync::{Arc, RwLock as StdRwLock};
|
||||||
use std::time::{SystemTime, UNIX_EPOCH};
|
use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||||
use tokio::net::TcpStream;
|
|
||||||
use tokio::sync::{mpsc, RwLock};
|
use tokio::sync::{mpsc, RwLock};
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue