add DnsConfig and ZoneConfig with proto definitions

This commit is contained in:
Luna Yao
2026-02-05 18:30:09 +01:00
parent 7abdfd35e8
commit 3f3aec8edd
10 changed files with 319 additions and 15 deletions
+14
View File
@@ -16,6 +16,7 @@ use tokio::io::AsyncReadExt as _;
use crate::{
common::stun::StunInfoCollector,
dns::config::DnsConfig,
instance::dns_server::DEFAULT_ET_DNS_ZONE,
proto::{
acl::Acl,
@@ -207,6 +208,9 @@ pub trait ConfigLoader: Send + Sync {
}
fn set_credential_file(&self, _path: Option<std::path::PathBuf>) {}
fn get_dns(&self) -> DnsConfig;
fn set_dns(&self, dns: DnsConfig);
fn dump(&self) -> String;
}
@@ -444,6 +448,8 @@ struct Config {
peer: Option<Vec<PeerConfig>>,
proxy_network: Option<Vec<ProxyNetworkConfig>>,
dns: Option<DnsConfig>,
vpn_portal_config: Option<VpnPortalConfig>,
routes: Option<Vec<cidr::Ipv4Cidr>>,
@@ -868,6 +874,14 @@ impl ConfigLoader for TomlConfigLoader {
self.config.lock().unwrap().credential_file = path;
}
fn get_dns(&self) -> DnsConfig {
self.config.lock().unwrap().dns.clone().unwrap_or_default()
}
fn set_dns(&self, dns: DnsConfig) {
self.config.lock().unwrap().dns = Some(dns);
}
fn dump(&self) -> String {
let default_flags_json = serde_json::to_string(&gen_default_flags()).unwrap();
let default_flags_hashmap =