feat(wip): Support opnsense 25.7 which defaults to dnsmasq instead of isc dhcp

This commit is contained in:
2025-08-20 21:54:46 -04:00
parent 597dcbc848
commit 27c51e0ec5
15 changed files with 4661 additions and 185 deletions

View File

@@ -4,8 +4,7 @@ use crate::{
config::{SshConfigManager, SshCredentials, SshOPNSenseShell},
error::Error,
modules::{
caddy::CaddyConfig, dhcp::DhcpConfig, dns::DnsConfig, load_balancer::LoadBalancerConfig,
tftp::TftpConfig,
caddy::CaddyConfig, dhcp_legacy::DhcpConfigLegacyISC, dns::DnsConfig, dnsmasq::DhcpConfigDnsMasq, load_balancer::LoadBalancerConfig, tftp::TftpConfig
},
};
use log::{debug, info, trace, warn};
@@ -43,8 +42,12 @@ impl Config {
})
}
pub fn dhcp(&mut self) -> DhcpConfig {
DhcpConfig::new(&mut self.opnsense, self.shell.clone())
pub fn dhcp_legacy_isc(&mut self) -> DhcpConfigLegacyISC {
DhcpConfigLegacyISC::new(&mut self.opnsense, self.shell.clone())
}
pub fn dhcp(&mut self) -> DhcpConfigDnsMasq {
DhcpConfigDnsMasq::new(&mut self.opnsense, self.shell.clone())
}
pub fn dns(&mut self) -> DnsConfig {
@@ -200,7 +203,7 @@ impl Config {
#[cfg(test)]
mod tests {
use crate::config::{DummyOPNSenseShell, LocalFileConfigManager};
use crate::modules::dhcp::DhcpConfig;
use crate::modules::dhcp_legacy::DhcpConfigLegacyISC;
use std::fs;
use std::net::Ipv4Addr;
@@ -215,6 +218,9 @@ mod tests {
"src/tests/data/config-vm-test.xml",
"src/tests/data/config-structure.xml",
"src/tests/data/config-full-1.xml",
"src/tests/data/config-full-ncd0.xml",
"src/tests/data/config-full-25.7.xml",
"src/tests/data/config-full-25.7-dummy-dnsmasq-options.xml",
] {
let mut test_file_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
test_file_path.push(path);
@@ -257,7 +263,7 @@ mod tests {
println!("Config {:?}", config);
let mut dhcp_config = DhcpConfig::new(&mut config.opnsense, shell);
let mut dhcp_config = DhcpConfigLegacyISC::new(&mut config.opnsense, shell);
dhcp_config
.add_static_mapping(
"00:00:00:00:00:00",