Bump version 0.6.3

This commit is contained in:
ssrlive 2024-11-03 10:36:07 +08:00
parent e8143a691b
commit 21355e37da
4 changed files with 23 additions and 14 deletions

View file

@ -1,6 +1,6 @@
[package]
name = "tun2proxy"
version = "0.6.2"
version = "0.6.3"
edition = "2021"
license = "MIT"
repository = "https://github.com/tun2proxy/tun2proxy"

View file

@ -160,8 +160,9 @@ Options:
--daemonize Daemonize for unix family or run as Windows service
--exit-on-fatal-error Exit immediately when fatal error occurs, useful for running as a service
--max-sessions <number> Maximum number of sessions to be handled concurrently [default: 200]
--udpgw-server <IP:PORT> UDP gateway server address, similar to badvpn-udpgw
--udpgw-max-connections <number> Max udpgw connections, default value is 5
--udpgw-server <IP:PORT> UDP gateway server address, forwards UDP packets via specified TCP server
--udpgw-connections <number> Max connections for the UDP gateway, default value is 5
--udpgw-keepalive <seconds> Keepalive interval in seconds for the UDP gateway, default value is 30
-h, --help Print help
-V, --version Print version
```

View file

@ -111,15 +111,20 @@ pub struct Args {
#[arg(long, value_name = "number", default_value = "200")]
pub max_sessions: usize,
/// UDP gateway server address, similar to badvpn-udpgw
/// UDP gateway server address, forwards UDP packets via specified TCP server
#[cfg(feature = "udpgw")]
#[arg(long, value_name = "IP:PORT")]
pub udpgw_server: Option<SocketAddr>,
/// Max udpgw connections, default value is 5
/// Max connections for the UDP gateway, default value is 5
#[cfg(feature = "udpgw")]
#[arg(long, value_name = "number", requires = "udpgw_server")]
pub udpgw_max_connections: Option<usize>,
pub udpgw_connections: Option<usize>,
/// Keepalive interval in seconds for the UDP gateway, default value is 30
#[cfg(feature = "udpgw")]
#[arg(long, value_name = "seconds", requires = "udpgw_server")]
pub udpgw_keepalive: Option<u64>,
}
fn validate_tun(p: &str) -> Result<String> {
@ -166,7 +171,9 @@ impl Default for Args {
#[cfg(feature = "udpgw")]
udpgw_server: None,
#[cfg(feature = "udpgw")]
udpgw_max_connections: None,
udpgw_connections: None,
#[cfg(feature = "udpgw")]
udpgw_keepalive: None,
}
}
}
@ -201,8 +208,8 @@ impl Args {
}
#[cfg(feature = "udpgw")]
pub fn udpgw_max_connections(&mut self, udpgw_max_connections: usize) -> &mut Self {
self.udpgw_max_connections = Some(udpgw_max_connections);
pub fn udpgw_connections(&mut self, udpgw_connections: usize) -> &mut Self {
self.udpgw_connections = Some(udpgw_connections);
self
}

View file

@ -240,14 +240,15 @@ where
let mut ip_stack = ipstack::IpStack::new(ipstack_config, device);
#[cfg(feature = "udpgw")]
let udpgw_client = args.udpgw_server.as_ref().map(|addr| {
log::info!("UDPGW enabled");
let udpgw_client = args.udpgw_server.map(|addr| {
log::info!("UDP Gateway enabled, server: {}", addr);
use std::time::Duration;
let client = Arc::new(UdpGwClient::new(
mtu,
args.udpgw_max_connections.unwrap_or(UDPGW_MAX_CONNECTIONS),
UDPGW_KEEPALIVE_TIME,
args.udpgw_connections.unwrap_or(UDPGW_MAX_CONNECTIONS),
args.udpgw_keepalive.map(Duration::from_secs).unwrap_or(UDPGW_KEEPALIVE_TIME),
args.udp_timeout,
*addr,
addr,
));
let client_keepalive = client.clone();
tokio::spawn(async move {