From 9feb548bc24443fcf5c24aa0dd6062735330e536 Mon Sep 17 00:00:00 2001 From: Luna Yao <40349250+ZnqbuZ@users.noreply.github.com> Date: Sun, 19 Apr 2026 00:33:47 +0200 Subject: [PATCH] remove fqdn from DnsConfig l l plan: update plan: update --- easytier/src/common/config.rs | 10 +++++--- easytier/src/common/global_ctx.rs | 22 ++++++++++------- easytier/src/dns/config/dns.rs | 41 ++----------------------------- easytier/src/dns/peer_mgr.rs | 2 +- easytier/src/dns/tests.rs | 2 +- 5 files changed, 23 insertions(+), 54 deletions(-) diff --git a/easytier/src/common/config.rs b/easytier/src/common/config.rs index 223649f7..16eb8650 100644 --- a/easytier/src/common/config.rs +++ b/easytier/src/common/config.rs @@ -581,10 +581,12 @@ impl ConfigLoader for TomlConfigLoader { self.set_hostname(hostname.clone()); hostname.unwrap_or_else(|| { - hostname::get() - .unwrap_or_default() - .to_string_lossy() - .into_owned() + sanitize( + hostname::get() + .unwrap_or_default() + .to_string_lossy() + .as_ref(), + ) }) } diff --git a/easytier/src/common/global_ctx.rs b/easytier/src/common/global_ctx.rs index 6ec31632..3ad5840c 100644 --- a/easytier/src/common/global_ctx.rs +++ b/easytier/src/common/global_ctx.rs @@ -23,7 +23,7 @@ use super::{ }; #[cfg(feature = "magic-dns")] use crate::dns::{ - config::{DnsExportConfig, DnsGlobalCtxExt}, + config::{DnsConfigLoaderExt, DnsExportConfig, DnsGlobalCtxExt}, server::DnsServer, }; use crate::{ @@ -691,18 +691,22 @@ impl DnsGlobalCtxExt for GlobalCtx { } fn dns_self_zone(&self) -> crate::dns::config::zone::ZoneConfig { - let fqdn = self.config.get_dns().get_fqdn(); + let dns = self.config.get_dns(); + let mut hostname = dns.name.to_string(); + if hostname.is_empty() { + hostname = self.get_hostname(); + } + let fqdn = dns + .domain + .prepend_label(hostname) + .unwrap_or_default() + .into(); let ipv4 = self.get_ipv4().map(|ip| ip.address()); let ipv6 = self.get_ipv6().map(|ip| ip.address()); let ipv6 = ipv6.map(|a| vec![a]).unwrap_or_default(); - crate::dns::config::zone::ZoneConfig::dedicated( - Some(self.get_id()), - fqdn.clone(), - ipv4, - ipv6, - ) - .unwrap() + crate::dns::config::zone::ZoneConfig::dedicated(Some(self.get_id()), fqdn, ipv4, ipv6) + .unwrap() } fn dns_export_config(&self) -> DnsExportConfig { diff --git a/easytier/src/dns/config/dns.rs b/easytier/src/dns/config/dns.rs index 57d2817a..477e93ca 100644 --- a/easytier/src/dns/config/dns.rs +++ b/easytier/src/dns/config/dns.rs @@ -4,13 +4,11 @@ use crate::dns::config::{DNS_DEFAULT_ADDRESS, DNS_DEFAULT_DOMAIN}; use crate::dns::server::DnsServer; use crate::dns::utils::addr::NameServerAddrGroup; use crate::proto::dns::GetExportConfigResponse; -use crate::utils::dns::parse; use derivative::Derivative; use hickory_net::xfer::Protocol; -use hickory_proto::rr::{LowerName, Name}; +use hickory_proto::rr::LowerName; use serde::{Deserialize, Deserializer, Serialize}; use std::collections::HashMap; -use std::iter; use std::sync::Arc; #[derive(Derivative, Debug, Clone, Deserialize, Serialize, PartialEq)] @@ -21,7 +19,7 @@ pub struct DnsConfig { pub zones: Vec, #[serde(flatten)] pub policies: HashMap, - name: LowerName, + pub name: LowerName, #[derivative(Default(value = "DNS_DEFAULT_DOMAIN.clone()"))] pub domain: LowerName, #[derivative(Default(value = "vec![DNS_DEFAULT_ADDRESS].into()"))] @@ -48,41 +46,6 @@ impl DnsConfig { } } -impl DnsConfig { - pub fn get_name(&self) -> LowerName { - if self.name.is_empty() { - parse( - hostname::get() - .unwrap_or_default() - .to_string_lossy() - .as_ref(), - ) - } else { - self.name.clone() - } - } - - pub fn set_name(&mut self, name: &str) { - self.name = parse(name); - } - - pub fn get_fqdn(&self) -> LowerName { - Name::from(self.get_name()) - .append_domain(&self.domain) - .unwrap() - .into() - } - - pub fn set_fqdn(&mut self, fqdn: &str) { - let mut fqdn = Name::from(parse(fqdn)); - fqdn.set_fqdn(true); - self.name = Name::from_labels(iter::once(fqdn.iter().next().unwrap_or_default())) - .unwrap_or_default() - .into(); - self.domain = fqdn.base_name().into(); - } -} - #[auto_impl::auto_impl(Box, &)] pub trait DnsConfigLoaderExt { fn get_dns(&self) -> DnsConfig; diff --git a/easytier/src/dns/peer_mgr.rs b/easytier/src/dns/peer_mgr.rs index 94930c51..c1ec72bd 100644 --- a/easytier/src/dns/peer_mgr.rs +++ b/easytier/src/dns/peer_mgr.rs @@ -213,7 +213,7 @@ mod tests { ) -> Arc { let ctx = get_mock_global_ctx(); let mut dns = ctx.config.get_dns(); - dns.set_name(host); + dns.name = host.parse().unwrap(); dns.zones.push( ZoneConfig::dedicated( Some(Uuid::new_v4()), diff --git a/easytier/src/dns/tests.rs b/easytier/src/dns/tests.rs index 86e36253..2b4bd545 100644 --- a/easytier/src/dns/tests.rs +++ b/easytier/src/dns/tests.rs @@ -47,7 +47,7 @@ pub async fn prepare_env_with_tld_dns_zone( ctx.set_ipv4(Some(tun_ip)); let mut dns_config = ctx.config.get_dns(); - dns_config.set_name(dns_name); + dns_config.name = dns_name.parse().unwrap(); if let Some(zone) = tld_dns_zone { dns_config.domain = zone.parse().expect("invalid test dns zone"); }