mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-09-02 09:09:17 +00:00
remove fqdn from DnsConfig
l l plan: update plan: update
This commit is contained in:
@@ -581,10 +581,12 @@ impl ConfigLoader for TomlConfigLoader {
|
|||||||
|
|
||||||
self.set_hostname(hostname.clone());
|
self.set_hostname(hostname.clone());
|
||||||
hostname.unwrap_or_else(|| {
|
hostname.unwrap_or_else(|| {
|
||||||
hostname::get()
|
sanitize(
|
||||||
.unwrap_or_default()
|
hostname::get()
|
||||||
.to_string_lossy()
|
.unwrap_or_default()
|
||||||
.into_owned()
|
.to_string_lossy()
|
||||||
|
.as_ref(),
|
||||||
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ use super::{
|
|||||||
};
|
};
|
||||||
#[cfg(feature = "magic-dns")]
|
#[cfg(feature = "magic-dns")]
|
||||||
use crate::dns::{
|
use crate::dns::{
|
||||||
config::{DnsExportConfig, DnsGlobalCtxExt},
|
config::{DnsConfigLoaderExt, DnsExportConfig, DnsGlobalCtxExt},
|
||||||
server::DnsServer,
|
server::DnsServer,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
@@ -691,18 +691,22 @@ impl DnsGlobalCtxExt for GlobalCtx {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn dns_self_zone(&self) -> crate::dns::config::zone::ZoneConfig {
|
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 ipv4 = self.get_ipv4().map(|ip| ip.address());
|
||||||
let ipv6 = self.get_ipv6().map(|ip| ip.address());
|
let ipv6 = self.get_ipv6().map(|ip| ip.address());
|
||||||
let ipv6 = ipv6.map(|a| vec![a]).unwrap_or_default();
|
let ipv6 = ipv6.map(|a| vec![a]).unwrap_or_default();
|
||||||
|
|
||||||
crate::dns::config::zone::ZoneConfig::dedicated(
|
crate::dns::config::zone::ZoneConfig::dedicated(Some(self.get_id()), fqdn, ipv4, ipv6)
|
||||||
Some(self.get_id()),
|
.unwrap()
|
||||||
fqdn.clone(),
|
|
||||||
ipv4,
|
|
||||||
ipv6,
|
|
||||||
)
|
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dns_export_config(&self) -> DnsExportConfig {
|
fn dns_export_config(&self) -> DnsExportConfig {
|
||||||
|
|||||||
@@ -4,13 +4,11 @@ use crate::dns::config::{DNS_DEFAULT_ADDRESS, DNS_DEFAULT_DOMAIN};
|
|||||||
use crate::dns::server::DnsServer;
|
use crate::dns::server::DnsServer;
|
||||||
use crate::dns::utils::addr::NameServerAddrGroup;
|
use crate::dns::utils::addr::NameServerAddrGroup;
|
||||||
use crate::proto::dns::GetExportConfigResponse;
|
use crate::proto::dns::GetExportConfigResponse;
|
||||||
use crate::utils::dns::parse;
|
|
||||||
use derivative::Derivative;
|
use derivative::Derivative;
|
||||||
use hickory_net::xfer::Protocol;
|
use hickory_net::xfer::Protocol;
|
||||||
use hickory_proto::rr::{LowerName, Name};
|
use hickory_proto::rr::LowerName;
|
||||||
use serde::{Deserialize, Deserializer, Serialize};
|
use serde::{Deserialize, Deserializer, Serialize};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::iter;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
#[derive(Derivative, Debug, Clone, Deserialize, Serialize, PartialEq)]
|
#[derive(Derivative, Debug, Clone, Deserialize, Serialize, PartialEq)]
|
||||||
@@ -21,7 +19,7 @@ pub struct DnsConfig {
|
|||||||
pub zones: Vec<ZoneConfig>,
|
pub zones: Vec<ZoneConfig>,
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub policies: HashMap<LowerName, DnsPolicyConfig>,
|
pub policies: HashMap<LowerName, DnsPolicyConfig>,
|
||||||
name: LowerName,
|
pub name: LowerName,
|
||||||
#[derivative(Default(value = "DNS_DEFAULT_DOMAIN.clone()"))]
|
#[derivative(Default(value = "DNS_DEFAULT_DOMAIN.clone()"))]
|
||||||
pub domain: LowerName,
|
pub domain: LowerName,
|
||||||
#[derivative(Default(value = "vec![DNS_DEFAULT_ADDRESS].into()"))]
|
#[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, &)]
|
#[auto_impl::auto_impl(Box, &)]
|
||||||
pub trait DnsConfigLoaderExt {
|
pub trait DnsConfigLoaderExt {
|
||||||
fn get_dns(&self) -> DnsConfig;
|
fn get_dns(&self) -> DnsConfig;
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ mod tests {
|
|||||||
) -> Arc<PeerManager> {
|
) -> Arc<PeerManager> {
|
||||||
let ctx = get_mock_global_ctx();
|
let ctx = get_mock_global_ctx();
|
||||||
let mut dns = ctx.config.get_dns();
|
let mut dns = ctx.config.get_dns();
|
||||||
dns.set_name(host);
|
dns.name = host.parse().unwrap();
|
||||||
dns.zones.push(
|
dns.zones.push(
|
||||||
ZoneConfig::dedicated(
|
ZoneConfig::dedicated(
|
||||||
Some(Uuid::new_v4()),
|
Some(Uuid::new_v4()),
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ pub async fn prepare_env_with_tld_dns_zone(
|
|||||||
ctx.set_ipv4(Some(tun_ip));
|
ctx.set_ipv4(Some(tun_ip));
|
||||||
|
|
||||||
let mut dns_config = ctx.config.get_dns();
|
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 {
|
if let Some(zone) = tld_dns_zone {
|
||||||
dns_config.domain = zone.parse().expect("invalid test dns zone");
|
dns_config.domain = zone.parse().expect("invalid test dns zone");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user