mirror of
https://github.com/EasyTier/EasyTier.git
synced 2025-11-01 12:32:40 +08:00
fix incorrect config check (#1086)
Some checks failed
EasyTier Core / pre_job (push) Has been cancelled
EasyTier GUI / pre_job (push) Has been cancelled
EasyTier Mobile / pre_job (push) Has been cancelled
EasyTier OHOS / pre_job (push) Has been cancelled
EasyTier Test / pre_job (push) Has been cancelled
EasyTier Core / build_web (push) Has been cancelled
EasyTier Core / build (freebsd-13.2-x86_64, 13.2, ubuntu-22.04, x86_64-unknown-freebsd) (push) Has been cancelled
EasyTier Core / build (linux-aarch64, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-arm, ubuntu-22.04, arm-unknown-linux-musleabi) (push) Has been cancelled
EasyTier Core / build (linux-armhf, ubuntu-22.04, arm-unknown-linux-musleabihf) (push) Has been cancelled
EasyTier Core / build (linux-armv7, ubuntu-22.04, armv7-unknown-linux-musleabi) (push) Has been cancelled
EasyTier Core / build (linux-armv7hf, ubuntu-22.04, armv7-unknown-linux-musleabihf) (push) Has been cancelled
EasyTier Core / build (linux-mips, ubuntu-22.04, mips-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-mipsel, ubuntu-22.04, mipsel-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-x86_64, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (macos-aarch64, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
EasyTier Core / build (macos-x86_64, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
EasyTier Core / build (windows-arm64, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / build (windows-i686, windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / build (windows-x86_64, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / core-result (push) Has been cancelled
EasyTier Core / magisk_build (push) Has been cancelled
EasyTier GUI / build-gui (linux-aarch64, aarch64-unknown-linux-gnu, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
EasyTier GUI / build-gui (linux-x86_64, x86_64-unknown-linux-gnu, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
EasyTier GUI / build-gui (macos-aarch64, aarch64-apple-darwin, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
EasyTier GUI / build-gui (macos-x86_64, x86_64-apple-darwin, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
EasyTier GUI / build-gui (windows-arm64, aarch64-pc-windows-msvc, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / build-gui (windows-i686, i686-pc-windows-msvc, windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / build-gui (windows-x86_64, x86_64-pc-windows-msvc, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / gui-result (push) Has been cancelled
EasyTier Mobile / build-mobile (android, ubuntu-22.04, android) (push) Has been cancelled
EasyTier Mobile / mobile-result (push) Has been cancelled
EasyTier OHOS / build-ohos (push) Has been cancelled
EasyTier Test / test (push) Has been cancelled
Some checks failed
EasyTier Core / pre_job (push) Has been cancelled
EasyTier GUI / pre_job (push) Has been cancelled
EasyTier Mobile / pre_job (push) Has been cancelled
EasyTier OHOS / pre_job (push) Has been cancelled
EasyTier Test / pre_job (push) Has been cancelled
EasyTier Core / build_web (push) Has been cancelled
EasyTier Core / build (freebsd-13.2-x86_64, 13.2, ubuntu-22.04, x86_64-unknown-freebsd) (push) Has been cancelled
EasyTier Core / build (linux-aarch64, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-arm, ubuntu-22.04, arm-unknown-linux-musleabi) (push) Has been cancelled
EasyTier Core / build (linux-armhf, ubuntu-22.04, arm-unknown-linux-musleabihf) (push) Has been cancelled
EasyTier Core / build (linux-armv7, ubuntu-22.04, armv7-unknown-linux-musleabi) (push) Has been cancelled
EasyTier Core / build (linux-armv7hf, ubuntu-22.04, armv7-unknown-linux-musleabihf) (push) Has been cancelled
EasyTier Core / build (linux-mips, ubuntu-22.04, mips-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-mipsel, ubuntu-22.04, mipsel-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (linux-x86_64, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
EasyTier Core / build (macos-aarch64, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
EasyTier Core / build (macos-x86_64, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
EasyTier Core / build (windows-arm64, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / build (windows-i686, windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / build (windows-x86_64, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
EasyTier Core / core-result (push) Has been cancelled
EasyTier Core / magisk_build (push) Has been cancelled
EasyTier GUI / build-gui (linux-aarch64, aarch64-unknown-linux-gnu, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
EasyTier GUI / build-gui (linux-x86_64, x86_64-unknown-linux-gnu, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
EasyTier GUI / build-gui (macos-aarch64, aarch64-apple-darwin, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
EasyTier GUI / build-gui (macos-x86_64, x86_64-apple-darwin, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
EasyTier GUI / build-gui (windows-arm64, aarch64-pc-windows-msvc, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / build-gui (windows-i686, i686-pc-windows-msvc, windows-latest, i686-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / build-gui (windows-x86_64, x86_64-pc-windows-msvc, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
EasyTier GUI / gui-result (push) Has been cancelled
EasyTier Mobile / build-mobile (android, ubuntu-22.04, android) (push) Has been cancelled
EasyTier Mobile / mobile-result (push) Has been cancelled
EasyTier OHOS / build-ohos (push) Has been cancelled
EasyTier Test / test (push) Has been cancelled
This commit is contained in:
@@ -70,7 +70,11 @@ pub trait ConfigLoader: Send + Sync {
|
|||||||
fn get_dhcp(&self) -> bool;
|
fn get_dhcp(&self) -> bool;
|
||||||
fn set_dhcp(&self, dhcp: bool);
|
fn set_dhcp(&self, dhcp: bool);
|
||||||
|
|
||||||
fn add_proxy_cidr(&self, cidr: cidr::Ipv4Cidr, mapped_cidr: Option<cidr::Ipv4Cidr>);
|
fn add_proxy_cidr(
|
||||||
|
&self,
|
||||||
|
cidr: cidr::Ipv4Cidr,
|
||||||
|
mapped_cidr: Option<cidr::Ipv4Cidr>,
|
||||||
|
) -> Result<(), anyhow::Error>;
|
||||||
fn remove_proxy_cidr(&self, cidr: cidr::Ipv4Cidr);
|
fn remove_proxy_cidr(&self, cidr: cidr::Ipv4Cidr);
|
||||||
fn get_proxy_cidrs(&self) -> Vec<ProxyNetworkConfig>;
|
fn get_proxy_cidrs(&self) -> Vec<ProxyNetworkConfig>;
|
||||||
|
|
||||||
@@ -445,17 +449,23 @@ impl ConfigLoader for TomlConfigLoader {
|
|||||||
self.config.lock().unwrap().dhcp = Some(dhcp);
|
self.config.lock().unwrap().dhcp = Some(dhcp);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_proxy_cidr(&self, cidr: cidr::Ipv4Cidr, mapped_cidr: Option<cidr::Ipv4Cidr>) {
|
fn add_proxy_cidr(
|
||||||
|
&self,
|
||||||
|
cidr: cidr::Ipv4Cidr,
|
||||||
|
mapped_cidr: Option<cidr::Ipv4Cidr>,
|
||||||
|
) -> Result<(), anyhow::Error> {
|
||||||
let mut locked_config = self.config.lock().unwrap();
|
let mut locked_config = self.config.lock().unwrap();
|
||||||
if locked_config.proxy_network.is_none() {
|
if locked_config.proxy_network.is_none() {
|
||||||
locked_config.proxy_network = Some(vec![]);
|
locked_config.proxy_network = Some(vec![]);
|
||||||
}
|
}
|
||||||
if let Some(mapped_cidr) = mapped_cidr.as_ref() {
|
if let Some(mapped_cidr) = mapped_cidr.as_ref() {
|
||||||
assert_eq!(
|
if cidr.network_length() != mapped_cidr.network_length() {
|
||||||
cidr.network_length(),
|
return Err(anyhow::anyhow!(
|
||||||
mapped_cidr.network_length(),
|
"Mapped CIDR must have the same network length as the original CIDR: {} != {}",
|
||||||
"Mapped CIDR must have the same network length as the original CIDR",
|
cidr.network_length(),
|
||||||
);
|
mapped_cidr.network_length()
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// insert if no duplicate
|
// insert if no duplicate
|
||||||
if !locked_config
|
if !locked_config
|
||||||
@@ -475,6 +485,7 @@ impl ConfigLoader for TomlConfigLoader {
|
|||||||
allow: None,
|
allow: None,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn remove_proxy_cidr(&self, cidr: cidr::Ipv4Cidr) {
|
fn remove_proxy_cidr(&self, cidr: cidr::Ipv4Cidr) {
|
||||||
|
|||||||
@@ -168,13 +168,23 @@ impl DNSTunnelConnector {
|
|||||||
impl super::TunnelConnector for DNSTunnelConnector {
|
impl super::TunnelConnector for DNSTunnelConnector {
|
||||||
async fn connect(&mut self) -> Result<Box<dyn Tunnel>, TunnelError> {
|
async fn connect(&mut self) -> Result<Box<dyn Tunnel>, TunnelError> {
|
||||||
let mut conn = if self.addr.scheme() == "txt" {
|
let mut conn = if self.addr.scheme() == "txt" {
|
||||||
self.handle_txt_record(self.addr.host_str().as_ref().unwrap())
|
self.handle_txt_record(
|
||||||
.await
|
self.addr
|
||||||
.with_context(|| "get txt record url failed")?
|
.host_str()
|
||||||
|
.as_ref()
|
||||||
|
.ok_or(anyhow::anyhow!("host should not be empty in txt url"))?,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.with_context(|| "get txt record url failed")?
|
||||||
} else if self.addr.scheme() == "srv" {
|
} else if self.addr.scheme() == "srv" {
|
||||||
self.handle_srv_record(self.addr.host_str().as_ref().unwrap())
|
self.handle_srv_record(
|
||||||
.await
|
self.addr
|
||||||
.with_context(|| "get srv record url failed")?
|
.host_str()
|
||||||
|
.as_ref()
|
||||||
|
.ok_or(anyhow::anyhow!("host should not be empty in srv url"))?,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.with_context(|| "get srv record url failed")?
|
||||||
} else {
|
} else {
|
||||||
return Err(anyhow::anyhow!(
|
return Err(anyhow::anyhow!(
|
||||||
"unsupported dns scheme: {}, expecting txt or srv",
|
"unsupported dns scheme: {}, expecting txt or srv",
|
||||||
|
|||||||
@@ -147,6 +147,12 @@ pub async fn create_connector_by_url(
|
|||||||
Box::new(connector)
|
Box::new(connector)
|
||||||
}
|
}
|
||||||
"txt" | "srv" => {
|
"txt" | "srv" => {
|
||||||
|
if url.host_str().is_none() {
|
||||||
|
return Err(Error::InvalidUrl(format!(
|
||||||
|
"host should not be empty in txt or srv url: {}",
|
||||||
|
url
|
||||||
|
)));
|
||||||
|
}
|
||||||
let connector = dns_connector::DNSTunnelConnector::new(url, global_ctx.clone());
|
let connector = dns_connector::DNSTunnelConnector::new(url, global_ctx.clone());
|
||||||
Box::new(connector)
|
Box::new(connector)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -658,6 +658,7 @@ impl NetworkOptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !self.mapped_listeners.is_empty() {
|
if !self.mapped_listeners.is_empty() {
|
||||||
|
let mut errs = Vec::new();
|
||||||
cfg.set_mapped_listeners(Some(
|
cfg.set_mapped_listeners(Some(
|
||||||
self.mapped_listeners
|
self.mapped_listeners
|
||||||
.iter()
|
.iter()
|
||||||
@@ -668,12 +669,21 @@ impl NetworkOptions {
|
|||||||
})
|
})
|
||||||
.map(|s: url::Url| {
|
.map(|s: url::Url| {
|
||||||
if s.port().is_none() {
|
if s.port().is_none() {
|
||||||
panic!("mapped listener port is missing: {}", s);
|
errs.push(anyhow::anyhow!("mapped listener port is missing: {}", s));
|
||||||
}
|
}
|
||||||
s
|
s
|
||||||
})
|
})
|
||||||
.collect(),
|
.collect::<Vec<_>>(),
|
||||||
));
|
));
|
||||||
|
if !errs.is_empty() {
|
||||||
|
return Err(anyhow::anyhow!(
|
||||||
|
"{}",
|
||||||
|
errs.iter()
|
||||||
|
.map(|x| format!("{}", x))
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join("\n")
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for n in self.proxy_networks.iter() {
|
for n in self.proxy_networks.iter() {
|
||||||
|
|||||||
@@ -483,7 +483,7 @@ pub fn add_proxy_network_to_config(
|
|||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
cfg.add_proxy_cidr(real_cidr, mapped_cidr);
|
cfg.add_proxy_cidr(real_cidr, mapped_cidr)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1003,7 +1003,7 @@ mod tests {
|
|||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
config.add_proxy_cidr(network, mapped_network);
|
config.add_proxy_cidr(network, mapped_network).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -448,7 +448,8 @@ pub async fn quic_proxy() {
|
|||||||
"udp",
|
"udp",
|
||||||
|cfg| {
|
|cfg| {
|
||||||
if cfg.get_inst_name() == "inst3" {
|
if cfg.get_inst_name() == "inst3" {
|
||||||
cfg.add_proxy_cidr("10.1.2.0/24".parse().unwrap(), None);
|
cfg.add_proxy_cidr("10.1.2.0/24".parse().unwrap(), None)
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
cfg
|
cfg
|
||||||
},
|
},
|
||||||
@@ -498,11 +499,13 @@ pub async fn subnet_proxy_three_node_test(
|
|||||||
flags.disable_quic_input = disable_quic_input;
|
flags.disable_quic_input = disable_quic_input;
|
||||||
flags.enable_quic_proxy = dst_enable_quic_proxy;
|
flags.enable_quic_proxy = dst_enable_quic_proxy;
|
||||||
cfg.set_flags(flags);
|
cfg.set_flags(flags);
|
||||||
cfg.add_proxy_cidr("10.1.2.0/24".parse().unwrap(), None);
|
cfg.add_proxy_cidr("10.1.2.0/24".parse().unwrap(), None)
|
||||||
|
.unwrap();
|
||||||
cfg.add_proxy_cidr(
|
cfg.add_proxy_cidr(
|
||||||
"10.1.2.0/24".parse().unwrap(),
|
"10.1.2.0/24".parse().unwrap(),
|
||||||
Some("10.1.3.0/24".parse().unwrap()),
|
Some("10.1.3.0/24".parse().unwrap()),
|
||||||
);
|
)
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.get_inst_name() == "inst2" && relay_by_public_server {
|
if cfg.get_inst_name() == "inst2" && relay_by_public_server {
|
||||||
@@ -1181,7 +1184,8 @@ pub async fn port_forward_test(
|
|||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
} else if cfg.get_inst_name() == "inst3" {
|
} else if cfg.get_inst_name() == "inst3" {
|
||||||
cfg.add_proxy_cidr("10.1.2.0/24".parse().unwrap(), None);
|
cfg.add_proxy_cidr("10.1.2.0/24".parse().unwrap(), None)
|
||||||
|
.unwrap();
|
||||||
}
|
}
|
||||||
let mut flags = cfg.get_flags();
|
let mut flags = cfg.get_flags();
|
||||||
flags.no_tun = no_tun;
|
flags.no_tun = no_tun;
|
||||||
|
|||||||
Reference in New Issue
Block a user