system: add get; rename

This commit is contained in:
Luna Yao
2026-03-31 00:26:12 +02:00
parent 18e28197b8
commit 8559de1857
4 changed files with 33 additions and 11 deletions
@@ -6,7 +6,7 @@ use std::{
path::Path,
};
use super::{OSConfig, SystemConfigurator};
use super::{SystemConfig, SystemConfigurator};
const MAC_RESOLVER_FILE_HEADER: &str = "# Added by easytier\n";
const ETC_RESOLVER: &str = "/etc/resolver";
@@ -27,7 +27,7 @@ impl DarwinConfigurator {
true
}
pub fn do_set_dns(&self, cfg: &OSConfig) -> io::Result<()> {
pub fn do_set_dns(&self, cfg: &SystemConfig) -> io::Result<()> {
fs::create_dir_all(ETC_RESOLVER)?;
let mut keep = HashSet::new();
@@ -105,7 +105,7 @@ impl DarwinConfigurator {
}
impl SystemConfigurator for DarwinConfigurator {
fn set_dns(&self, cfg: &OSConfig) -> io::Result<()> {
fn set_dns(&self, cfg: &SystemConfig) -> io::Result<()> {
self.do_set_dns(cfg)
}
+26 -4
View File
@@ -1,3 +1,5 @@
use crate::utils::BoxExt;
#[cfg(target_os = "linux")]
pub mod linux;
@@ -5,16 +7,36 @@ pub mod linux;
pub mod windows;
#[cfg(all(target_os = "macos", not(feature = "macos-ne")))]
pub mod darwin;
pub mod macos;
#[derive(Default, Debug)]
pub struct OSConfig {
pub struct SystemConfig {
pub nameservers: Vec<String>,
pub search_domains: Vec<String>,
pub match_domains: Vec<String>,
}
pub trait SystemConfigurator: Send + Sync + Clone {
fn set_dns(&self, cfg: &OSConfig) -> std::io::Result<()>;
pub trait SystemConfigurator: Send + Sync {
fn set_dns(&self, cfg: &SystemConfig) -> std::io::Result<()>;
fn clean(&self) -> std::io::Result<()>;
}
// TODO: move this to nic mod
fn get(
#[allow(unused_variables)] interface: &str,
) -> Result<Option<Box<dyn SystemConfigurator>>, anyhow::Error> {
#[cfg(target_os = "windows")]
{
use crate::dns::system::windows::WindowsDNSManager;
return Ok(Some(WindowsDNSManager::new(interface)?.boxed()));
}
#[cfg(all(target_os = "macos", not(feature = "macos-ne")))]
{
use crate::dns::system_config::darwin::DarwinConfigurator;
return Ok(Some(DarwinConfigurator::new().boxed()));
}
#[allow(unreachable_code)]
Ok(None)
}
+2 -2
View File
@@ -6,7 +6,7 @@ use winreg::RegKey;
use crate::common::ifcfg::RegistryManager;
use super::{OSConfig, SystemConfigurator};
use super::{SystemConfig, SystemConfigurator};
pub fn is_windows_10_or_better() -> io::Result<bool> {
let hklm = winreg::enums::HKEY_LOCAL_MACHINE;
@@ -149,7 +149,7 @@ impl WindowsDNSManager {
}
impl SystemConfigurator for WindowsDNSManager {
fn set_dns(&self, cfg: &OSConfig) -> io::Result<()> {
fn set_dns(&self, cfg: &SystemConfig) -> io::Result<()> {
self.set_primary_dns(
&cfg.nameservers
.iter()
@@ -11,7 +11,7 @@ use super::{
server::Server,
MAGIC_DNS_INSTANCE_ADDR,
};
use crate::dns::system::{OSConfig, SystemConfigurator};
use crate::dns::system::{SystemConfig, SystemConfigurator};
use crate::{
common::{
ifcfg::{IfConfiger, IfConfiguerTrait},
@@ -155,7 +155,7 @@ impl MagicDnsServerInstanceData {
fn do_system_config(&self, zone: &str) -> Result<(), anyhow::Error> {
if let Some(c) = &self.system_config {
c.set_dns(&OSConfig {
c.set_dns(&SystemConfig {
nameservers: vec![self.fake_ip.to_string()],
search_domains: vec![zone.to_string()],
match_domains: vec![zone.to_string()],