From 240353fbca0be4f1f8a6e99abc36a0925f22d856 Mon Sep 17 00:00:00 2001 From: wyzdot <62885475+wyzdot@users.noreply.github.com> Date: Wed, 2 Jun 2021 00:18:54 +0800 Subject: [PATCH] add disable opt for local servers --- crates/shadowsocks-service/src/config.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/crates/shadowsocks-service/src/config.rs b/crates/shadowsocks-service/src/config.rs index e27f8cea..c25fffa6 100644 --- a/crates/shadowsocks-service/src/config.rs +++ b/crates/shadowsocks-service/src/config.rs @@ -137,6 +137,9 @@ struct SSLocalExtConfig { local_address: Option, local_port: u16, + #[serde(skip_serializing_if = "Option::is_none")] + disabled: Option, + #[serde(skip_serializing_if = "Option::is_none")] mode: Option, @@ -998,6 +1001,10 @@ impl Config { // `locals` are only effective in local server if let Some(locals) = config.locals { for local in locals { + if local.disabled.unwrap_or(false) { + continue; + } + if local.local_port == 0 { let err = Error::new(ErrorKind::Malformed, "`local_port` cannot be 0", None); return Err(err); @@ -1667,6 +1674,7 @@ impl fmt::Display for Config { ServerAddr::SocketAddr(ref sa) => sa.port(), ServerAddr::DomainName(.., port) => port, }, + disabled: None, local_udp_address: local.udp_addr.as_ref().map(|udp_addr| match udp_addr { ServerAddr::SocketAddr(sa) => sa.ip().to_string(), ServerAddr::DomainName(dm, ..) => dm.to_string(),