mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-05-07 10:14:35 +00:00
clippy all codes (#1214)
1. clippy code 2. add fmt and clippy check in ci
This commit is contained in:
@@ -59,7 +59,7 @@ impl MagicDnsClientInstance {
|
||||
tokio::time::sleep(Duration::from_millis(500)).await;
|
||||
continue;
|
||||
}
|
||||
prev_last_update = Some(last_update);
|
||||
|
||||
let mut routes = peer_mgr.list_routes().await;
|
||||
// add self as a route
|
||||
let ctx = peer_mgr.get_global_ctx();
|
||||
@@ -79,6 +79,11 @@ impl MagicDnsClientInstance {
|
||||
rpc_stub
|
||||
.update_dns_record(BaseController::default(), req)
|
||||
.await?;
|
||||
|
||||
let last_update_after_rpc = peer_mgr.get_route_peer_info_last_update_time().await;
|
||||
if last_update_after_rpc == last_update {
|
||||
prev_last_update = Some(last_update);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ impl Record {
|
||||
}
|
||||
|
||||
fn rr_type(&self) -> rr::RecordType {
|
||||
self.rr_type.clone().into()
|
||||
self.rr_type
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ ttl = "61s"
|
||||
let (domain, records) = config
|
||||
.zones
|
||||
.get_key_value("et.internal")
|
||||
.map_or(Err(anyhow!("parse error")), |x| Ok(x))?;
|
||||
.ok_or(anyhow!("et.internal not found"))?;
|
||||
assert_eq!(domain, "et.internal");
|
||||
assert_eq!(records.len(), 1);
|
||||
let record = &records[0];
|
||||
@@ -179,7 +179,7 @@ ttl = "61s"
|
||||
let (domain, records) = config
|
||||
.zones
|
||||
.get_key_value("et.top")
|
||||
.map_or(Err(anyhow!("parse error")), |x| Ok(x))?;
|
||||
.ok_or(anyhow!("et.top not found"))?;
|
||||
assert_eq!(domain, "et.top");
|
||||
assert_eq!(records.len(), 1);
|
||||
let record = &records[0];
|
||||
|
||||
@@ -65,7 +65,7 @@ impl DnsRunner {
|
||||
self.client = Some(client);
|
||||
self.client.as_mut().unwrap().run_and_wait().await;
|
||||
|
||||
return Err(anyhow::anyhow!("Client instance exit"));
|
||||
Err(anyhow::anyhow!("Client instance exit"))
|
||||
}
|
||||
|
||||
pub async fn run(&mut self, canel_token: CancellationToken) {
|
||||
|
||||
@@ -96,12 +96,12 @@ impl Server {
|
||||
.0
|
||||
.name_servers()
|
||||
.iter()
|
||||
.cloned()
|
||||
.filter(|x| {
|
||||
.filter(|&x| {
|
||||
!config
|
||||
.excluded_forward_nameservers()
|
||||
.contains(&x.socket_addr.ip())
|
||||
})
|
||||
.cloned()
|
||||
.collect::<Vec<_>>()
|
||||
.into(),
|
||||
options: Some(system_conf.1),
|
||||
@@ -148,7 +148,7 @@ impl Server {
|
||||
.with_context(|| {
|
||||
format!(
|
||||
"DNS Server failed to create UDP socket for address {}",
|
||||
address.to_string()
|
||||
address
|
||||
)
|
||||
})?;
|
||||
socket2::SockRef::from(&socket)
|
||||
@@ -156,7 +156,7 @@ impl Server {
|
||||
.with_context(|| {
|
||||
format!(
|
||||
"DNS Server failed to set reuse address on socket {}",
|
||||
address.to_string()
|
||||
address
|
||||
)
|
||||
})?;
|
||||
socket.bind(&bind_addr.into()).with_context(|| {
|
||||
@@ -164,17 +164,17 @@ impl Server {
|
||||
})?;
|
||||
socket
|
||||
.set_nonblocking(true)
|
||||
.with_context(|| format!("DNS Server failed to set socket to non-blocking"))?;
|
||||
.with_context(|| "DNS Server failed to set socket to non-blocking".to_string())?;
|
||||
let socket = UdpSocket::from_std(socket.into()).with_context(|| {
|
||||
format!(
|
||||
"DNS Server failed to convert socket to UdpSocket for address {}",
|
||||
address.to_string()
|
||||
address
|
||||
)
|
||||
})?;
|
||||
|
||||
let local_addr = socket
|
||||
.local_addr()
|
||||
.with_context(|| format!("DNS Server failed to get local address"))?;
|
||||
.with_context(|| "DNS Server failed to get local address".to_string())?;
|
||||
self.server.register_socket(socket);
|
||||
|
||||
Ok(local_addr)
|
||||
|
||||
@@ -70,6 +70,20 @@ pub(super) struct MagicDnsServerInstanceData {
|
||||
}
|
||||
|
||||
impl MagicDnsServerInstanceData {
|
||||
fn is_valid_subdomain_label(s: &str) -> bool {
|
||||
let s = s.trim();
|
||||
|
||||
// 长度检查:1-63 个字符
|
||||
if s.is_empty() || s.len() > 63 {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 检查每个字符是否合法,并确保不以 '-' 开头或结尾
|
||||
s.chars().all(|c| matches!(c, 'a'..='z' | '0'..='9' | '-'))
|
||||
&& !s.starts_with('-')
|
||||
&& !s.ends_with('-')
|
||||
}
|
||||
|
||||
pub async fn update_dns_records<'a, T: Iterator<Item = &'a Route>>(
|
||||
&self,
|
||||
routes: T,
|
||||
@@ -81,6 +95,11 @@ impl MagicDnsServerInstanceData {
|
||||
continue;
|
||||
}
|
||||
|
||||
// check host name valid for dns
|
||||
if !Self::is_valid_subdomain_label(&route.hostname) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let Some(ipv4_addr) = route.ipv4_addr.unwrap_or_default().address else {
|
||||
continue;
|
||||
};
|
||||
@@ -432,7 +451,7 @@ impl MagicDnsServerInstance {
|
||||
if !self.tun_inet.contains(&self.data.fake_ip) && self.data.tun_dev.is_some() {
|
||||
let ifcfg = IfConfiger {};
|
||||
let _ = ifcfg
|
||||
.remove_ipv4_route(&self.data.tun_dev.as_ref().unwrap(), self.data.fake_ip, 32)
|
||||
.remove_ipv4_route(self.data.tun_dev.as_ref().unwrap(), self.data.fake_ip, 32)
|
||||
.await;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,13 +26,19 @@ struct DNSConfigError {
|
||||
source: Option<anyhow::Error>,
|
||||
}
|
||||
|
||||
type DbusPingFn = dyn Fn(&str, &str) -> Result<()>;
|
||||
type DbusReadStringFn = dyn Fn(&str, &str, &str, &str) -> Result<String>;
|
||||
type NmIsUsingResolvedFn = dyn Fn() -> Result<()>;
|
||||
type NmVersionBetweenFn = dyn Fn(&str, &str) -> Result<bool>;
|
||||
type ResolvconfStyleFn = dyn Fn() -> String;
|
||||
|
||||
// 配置环境结构体
|
||||
struct OSConfigEnv {
|
||||
fs: Box<dyn FileSystem>,
|
||||
dbus_ping: Box<dyn Fn(&str, &str) -> Result<()>>,
|
||||
dbus_read_string: Box<dyn Fn(&str, &str, &str, &str) -> Result<String>>,
|
||||
nm_is_using_resolved: Box<dyn Fn() -> Result<()>>,
|
||||
nm_version_between: Box<dyn Fn(&str, &str) -> Result<bool>>,
|
||||
dbus_ping: Box<DbusPingFn>,
|
||||
dbus_read_string: Box<DbusReadStringFn>,
|
||||
nm_is_using_resolved: Box<NmIsUsingResolvedFn>,
|
||||
nm_version_between: Box<NmVersionBetweenFn>,
|
||||
resolvconf_style: Box<dyn Fn() -> String>,
|
||||
}
|
||||
|
||||
@@ -86,8 +92,7 @@ pub fn nm_is_using_resolved() -> Result<()> {
|
||||
return Err(anyhow::anyhow!(
|
||||
"NetworkManager is not using systemd-resolved, found: {:?}",
|
||||
value
|
||||
)
|
||||
.into());
|
||||
));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
@@ -41,7 +41,7 @@ pub async fn prepare_env(dns_name: &str, tun_ip: Ipv4Inet) -> (Arc<PeerManager>,
|
||||
|
||||
pub async fn check_dns_record(fake_ip: &Ipv4Addr, domain: &str, expected_ip: &str) {
|
||||
let stream = UdpClientStream::builder(
|
||||
SocketAddr::new(fake_ip.clone().into(), 53),
|
||||
SocketAddr::new((*fake_ip).into(), 53),
|
||||
TokioRuntimeProvider::default(),
|
||||
)
|
||||
.build();
|
||||
|
||||
Reference in New Issue
Block a user