mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-05-06 17:59:11 +00:00
cli: do not add offset when port = 0 (#2085)
This commit is contained in:
@@ -120,7 +120,7 @@ impl PunchConeHoleClient {
|
|||||||
|
|
||||||
let local_addr = local_socket
|
let local_addr = local_socket
|
||||||
.local_addr()
|
.local_addr()
|
||||||
.with_context(|| anyhow::anyhow!("failed to get local port from udp array"))?;
|
.with_context(|| "failed to get local port from udp array")?;
|
||||||
let local_port = local_addr.port();
|
let local_port = local_addr.port();
|
||||||
|
|
||||||
drop(local_socket);
|
drop(local_socket);
|
||||||
|
|||||||
+35
-27
@@ -740,43 +740,50 @@ impl Cli {
|
|||||||
return Ok(vec![]);
|
return Ok(vec![]);
|
||||||
}
|
}
|
||||||
|
|
||||||
let origin_listeners = listeners;
|
if listeners.len() == 1
|
||||||
let mut listeners: Vec<String> = Vec::new();
|
&& let Ok(port) = listeners[0].parse::<u16>()
|
||||||
if origin_listeners.len() == 1
|
|
||||||
&& let Ok(port) = origin_listeners[0].parse::<u16>()
|
|
||||||
{
|
{
|
||||||
for proto in IpScheme::VARIANTS {
|
let listeners = IpScheme::VARIANTS
|
||||||
listeners.push(format!(
|
.iter()
|
||||||
|
.map(|proto| {
|
||||||
|
format!(
|
||||||
"{}://0.0.0.0:{}",
|
"{}://0.0.0.0:{}",
|
||||||
proto,
|
proto,
|
||||||
|
if port == 0 {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
port + proto.port_offset()
|
port + proto.port_offset()
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
return Ok(listeners);
|
return Ok(listeners);
|
||||||
}
|
}
|
||||||
|
|
||||||
for l in &origin_listeners {
|
listeners
|
||||||
let proto_port: Vec<&str> = l.split(':').collect();
|
.into_iter()
|
||||||
if proto_port.len() > 2 {
|
.map(|l| {
|
||||||
if let Ok(url) = l.parse::<url::Url>() {
|
let l = l
|
||||||
listeners.push(url.to_string());
|
.parse::<url::Url>()
|
||||||
} else {
|
.or_else(|_| url::Url::parse(&format!("{}:", l)))?;
|
||||||
panic!("failed to parse listener: {}", l);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
let scheme: IpScheme = proto_port[0].parse()?;
|
|
||||||
|
|
||||||
let port = if proto_port.len() == 2 {
|
if l.has_authority() {
|
||||||
proto_port[1].parse::<u16>().unwrap()
|
return Ok(l.to_string());
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
let scheme: IpScheme = l.scheme().parse()?;
|
||||||
|
let port = {
|
||||||
|
let port = l.path();
|
||||||
|
if port.is_empty() {
|
||||||
11010 + scheme.port_offset()
|
11010 + scheme.port_offset()
|
||||||
|
} else {
|
||||||
|
port.parse::<u16>()
|
||||||
|
.with_context(|| format!("invalid port: {}", port))?
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
Ok(format!("{}://0.0.0.0:{}", scheme, port))
|
||||||
listeners.push(format!("{}://0.0.0.0:{}", scheme, port));
|
})
|
||||||
}
|
.collect()
|
||||||
}
|
|
||||||
|
|
||||||
Ok(listeners)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -848,7 +855,8 @@ impl NetworkOptions {
|
|||||||
|
|
||||||
if self.no_listener || !self.listeners.is_empty() {
|
if self.no_listener || !self.listeners.is_empty() {
|
||||||
cfg.set_listeners(
|
cfg.set_listeners(
|
||||||
Cli::parse_listeners(self.no_listener, self.listeners.clone())?
|
Cli::parse_listeners(self.no_listener, self.listeners.clone())
|
||||||
|
.with_context(|| format!("failed to parse listeners: {:?}", self.listeners))?
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|s| s.parse().unwrap())
|
.map(|s| s.parse().unwrap())
|
||||||
.collect(),
|
.collect(),
|
||||||
|
|||||||
Reference in New Issue
Block a user