feat(wip): Support opnsense 25.7 which defaults to dnsmasq instead of isc dhcp
This commit is contained in:
parent
597dcbc848
commit
27c51e0ec5
19
Cargo.lock
generated
19
Cargo.lock
generated
@ -105,7 +105,7 @@ dependencies = [
|
|||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"mio 1.0.4",
|
"mio 1.0.4",
|
||||||
"socket2",
|
"socket2 0.5.10",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
@ -167,7 +167,7 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
"serde_urlencoded",
|
"serde_urlencoded",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"socket2",
|
"socket2 0.5.10",
|
||||||
"time",
|
"time",
|
||||||
"tracing",
|
"tracing",
|
||||||
"url",
|
"url",
|
||||||
@ -1655,6 +1655,21 @@ dependencies = [
|
|||||||
"url",
|
"url",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "example-pxe"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"cidr",
|
||||||
|
"env_logger",
|
||||||
|
"harmony",
|
||||||
|
"harmony_cli",
|
||||||
|
"harmony_macros",
|
||||||
|
"harmony_types",
|
||||||
|
"log",
|
||||||
|
"tokio",
|
||||||
|
"url",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "example-rust"
|
name = "example-rust"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use harmony_macros::ip;
|
use harmony_macros::ip;
|
||||||
use harmony_types::net::MacAddress;
|
use harmony_types::net::MacAddress;
|
||||||
|
use log::debug;
|
||||||
use log::info;
|
use log::info;
|
||||||
|
|
||||||
use crate::executors::ExecutorError;
|
use crate::executors::ExecutorError;
|
||||||
@ -49,9 +50,10 @@ impl Topology for HAClusterTopology {
|
|||||||
"HAClusterTopology"
|
"HAClusterTopology"
|
||||||
}
|
}
|
||||||
async fn ensure_ready(&self) -> Result<PreparationOutcome, PreparationError> {
|
async fn ensure_ready(&self) -> Result<PreparationOutcome, PreparationError> {
|
||||||
todo!(
|
debug!(
|
||||||
"ensure_ready, not entirely sure what it should do here, probably something like verify that the hosts are reachable and all services are up and ready."
|
"ensure_ready, not entirely sure what it should do here, probably something like verify that the hosts are reachable and all services are up and ready."
|
||||||
)
|
);
|
||||||
|
Ok(PreparationOutcome::Noop)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ use crate::{
|
|||||||
|
|
||||||
#[derive(Debug, new, Clone, Serialize)]
|
#[derive(Debug, new, Clone, Serialize)]
|
||||||
pub struct TftpScore {
|
pub struct TftpScore {
|
||||||
files_to_serve: Url,
|
pub files_to_serve: Url,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Topology + TftpServer + Router> Score<T> for TftpScore {
|
impl<T: Topology + TftpServer + Router> Score<T> for TftpScore {
|
||||||
|
111
opnsense-config-xml/src/data/dnsmasq.rs
Normal file
111
opnsense-config-xml/src/data/dnsmasq.rs
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
use yaserde::MaybeString;
|
||||||
|
use yaserde_derive::{YaDeserialize, YaSerialize};
|
||||||
|
|
||||||
|
// This is the top-level struct that represents the entire <dnsmasq> element.
|
||||||
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
|
pub struct DnsMasq {
|
||||||
|
#[yaserde(attribute = true)]
|
||||||
|
pub version: String,
|
||||||
|
#[yaserde(attribute = true)]
|
||||||
|
pub persisted_at: Option<String>,
|
||||||
|
|
||||||
|
pub enable: u8,
|
||||||
|
pub regdhcp: u8,
|
||||||
|
pub regdhcpstatic: u8,
|
||||||
|
pub dhcpfirst: u8,
|
||||||
|
pub strict_order: u8,
|
||||||
|
pub domain_needed: u8,
|
||||||
|
pub no_private_reverse: u8,
|
||||||
|
pub no_resolv: Option<u8>,
|
||||||
|
pub log_queries: u8,
|
||||||
|
pub no_hosts: u8,
|
||||||
|
pub strictbind: u8,
|
||||||
|
pub dnssec: u8,
|
||||||
|
pub regdhcpdomain: MaybeString,
|
||||||
|
pub interface: Option<String>,
|
||||||
|
pub port: Option<u32>,
|
||||||
|
pub dns_forward_max: MaybeString,
|
||||||
|
pub cache_size: MaybeString,
|
||||||
|
pub local_ttl: MaybeString,
|
||||||
|
pub add_mac: Option<MaybeString>,
|
||||||
|
pub add_subnet: Option<u8>,
|
||||||
|
pub strip_subnet: Option<u8>,
|
||||||
|
pub no_ident: Option<u8>,
|
||||||
|
pub dhcp: Option<Dhcp>,
|
||||||
|
pub dhcp_ranges: Vec<DhcpRange>,
|
||||||
|
pub dhcp_options: Vec<DhcpOptions>,
|
||||||
|
pub dhcp_boot: Vec<DhcpBoot>,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Represents the <dhcp> element and its nested fields.
|
||||||
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
|
#[yaserde(rename = "dhcp")]
|
||||||
|
pub struct Dhcp {
|
||||||
|
pub no_interface: MaybeString,
|
||||||
|
pub fqdn: u8,
|
||||||
|
pub domain: MaybeString,
|
||||||
|
pub lease_max: MaybeString,
|
||||||
|
pub authoritative: u8,
|
||||||
|
pub default_fw_rules: u8,
|
||||||
|
pub reply_delay: MaybeString,
|
||||||
|
pub enable_ra: u8,
|
||||||
|
pub nosync: u8,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Represents a single <dhcp_ranges> element.
|
||||||
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
|
#[yaserde(rename = "dhcp_ranges")]
|
||||||
|
pub struct DhcpRange {
|
||||||
|
#[yaserde(attribute = true)]
|
||||||
|
pub uuid: String,
|
||||||
|
pub interface: String,
|
||||||
|
pub set_tag: MaybeString,
|
||||||
|
pub start_addr: String,
|
||||||
|
pub end_addr: String,
|
||||||
|
pub subnet_mask: MaybeString,
|
||||||
|
pub constructor: MaybeString,
|
||||||
|
pub mode: MaybeString,
|
||||||
|
pub prefix_len: MaybeString,
|
||||||
|
pub lease_time: MaybeString,
|
||||||
|
pub domain_type: String,
|
||||||
|
pub domain: MaybeString,
|
||||||
|
pub nosync: u8,
|
||||||
|
pub ra_mode: MaybeString,
|
||||||
|
pub ra_priority: MaybeString,
|
||||||
|
pub ra_mtu: MaybeString,
|
||||||
|
pub ra_interval: MaybeString,
|
||||||
|
pub ra_router_lifetime: MaybeString,
|
||||||
|
pub description: MaybeString,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Represents a single <dhcp_boot> element.
|
||||||
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
|
#[yaserde(rename = "dhcp_boot")]
|
||||||
|
pub struct DhcpBoot {
|
||||||
|
#[yaserde(attribute = true)]
|
||||||
|
pub uuid: String,
|
||||||
|
pub interface: MaybeString,
|
||||||
|
pub tag: MaybeString,
|
||||||
|
pub filename: String,
|
||||||
|
pub servername: String,
|
||||||
|
pub address: String,
|
||||||
|
pub description: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Represents a single <dhcp_options> element.
|
||||||
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
|
#[yaserde(rename = "dhcp_options")]
|
||||||
|
pub struct DhcpOptions {
|
||||||
|
#[yaserde(attribute = true)]
|
||||||
|
pub uuid: String,
|
||||||
|
#[yaserde(rename = "type")]
|
||||||
|
pub _type: String,
|
||||||
|
pub option: MaybeString,
|
||||||
|
pub option6: MaybeString,
|
||||||
|
pub interface: MaybeString,
|
||||||
|
pub tag: MaybeString,
|
||||||
|
pub set_tag: MaybeString,
|
||||||
|
pub value: String,
|
||||||
|
pub force: u8,
|
||||||
|
pub description: MaybeString,
|
||||||
|
}
|
@ -8,10 +8,12 @@ pub struct Interface {
|
|||||||
#[yaserde(rename = "if")]
|
#[yaserde(rename = "if")]
|
||||||
pub physical_interface_name: String,
|
pub physical_interface_name: String,
|
||||||
pub descr: Option<MaybeString>,
|
pub descr: Option<MaybeString>,
|
||||||
|
pub mtu: Option<MaybeString>,
|
||||||
pub enable: MaybeString,
|
pub enable: MaybeString,
|
||||||
pub lock: Option<MaybeString>,
|
pub lock: Option<MaybeString>,
|
||||||
#[yaserde(rename = "spoofmac")]
|
#[yaserde(rename = "spoofmac")]
|
||||||
pub spoof_mac: Option<MaybeString>,
|
pub spoof_mac: Option<MaybeString>,
|
||||||
|
pub mss: Option<MaybeString>,
|
||||||
pub ipaddr: Option<MaybeString>,
|
pub ipaddr: Option<MaybeString>,
|
||||||
pub dhcphostname: Option<MaybeString>,
|
pub dhcphostname: Option<MaybeString>,
|
||||||
#[yaserde(rename = "alias-address")]
|
#[yaserde(rename = "alias-address")]
|
||||||
|
@ -3,6 +3,7 @@ mod dhcpd;
|
|||||||
mod haproxy;
|
mod haproxy;
|
||||||
mod interfaces;
|
mod interfaces;
|
||||||
mod opnsense;
|
mod opnsense;
|
||||||
|
pub mod dnsmasq;
|
||||||
pub use caddy::*;
|
pub use caddy::*;
|
||||||
pub use dhcpd::*;
|
pub use dhcpd::*;
|
||||||
pub use haproxy::*;
|
pub use haproxy::*;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
use crate::dnsmasq::DnsMasq;
|
||||||
use crate::HAProxy;
|
use crate::HAProxy;
|
||||||
use crate::{data::dhcpd::DhcpInterface, xml_utils::to_xml_str};
|
use crate::{data::dhcpd::DhcpInterface, xml_utils::to_xml_str};
|
||||||
use log::error;
|
use log::error;
|
||||||
@ -22,7 +23,7 @@ pub struct OPNsense {
|
|||||||
pub load_balancer: Option<LoadBalancer>,
|
pub load_balancer: Option<LoadBalancer>,
|
||||||
pub rrd: Option<RawXml>,
|
pub rrd: Option<RawXml>,
|
||||||
pub ntpd: Ntpd,
|
pub ntpd: Ntpd,
|
||||||
pub widgets: Widgets,
|
pub widgets: Option<Widgets>,
|
||||||
pub revision: Revision,
|
pub revision: Revision,
|
||||||
#[yaserde(rename = "OPNsense")]
|
#[yaserde(rename = "OPNsense")]
|
||||||
pub opnsense: OPNsenseXmlSection,
|
pub opnsense: OPNsenseXmlSection,
|
||||||
@ -45,7 +46,7 @@ pub struct OPNsense {
|
|||||||
#[yaserde(rename = "Pischem")]
|
#[yaserde(rename = "Pischem")]
|
||||||
pub pischem: Option<Pischem>,
|
pub pischem: Option<Pischem>,
|
||||||
pub ifgroups: Ifgroups,
|
pub ifgroups: Ifgroups,
|
||||||
pub dnsmasq: Option<RawXml>,
|
pub dnsmasq: Option<DnsMasq>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<String> for OPNsense {
|
impl From<String> for OPNsense {
|
||||||
@ -165,9 +166,9 @@ pub struct Sysctl {
|
|||||||
|
|
||||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
pub struct SysctlItem {
|
pub struct SysctlItem {
|
||||||
pub descr: MaybeString,
|
pub descr: Option<MaybeString>,
|
||||||
pub tunable: String,
|
pub tunable: Option<String>,
|
||||||
pub value: MaybeString,
|
pub value: Option<MaybeString>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
@ -182,8 +183,8 @@ pub struct System {
|
|||||||
pub domain: String,
|
pub domain: String,
|
||||||
pub group: Vec<Group>,
|
pub group: Vec<Group>,
|
||||||
pub user: Vec<User>,
|
pub user: Vec<User>,
|
||||||
pub nextuid: u32,
|
pub nextuid: Option<u32>,
|
||||||
pub nextgid: u32,
|
pub nextgid: Option<u32>,
|
||||||
pub timezone: String,
|
pub timezone: String,
|
||||||
pub timeservers: String,
|
pub timeservers: String,
|
||||||
pub webgui: WebGui,
|
pub webgui: WebGui,
|
||||||
@ -242,6 +243,7 @@ pub struct Ssh {
|
|||||||
pub passwordauth: u8,
|
pub passwordauth: u8,
|
||||||
pub keysig: MaybeString,
|
pub keysig: MaybeString,
|
||||||
pub permitrootlogin: u8,
|
pub permitrootlogin: u8,
|
||||||
|
pub rekeylimit: Option<MaybeString>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
@ -271,6 +273,7 @@ pub struct Group {
|
|||||||
pub member: Vec<u32>,
|
pub member: Vec<u32>,
|
||||||
#[yaserde(rename = "priv")]
|
#[yaserde(rename = "priv")]
|
||||||
pub priv_field: String,
|
pub priv_field: String,
|
||||||
|
pub source_networks: Option<MaybeString>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||||
|
@ -4,8 +4,7 @@ use crate::{
|
|||||||
config::{SshConfigManager, SshCredentials, SshOPNSenseShell},
|
config::{SshConfigManager, SshCredentials, SshOPNSenseShell},
|
||||||
error::Error,
|
error::Error,
|
||||||
modules::{
|
modules::{
|
||||||
caddy::CaddyConfig, dhcp::DhcpConfig, dns::DnsConfig, load_balancer::LoadBalancerConfig,
|
caddy::CaddyConfig, dhcp_legacy::DhcpConfigLegacyISC, dns::DnsConfig, dnsmasq::DhcpConfigDnsMasq, load_balancer::LoadBalancerConfig, tftp::TftpConfig
|
||||||
tftp::TftpConfig,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use log::{debug, info, trace, warn};
|
use log::{debug, info, trace, warn};
|
||||||
@ -43,8 +42,12 @@ impl Config {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn dhcp(&mut self) -> DhcpConfig {
|
pub fn dhcp_legacy_isc(&mut self) -> DhcpConfigLegacyISC {
|
||||||
DhcpConfig::new(&mut self.opnsense, self.shell.clone())
|
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 {
|
pub fn dns(&mut self) -> DnsConfig {
|
||||||
@ -200,7 +203,7 @@ impl Config {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::config::{DummyOPNSenseShell, LocalFileConfigManager};
|
use crate::config::{DummyOPNSenseShell, LocalFileConfigManager};
|
||||||
use crate::modules::dhcp::DhcpConfig;
|
use crate::modules::dhcp_legacy::DhcpConfigLegacyISC;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::Ipv4Addr;
|
||||||
|
|
||||||
@ -215,6 +218,9 @@ mod tests {
|
|||||||
"src/tests/data/config-vm-test.xml",
|
"src/tests/data/config-vm-test.xml",
|
||||||
"src/tests/data/config-structure.xml",
|
"src/tests/data/config-structure.xml",
|
||||||
"src/tests/data/config-full-1.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"));
|
let mut test_file_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||||
test_file_path.push(path);
|
test_file_path.push(path);
|
||||||
@ -257,7 +263,7 @@ mod tests {
|
|||||||
|
|
||||||
println!("Config {:?}", config);
|
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
|
dhcp_config
|
||||||
.add_static_mapping(
|
.add_static_mapping(
|
||||||
"00:00:00:00:00:00",
|
"00:00:00:00:00:00",
|
||||||
|
@ -1,19 +1,3 @@
|
|||||||
use log::info;
|
|
||||||
use opnsense_config_xml::MaybeString;
|
|
||||||
use opnsense_config_xml::StaticMap;
|
|
||||||
use std::net::Ipv4Addr;
|
|
||||||
use std::sync::Arc;
|
|
||||||
|
|
||||||
use opnsense_config_xml::OPNsense;
|
|
||||||
|
|
||||||
use crate::config::OPNsenseShell;
|
|
||||||
use crate::Error;
|
|
||||||
|
|
||||||
pub struct DhcpConfig<'a> {
|
|
||||||
opnsense: &'a mut OPNsense,
|
|
||||||
opnsense_shell: Arc<dyn OPNsenseShell>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum DhcpError {
|
pub enum DhcpError {
|
||||||
InvalidMacAddress(String),
|
InvalidMacAddress(String),
|
||||||
@ -42,153 +26,3 @@ impl std::fmt::Display for DhcpError {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl std::error::Error for DhcpError {}
|
impl std::error::Error for DhcpError {}
|
||||||
|
|
||||||
impl<'a> DhcpConfig<'a> {
|
|
||||||
pub fn new(opnsense: &'a mut OPNsense, opnsense_shell: Arc<dyn OPNsenseShell>) -> Self {
|
|
||||||
Self {
|
|
||||||
opnsense,
|
|
||||||
opnsense_shell,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn remove_static_mapping(&mut self, mac: &str) {
|
|
||||||
let lan_dhcpd = self.get_lan_dhcpd();
|
|
||||||
lan_dhcpd
|
|
||||||
.staticmaps
|
|
||||||
.retain(|static_entry| static_entry.mac != mac);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_lan_dhcpd(&mut self) -> &mut opnsense_config_xml::DhcpInterface {
|
|
||||||
&mut self
|
|
||||||
.opnsense
|
|
||||||
.dhcpd
|
|
||||||
.elements
|
|
||||||
.iter_mut()
|
|
||||||
.find(|(name, _config)| name == "lan")
|
|
||||||
.expect("Interface lan should have dhcpd activated")
|
|
||||||
.1
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn add_static_mapping(
|
|
||||||
&mut self,
|
|
||||||
mac: &str,
|
|
||||||
ipaddr: Ipv4Addr,
|
|
||||||
hostname: &str,
|
|
||||||
) -> Result<(), DhcpError> {
|
|
||||||
let mac = mac.to_string();
|
|
||||||
let hostname = hostname.to_string();
|
|
||||||
let lan_dhcpd = self.get_lan_dhcpd();
|
|
||||||
let existing_mappings: &mut Vec<StaticMap> = &mut lan_dhcpd.staticmaps;
|
|
||||||
|
|
||||||
if !Self::is_valid_mac(&mac) {
|
|
||||||
return Err(DhcpError::InvalidMacAddress(mac));
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO validate that address is in subnet range
|
|
||||||
|
|
||||||
if existing_mappings.iter().any(|m| {
|
|
||||||
m.ipaddr
|
|
||||||
.parse::<Ipv4Addr>()
|
|
||||||
.expect("Mapping contains invalid ipv4")
|
|
||||||
== ipaddr
|
|
||||||
&& m.mac == mac
|
|
||||||
}) {
|
|
||||||
info!("Mapping already exists for {} [{}], skipping", ipaddr, mac);
|
|
||||||
return Ok(());
|
|
||||||
}
|
|
||||||
|
|
||||||
if existing_mappings.iter().any(|m| {
|
|
||||||
m.ipaddr
|
|
||||||
.parse::<Ipv4Addr>()
|
|
||||||
.expect("Mapping contains invalid ipv4")
|
|
||||||
== ipaddr
|
|
||||||
}) {
|
|
||||||
return Err(DhcpError::IpAddressAlreadyMapped(ipaddr.to_string()));
|
|
||||||
}
|
|
||||||
|
|
||||||
if existing_mappings.iter().any(|m| m.mac == mac) {
|
|
||||||
return Err(DhcpError::MacAddressAlreadyMapped(mac));
|
|
||||||
}
|
|
||||||
|
|
||||||
let static_map = StaticMap {
|
|
||||||
mac,
|
|
||||||
ipaddr: ipaddr.to_string(),
|
|
||||||
hostname,
|
|
||||||
descr: Default::default(),
|
|
||||||
winsserver: Default::default(),
|
|
||||||
dnsserver: Default::default(),
|
|
||||||
ntpserver: Default::default(),
|
|
||||||
};
|
|
||||||
|
|
||||||
existing_mappings.push(static_map);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_valid_mac(mac: &str) -> bool {
|
|
||||||
let parts: Vec<&str> = mac.split(':').collect();
|
|
||||||
if parts.len() != 6 {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
parts
|
|
||||||
.iter()
|
|
||||||
.all(|part| part.len() <= 2 && part.chars().all(|c| c.is_ascii_hexdigit()))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn get_static_mappings(&self) -> Result<Vec<StaticMap>, Error> {
|
|
||||||
let list_static_output = self
|
|
||||||
.opnsense_shell
|
|
||||||
.exec("configctl dhcpd list static")
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
let value: serde_json::Value = serde_json::from_str(&list_static_output)
|
|
||||||
.unwrap_or_else(|_| panic!("Got invalid json from configctl {list_static_output}"));
|
|
||||||
let static_maps = value["dhcpd"]
|
|
||||||
.as_array()
|
|
||||||
.ok_or(Error::Command(format!(
|
|
||||||
"Invalid DHCP data from configctl command, got {list_static_output}"
|
|
||||||
)))?
|
|
||||||
.iter()
|
|
||||||
.map(|entry| StaticMap {
|
|
||||||
mac: entry["mac"].as_str().unwrap_or_default().to_string(),
|
|
||||||
ipaddr: entry["ipaddr"].as_str().unwrap_or_default().to_string(),
|
|
||||||
hostname: entry["hostname"].as_str().unwrap_or_default().to_string(),
|
|
||||||
descr: entry["descr"].as_str().map(MaybeString::from),
|
|
||||||
winsserver: MaybeString::default(),
|
|
||||||
dnsserver: MaybeString::default(),
|
|
||||||
ntpserver: MaybeString::default(),
|
|
||||||
})
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
Ok(static_maps)
|
|
||||||
}
|
|
||||||
pub fn enable_netboot(&mut self) {
|
|
||||||
self.get_lan_dhcpd().netboot = Some(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn set_next_server(&mut self, ip: Ipv4Addr) {
|
|
||||||
self.enable_netboot();
|
|
||||||
self.get_lan_dhcpd().nextserver = Some(ip.to_string());
|
|
||||||
self.get_lan_dhcpd().tftp = Some(ip.to_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn set_boot_filename(&mut self, boot_filename: &str) {
|
|
||||||
self.enable_netboot();
|
|
||||||
self.get_lan_dhcpd().bootfilename = Some(boot_filename.to_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn set_filename(&mut self, filename: &str) {
|
|
||||||
self.enable_netboot();
|
|
||||||
self.get_lan_dhcpd().filename = Some(filename.to_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn set_filename64(&mut self, filename64: &str) {
|
|
||||||
self.enable_netboot();
|
|
||||||
self.get_lan_dhcpd().filename64 = Some(filename64.to_string());
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn set_filenameipxe(&mut self, filenameipxe: &str) {
|
|
||||||
self.enable_netboot();
|
|
||||||
self.get_lan_dhcpd().filenameipxe = Some(filenameipxe.to_string());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
166
opnsense-config/src/modules/dhcp_legacy.rs
Normal file
166
opnsense-config/src/modules/dhcp_legacy.rs
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
use crate::modules::dhcp::DhcpError;
|
||||||
|
use log::info;
|
||||||
|
use opnsense_config_xml::MaybeString;
|
||||||
|
use opnsense_config_xml::StaticMap;
|
||||||
|
use std::net::Ipv4Addr;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use opnsense_config_xml::OPNsense;
|
||||||
|
|
||||||
|
use crate::config::OPNsenseShell;
|
||||||
|
use crate::Error;
|
||||||
|
|
||||||
|
pub struct DhcpConfigLegacyISC<'a> {
|
||||||
|
opnsense: &'a mut OPNsense,
|
||||||
|
opnsense_shell: Arc<dyn OPNsenseShell>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> DhcpConfigLegacyISC<'a> {
|
||||||
|
pub fn new(opnsense: &'a mut OPNsense, opnsense_shell: Arc<dyn OPNsenseShell>) -> Self {
|
||||||
|
Self {
|
||||||
|
opnsense,
|
||||||
|
opnsense_shell,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn remove_static_mapping(&mut self, mac: &str) {
|
||||||
|
let lan_dhcpd = self.get_lan_dhcpd();
|
||||||
|
lan_dhcpd
|
||||||
|
.staticmaps
|
||||||
|
.retain(|static_entry| static_entry.mac != mac);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_lan_dhcpd(&mut self) -> &mut opnsense_config_xml::DhcpInterface {
|
||||||
|
&mut self
|
||||||
|
.opnsense
|
||||||
|
.dhcpd
|
||||||
|
.elements
|
||||||
|
.iter_mut()
|
||||||
|
.find(|(name, _config)| name == "lan")
|
||||||
|
.expect("Interface lan should have dhcpd activated")
|
||||||
|
.1
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_static_mapping(
|
||||||
|
&mut self,
|
||||||
|
mac: &str,
|
||||||
|
ipaddr: Ipv4Addr,
|
||||||
|
hostname: &str,
|
||||||
|
) -> Result<(), DhcpError> {
|
||||||
|
let mac = mac.to_string();
|
||||||
|
let hostname = hostname.to_string();
|
||||||
|
let lan_dhcpd = self.get_lan_dhcpd();
|
||||||
|
let existing_mappings: &mut Vec<StaticMap> = &mut lan_dhcpd.staticmaps;
|
||||||
|
|
||||||
|
if !Self::is_valid_mac(&mac) {
|
||||||
|
return Err(DhcpError::InvalidMacAddress(mac));
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO validate that address is in subnet range
|
||||||
|
|
||||||
|
if existing_mappings.iter().any(|m| {
|
||||||
|
m.ipaddr
|
||||||
|
.parse::<Ipv4Addr>()
|
||||||
|
.expect("Mapping contains invalid ipv4")
|
||||||
|
== ipaddr
|
||||||
|
&& m.mac == mac
|
||||||
|
}) {
|
||||||
|
info!("Mapping already exists for {} [{}], skipping", ipaddr, mac);
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
|
if existing_mappings.iter().any(|m| {
|
||||||
|
m.ipaddr
|
||||||
|
.parse::<Ipv4Addr>()
|
||||||
|
.expect("Mapping contains invalid ipv4")
|
||||||
|
== ipaddr
|
||||||
|
}) {
|
||||||
|
return Err(DhcpError::IpAddressAlreadyMapped(ipaddr.to_string()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if existing_mappings.iter().any(|m| m.mac == mac) {
|
||||||
|
return Err(DhcpError::MacAddressAlreadyMapped(mac));
|
||||||
|
}
|
||||||
|
|
||||||
|
let static_map = StaticMap {
|
||||||
|
mac,
|
||||||
|
ipaddr: ipaddr.to_string(),
|
||||||
|
hostname,
|
||||||
|
descr: Default::default(),
|
||||||
|
winsserver: Default::default(),
|
||||||
|
dnsserver: Default::default(),
|
||||||
|
ntpserver: Default::default(),
|
||||||
|
};
|
||||||
|
|
||||||
|
existing_mappings.push(static_map);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_valid_mac(mac: &str) -> bool {
|
||||||
|
let parts: Vec<&str> = mac.split(':').collect();
|
||||||
|
if parts.len() != 6 {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
parts
|
||||||
|
.iter()
|
||||||
|
.all(|part| part.len() <= 2 && part.chars().all(|c| c.is_ascii_hexdigit()))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_static_mappings(&self) -> Result<Vec<StaticMap>, Error> {
|
||||||
|
let list_static_output = self
|
||||||
|
.opnsense_shell
|
||||||
|
.exec("configctl dhcpd list static")
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
let value: serde_json::Value = serde_json::from_str(&list_static_output)
|
||||||
|
.unwrap_or_else(|_| panic!("Got invalid json from configctl {list_static_output}"));
|
||||||
|
let static_maps = value["dhcpd"]
|
||||||
|
.as_array()
|
||||||
|
.ok_or(Error::Command(format!(
|
||||||
|
"Invalid DHCP data from configctl command, got {list_static_output}"
|
||||||
|
)))?
|
||||||
|
.iter()
|
||||||
|
.map(|entry| StaticMap {
|
||||||
|
mac: entry["mac"].as_str().unwrap_or_default().to_string(),
|
||||||
|
ipaddr: entry["ipaddr"].as_str().unwrap_or_default().to_string(),
|
||||||
|
hostname: entry["hostname"].as_str().unwrap_or_default().to_string(),
|
||||||
|
descr: entry["descr"].as_str().map(MaybeString::from),
|
||||||
|
winsserver: MaybeString::default(),
|
||||||
|
dnsserver: MaybeString::default(),
|
||||||
|
ntpserver: MaybeString::default(),
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
Ok(static_maps)
|
||||||
|
}
|
||||||
|
pub fn enable_netboot(&mut self) {
|
||||||
|
self.get_lan_dhcpd().netboot = Some(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_next_server(&mut self, ip: Ipv4Addr) {
|
||||||
|
self.enable_netboot();
|
||||||
|
self.get_lan_dhcpd().nextserver = Some(ip.to_string());
|
||||||
|
self.get_lan_dhcpd().tftp = Some(ip.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_boot_filename(&mut self, boot_filename: &str) {
|
||||||
|
self.enable_netboot();
|
||||||
|
self.get_lan_dhcpd().bootfilename = Some(boot_filename.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_filename(&mut self, filename: &str) {
|
||||||
|
self.enable_netboot();
|
||||||
|
self.get_lan_dhcpd().filename = Some(filename.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_filename64(&mut self, filename64: &str) {
|
||||||
|
self.enable_netboot();
|
||||||
|
self.get_lan_dhcpd().filename64 = Some(filename64.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_filenameipxe(&mut self, filenameipxe: &str) {
|
||||||
|
self.enable_netboot();
|
||||||
|
self.get_lan_dhcpd().filenameipxe = Some(filenameipxe.to_string());
|
||||||
|
}
|
||||||
|
}
|
69
opnsense-config/src/modules/dnsmasq.rs
Normal file
69
opnsense-config/src/modules/dnsmasq.rs
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
use crate::modules::dhcp::DhcpError;
|
||||||
|
use log::info;
|
||||||
|
use opnsense_config_xml::MaybeString;
|
||||||
|
use opnsense_config_xml::StaticMap;
|
||||||
|
use std::net::Ipv4Addr;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use opnsense_config_xml::OPNsense;
|
||||||
|
|
||||||
|
use crate::config::OPNsenseShell;
|
||||||
|
use crate::Error;
|
||||||
|
|
||||||
|
pub struct DhcpConfigDnsMasq<'a> {
|
||||||
|
opnsense: &'a mut OPNsense,
|
||||||
|
opnsense_shell: Arc<dyn OPNsenseShell>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> DhcpConfigDnsMasq<'a> {
|
||||||
|
pub fn new(opnsense: &'a mut OPNsense, opnsense_shell: Arc<dyn OPNsenseShell>) -> Self {
|
||||||
|
Self {
|
||||||
|
opnsense,
|
||||||
|
opnsense_shell,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn remove_static_mapping(&mut self, mac: &str) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_lan_dhcpd(&mut self) -> &mut opnsense_config_xml::DhcpInterface {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn add_static_mapping(
|
||||||
|
&mut self,
|
||||||
|
mac: &str,
|
||||||
|
ipaddr: Ipv4Addr,
|
||||||
|
hostname: &str,
|
||||||
|
) -> Result<(), DhcpError> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_static_mappings(&self) -> Result<Vec<StaticMap>, Error> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
pub fn enable_netboot(&mut self) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_next_server(&mut self, ip: Ipv4Addr) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_boot_filename(&mut self, boot_filename: &str) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_filename(&mut self, filename: &str) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_filename64(&mut self, filename64: &str) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_filenameipxe(&mut self, filenameipxe: &str) {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,7 @@
|
|||||||
pub mod caddy;
|
pub mod caddy;
|
||||||
pub mod dhcp;
|
pub mod dhcp_legacy;
|
||||||
pub mod dns;
|
pub mod dns;
|
||||||
pub mod load_balancer;
|
pub mod load_balancer;
|
||||||
pub mod tftp;
|
pub mod tftp;
|
||||||
|
pub mod dhcp;
|
||||||
|
pub mod dnsmasq;
|
||||||
|
@ -0,0 +1,867 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<opnsense>
|
||||||
|
<theme>opnsense</theme>
|
||||||
|
<sysctl version="1.0.1" persisted_at="1755708111.39">
|
||||||
|
<item/>
|
||||||
|
</sysctl>
|
||||||
|
<system>
|
||||||
|
<serialspeed>115200</serialspeed>
|
||||||
|
<primaryconsole>serial</primaryconsole>
|
||||||
|
<optimization>normal</optimization>
|
||||||
|
<hostname>OPNsense</hostname>
|
||||||
|
<domain>internal</domain>
|
||||||
|
<dnsallowoverride>1</dnsallowoverride>
|
||||||
|
<dnsallowoverride_exclude/>
|
||||||
|
<group uuid="67305f6f-7f7a-454d-8a4e-65cb8f072d81">
|
||||||
|
<gid>1999</gid>
|
||||||
|
<name>admins</name>
|
||||||
|
<scope>system</scope>
|
||||||
|
<description>System Administrators</description>
|
||||||
|
<priv>page-all</priv>
|
||||||
|
<member>0</member>
|
||||||
|
<source_networks/>
|
||||||
|
</group>
|
||||||
|
<user uuid="1d2ed537-5d1a-4772-9600-37b93f9f798b">
|
||||||
|
<uid>0</uid>
|
||||||
|
<name>root</name>
|
||||||
|
<disabled>0</disabled>
|
||||||
|
<scope>system</scope>
|
||||||
|
<expires/>
|
||||||
|
<authorizedkeys/>
|
||||||
|
<otp_seed/>
|
||||||
|
<shell/>
|
||||||
|
<password>$2y$10$YRVoF4SgskIsrXOvOQjGieB9XqHPRra9R7d80B3BZdbY/j21TwBfS</password>
|
||||||
|
<pwd_changed_at/>
|
||||||
|
<landing_page/>
|
||||||
|
<comment/>
|
||||||
|
<email/>
|
||||||
|
<apikeys/>
|
||||||
|
<priv/>
|
||||||
|
<language/>
|
||||||
|
<descr>System Administrator</descr>
|
||||||
|
<dashboard/>
|
||||||
|
</user>
|
||||||
|
<timezone>Etc/UTC</timezone>
|
||||||
|
<timeservers>0.opnsense.pool.ntp.org 1.opnsense.pool.ntp.org 2.opnsense.pool.ntp.org 3.opnsense.pool.ntp.org</timeservers>
|
||||||
|
<webgui>
|
||||||
|
<protocol>https</protocol>
|
||||||
|
<ssl-certref>68a5faf1685db</ssl-certref>
|
||||||
|
<port/>
|
||||||
|
<ssl-ciphers/>
|
||||||
|
<interfaces/>
|
||||||
|
<compression/>
|
||||||
|
</webgui>
|
||||||
|
<disablenatreflection>yes</disablenatreflection>
|
||||||
|
<usevirtualterminal>1</usevirtualterminal>
|
||||||
|
<disableconsolemenu>1</disableconsolemenu>
|
||||||
|
<disablevlanhwfilter>1</disablevlanhwfilter>
|
||||||
|
<disablechecksumoffloading>1</disablechecksumoffloading>
|
||||||
|
<disablesegmentationoffloading>1</disablesegmentationoffloading>
|
||||||
|
<disablelargereceiveoffloading>1</disablelargereceiveoffloading>
|
||||||
|
<ipv6allow>1</ipv6allow>
|
||||||
|
<powerd_ac_mode>hadp</powerd_ac_mode>
|
||||||
|
<powerd_battery_mode>hadp</powerd_battery_mode>
|
||||||
|
<powerd_normal_mode>hadp</powerd_normal_mode>
|
||||||
|
<bogons>
|
||||||
|
<interval>monthly</interval>
|
||||||
|
</bogons>
|
||||||
|
<pf_share_forward>1</pf_share_forward>
|
||||||
|
<lb_use_sticky>1</lb_use_sticky>
|
||||||
|
<ssh>
|
||||||
|
<group>admins</group>
|
||||||
|
<noauto>1</noauto>
|
||||||
|
<interfaces/>
|
||||||
|
<kex/>
|
||||||
|
<ciphers/>
|
||||||
|
<macs/>
|
||||||
|
<keys/>
|
||||||
|
<keysig/>
|
||||||
|
<rekeylimit/>
|
||||||
|
<enabled>enabled</enabled>
|
||||||
|
<passwordauth>1</passwordauth>
|
||||||
|
<permitrootlogin>1</permitrootlogin>
|
||||||
|
</ssh>
|
||||||
|
<rrdbackup>-1</rrdbackup>
|
||||||
|
<netflowbackup>-1</netflowbackup>
|
||||||
|
<firmware version="1.0.1" persisted_at="1755708111.32">
|
||||||
|
<mirror/>
|
||||||
|
<flavour/>
|
||||||
|
<plugins/>
|
||||||
|
<type/>
|
||||||
|
<subscription/>
|
||||||
|
<reboot>0</reboot>
|
||||||
|
</firmware>
|
||||||
|
<dnsserver/>
|
||||||
|
<language>en_US</language>
|
||||||
|
</system>
|
||||||
|
<interfaces>
|
||||||
|
<wan>
|
||||||
|
<enable>1</enable>
|
||||||
|
<if>vtnet0</if>
|
||||||
|
<mtu/>
|
||||||
|
<ipaddr>dhcp</ipaddr>
|
||||||
|
<ipaddrv6>dhcp6</ipaddrv6>
|
||||||
|
<subnet/>
|
||||||
|
<gateway/>
|
||||||
|
<blockpriv>0</blockpriv>
|
||||||
|
<blockbogons>1</blockbogons>
|
||||||
|
<media/>
|
||||||
|
<mediaopt/>
|
||||||
|
<dhcp6-ia-pd-len>0</dhcp6-ia-pd-len>
|
||||||
|
<dhcphostname/>
|
||||||
|
<spoofmac/>
|
||||||
|
<mss/>
|
||||||
|
</wan>
|
||||||
|
<lan>
|
||||||
|
<enable>1</enable>
|
||||||
|
<if>vtnet1</if>
|
||||||
|
<ipaddr>192.168.1.1</ipaddr>
|
||||||
|
<subnet>24</subnet>
|
||||||
|
<ipaddrv6>track6</ipaddrv6>
|
||||||
|
<subnetv6>64</subnetv6>
|
||||||
|
<media/>
|
||||||
|
<mediaopt/>
|
||||||
|
<track6-interface>wan</track6-interface>
|
||||||
|
<track6-prefix-id>0</track6-prefix-id>
|
||||||
|
</lan>
|
||||||
|
<lo0>
|
||||||
|
<internal_dynamic>1</internal_dynamic>
|
||||||
|
<descr>Loopback</descr>
|
||||||
|
<enable>1</enable>
|
||||||
|
<if>lo0</if>
|
||||||
|
<ipaddr>127.0.0.1</ipaddr>
|
||||||
|
<ipaddrv6>::1</ipaddrv6>
|
||||||
|
<subnet>8</subnet>
|
||||||
|
<subnetv6>128</subnetv6>
|
||||||
|
<type>none</type>
|
||||||
|
<virtual>1</virtual>
|
||||||
|
</lo0>
|
||||||
|
</interfaces>
|
||||||
|
<dnsmasq version="1.0.7" persisted_at="1755723263.06">
|
||||||
|
<enable>1</enable>
|
||||||
|
<regdhcp>0</regdhcp>
|
||||||
|
<regdhcpstatic>0</regdhcpstatic>
|
||||||
|
<dhcpfirst>0</dhcpfirst>
|
||||||
|
<strict_order>0</strict_order>
|
||||||
|
<domain_needed>0</domain_needed>
|
||||||
|
<no_private_reverse>0</no_private_reverse>
|
||||||
|
<no_resolv>0</no_resolv>
|
||||||
|
<log_queries>0</log_queries>
|
||||||
|
<no_hosts>0</no_hosts>
|
||||||
|
<strictbind>0</strictbind>
|
||||||
|
<dnssec>0</dnssec>
|
||||||
|
<regdhcpdomain/>
|
||||||
|
<interface>lan</interface>
|
||||||
|
<port>0</port>
|
||||||
|
<dns_forward_max/>
|
||||||
|
<cache_size/>
|
||||||
|
<local_ttl/>
|
||||||
|
<add_mac/>
|
||||||
|
<add_subnet>0</add_subnet>
|
||||||
|
<strip_subnet>0</strip_subnet>
|
||||||
|
<dhcp>
|
||||||
|
<no_interface/>
|
||||||
|
<fqdn>1</fqdn>
|
||||||
|
<domain/>
|
||||||
|
<lease_max/>
|
||||||
|
<authoritative>0</authoritative>
|
||||||
|
<default_fw_rules>1</default_fw_rules>
|
||||||
|
<reply_delay/>
|
||||||
|
<enable_ra>0</enable_ra>
|
||||||
|
<nosync>0</nosync>
|
||||||
|
</dhcp>
|
||||||
|
<no_ident>1</no_ident>
|
||||||
|
<dhcp_ranges uuid="78b5c4a4-565d-4cd7-af10-29050f29e494">
|
||||||
|
<interface>lan</interface>
|
||||||
|
<set_tag/>
|
||||||
|
<start_addr>192.168.1.41</start_addr>
|
||||||
|
<end_addr>192.168.1.245</end_addr>
|
||||||
|
<subnet_mask/>
|
||||||
|
<constructor/>
|
||||||
|
<mode/>
|
||||||
|
<prefix_len/>
|
||||||
|
<lease_time/>
|
||||||
|
<domain_type>range</domain_type>
|
||||||
|
<domain/>
|
||||||
|
<nosync>0</nosync>
|
||||||
|
<ra_mode/>
|
||||||
|
<ra_priority/>
|
||||||
|
<ra_mtu/>
|
||||||
|
<ra_interval/>
|
||||||
|
<ra_router_lifetime/>
|
||||||
|
<description/>
|
||||||
|
</dhcp_ranges>
|
||||||
|
<dhcp_options uuid="b05f2b57-bad8-4072-8f51-d051671832fe">
|
||||||
|
<type>set</type>
|
||||||
|
<option>67</option>
|
||||||
|
<option6/>
|
||||||
|
<interface>lan</interface>
|
||||||
|
<tag/>
|
||||||
|
<set_tag/>
|
||||||
|
<value>test/boot/filename</value>
|
||||||
|
<force>0</force>
|
||||||
|
<description/>
|
||||||
|
</dhcp_options>
|
||||||
|
<dhcp_options uuid="5a5a7854-ec44-4631-95a9-85b4897588d5">
|
||||||
|
<type>set</type>
|
||||||
|
<option>128</option>
|
||||||
|
<option6/>
|
||||||
|
<interface>lan</interface>
|
||||||
|
<tag/>
|
||||||
|
<set_tag/>
|
||||||
|
<value>test some pxe setting vendor specific 128</value>
|
||||||
|
<force>0</force>
|
||||||
|
<description/>
|
||||||
|
</dhcp_options>
|
||||||
|
<dhcp_options uuid="7706861d-1851-420f-9b50-891ad413663e">
|
||||||
|
<type>set</type>
|
||||||
|
<option>208</option>
|
||||||
|
<option6/>
|
||||||
|
<interface/>
|
||||||
|
<tag/>
|
||||||
|
<set_tag/>
|
||||||
|
<value>pxelinux magic what is this (on any interface)</value>
|
||||||
|
<force>0</force>
|
||||||
|
<description/>
|
||||||
|
</dhcp_options>
|
||||||
|
<dhcp_boot uuid="748c0bd2-ef58-4cba-8486-bbf142f53859">
|
||||||
|
<interface/>
|
||||||
|
<tag/>
|
||||||
|
<filename>boot options filename</filename>
|
||||||
|
<servername>boot servername</servername>
|
||||||
|
<address>boot server address</address>
|
||||||
|
<description>boot description</description>
|
||||||
|
</dhcp_boot>
|
||||||
|
</dnsmasq>
|
||||||
|
<snmpd>
|
||||||
|
<syslocation/>
|
||||||
|
<syscontact/>
|
||||||
|
<rocommunity>public</rocommunity>
|
||||||
|
</snmpd>
|
||||||
|
<nat>
|
||||||
|
<outbound>
|
||||||
|
<mode>automatic</mode>
|
||||||
|
</outbound>
|
||||||
|
</nat>
|
||||||
|
<filter>
|
||||||
|
<rule>
|
||||||
|
<type>pass</type>
|
||||||
|
<ipprotocol>inet</ipprotocol>
|
||||||
|
<descr>Default allow LAN to any rule</descr>
|
||||||
|
<interface>lan</interface>
|
||||||
|
<source>
|
||||||
|
<network>lan</network>
|
||||||
|
</source>
|
||||||
|
<destination>
|
||||||
|
<any/>
|
||||||
|
</destination>
|
||||||
|
</rule>
|
||||||
|
<rule>
|
||||||
|
<type>pass</type>
|
||||||
|
<ipprotocol>inet6</ipprotocol>
|
||||||
|
<descr>Default allow LAN IPv6 to any rule</descr>
|
||||||
|
<interface>lan</interface>
|
||||||
|
<source>
|
||||||
|
<network>lan</network>
|
||||||
|
</source>
|
||||||
|
<destination>
|
||||||
|
<any/>
|
||||||
|
</destination>
|
||||||
|
</rule>
|
||||||
|
</filter>
|
||||||
|
<rrd>
|
||||||
|
<enable/>
|
||||||
|
</rrd>
|
||||||
|
<ntpd>
|
||||||
|
<prefer>0.opnsense.pool.ntp.org</prefer>
|
||||||
|
</ntpd>
|
||||||
|
<revision>
|
||||||
|
<username>root@192.168.1.5</username>
|
||||||
|
<description>/api/dnsmasq/settings/set made changes</description>
|
||||||
|
<time>1755723263.06</time>
|
||||||
|
</revision>
|
||||||
|
<OPNsense>
|
||||||
|
<wireguard>
|
||||||
|
<client version="1.0.0" persisted_at="1755708111.04">
|
||||||
|
<clients/>
|
||||||
|
</client>
|
||||||
|
<general version="0.0.1" persisted_at="1755708111.05">
|
||||||
|
<enabled>0</enabled>
|
||||||
|
</general>
|
||||||
|
<server version="1.0.0" persisted_at="1755708111.05">
|
||||||
|
<servers/>
|
||||||
|
</server>
|
||||||
|
</wireguard>
|
||||||
|
<IPsec version="1.0.4" persisted_at="1755708111.06">
|
||||||
|
<general>
|
||||||
|
<enabled/>
|
||||||
|
<preferred_oldsa>0</preferred_oldsa>
|
||||||
|
<disablevpnrules>0</disablevpnrules>
|
||||||
|
<passthrough_networks/>
|
||||||
|
<user_source/>
|
||||||
|
<local_group/>
|
||||||
|
</general>
|
||||||
|
<charon>
|
||||||
|
<max_ikev1_exchanges/>
|
||||||
|
<threads>16</threads>
|
||||||
|
<ikesa_table_size>32</ikesa_table_size>
|
||||||
|
<ikesa_table_segments>4</ikesa_table_segments>
|
||||||
|
<init_limit_half_open>1000</init_limit_half_open>
|
||||||
|
<ignore_acquire_ts>1</ignore_acquire_ts>
|
||||||
|
<install_routes>0</install_routes>
|
||||||
|
<cisco_unity>0</cisco_unity>
|
||||||
|
<make_before_break>0</make_before_break>
|
||||||
|
<retransmit_tries/>
|
||||||
|
<retransmit_timeout/>
|
||||||
|
<retransmit_base/>
|
||||||
|
<retransmit_jitter/>
|
||||||
|
<retransmit_limit/>
|
||||||
|
<syslog>
|
||||||
|
<daemon>
|
||||||
|
<ike_name>1</ike_name>
|
||||||
|
<log_level>0</log_level>
|
||||||
|
<app>1</app>
|
||||||
|
<asn>1</asn>
|
||||||
|
<cfg>1</cfg>
|
||||||
|
<chd>1</chd>
|
||||||
|
<dmn>1</dmn>
|
||||||
|
<enc>1</enc>
|
||||||
|
<esp>1</esp>
|
||||||
|
<ike>1</ike>
|
||||||
|
<imc>1</imc>
|
||||||
|
<imv>1</imv>
|
||||||
|
<job>1</job>
|
||||||
|
<knl>1</knl>
|
||||||
|
<lib>1</lib>
|
||||||
|
<mgr>1</mgr>
|
||||||
|
<net>1</net>
|
||||||
|
<pts>1</pts>
|
||||||
|
<tls>1</tls>
|
||||||
|
<tnc>1</tnc>
|
||||||
|
</daemon>
|
||||||
|
</syslog>
|
||||||
|
<plugins>
|
||||||
|
<attr>
|
||||||
|
<subnet/>
|
||||||
|
<split-include/>
|
||||||
|
<x_28674/>
|
||||||
|
<x_28675/>
|
||||||
|
<x_28672/>
|
||||||
|
<x_28673>0</x_28673>
|
||||||
|
<x_28679/>
|
||||||
|
<dns/>
|
||||||
|
<nbns/>
|
||||||
|
</attr>
|
||||||
|
<eap-radius>
|
||||||
|
<servers/>
|
||||||
|
<accounting>0</accounting>
|
||||||
|
<class_group>0</class_group>
|
||||||
|
</eap-radius>
|
||||||
|
<xauth-pam>
|
||||||
|
<pam_service>ipsec</pam_service>
|
||||||
|
<session>0</session>
|
||||||
|
<trim_email>1</trim_email>
|
||||||
|
</xauth-pam>
|
||||||
|
</plugins>
|
||||||
|
</charon>
|
||||||
|
<keyPairs/>
|
||||||
|
<preSharedKeys/>
|
||||||
|
</IPsec>
|
||||||
|
<Swanctl version="1.0.0" persisted_at="1755708111.08">
|
||||||
|
<Connections/>
|
||||||
|
<locals/>
|
||||||
|
<remotes/>
|
||||||
|
<children/>
|
||||||
|
<Pools/>
|
||||||
|
<VTIs/>
|
||||||
|
<SPDs/>
|
||||||
|
</Swanctl>
|
||||||
|
<OpenVPNExport version="0.0.1" persisted_at="1755708111.40">
|
||||||
|
<servers/>
|
||||||
|
</OpenVPNExport>
|
||||||
|
<OpenVPN version="1.0.1" persisted_at="1755708111.40">
|
||||||
|
<Overwrites/>
|
||||||
|
<Instances/>
|
||||||
|
<StaticKeys/>
|
||||||
|
</OpenVPN>
|
||||||
|
<captiveportal version="1.0.4" persisted_at="1755708111.41">
|
||||||
|
<zones/>
|
||||||
|
<templates/>
|
||||||
|
</captiveportal>
|
||||||
|
<cron version="1.0.4" persisted_at="1755708111.43">
|
||||||
|
<jobs/>
|
||||||
|
</cron>
|
||||||
|
<DHCRelay version="1.0.1" persisted_at="1755708111.43"/>
|
||||||
|
<Firewall>
|
||||||
|
<Lvtemplate version="0.0.1" persisted_at="1755708111.45">
|
||||||
|
<templates/>
|
||||||
|
</Lvtemplate>
|
||||||
|
<Alias version="1.0.1" persisted_at="1755708111.65">
|
||||||
|
<geoip>
|
||||||
|
<url/>
|
||||||
|
</geoip>
|
||||||
|
<aliases/>
|
||||||
|
</Alias>
|
||||||
|
<Category version="1.0.0" persisted_at="1755708111.65">
|
||||||
|
<categories/>
|
||||||
|
</Category>
|
||||||
|
<Filter version="1.0.4" persisted_at="1755708111.70">
|
||||||
|
<rules/>
|
||||||
|
<snatrules/>
|
||||||
|
<npt/>
|
||||||
|
<onetoone/>
|
||||||
|
</Filter>
|
||||||
|
</Firewall>
|
||||||
|
<Netflow version="1.0.1" persisted_at="1755708111.45">
|
||||||
|
<capture>
|
||||||
|
<interfaces/>
|
||||||
|
<egress_only/>
|
||||||
|
<version>v9</version>
|
||||||
|
<targets/>
|
||||||
|
</capture>
|
||||||
|
<collect>
|
||||||
|
<enable>0</enable>
|
||||||
|
</collect>
|
||||||
|
<activeTimeout>1800</activeTimeout>
|
||||||
|
<inactiveTimeout>15</inactiveTimeout>
|
||||||
|
</Netflow>
|
||||||
|
<IDS version="1.1.0" persisted_at="1755708111.90">
|
||||||
|
<rules/>
|
||||||
|
<policies/>
|
||||||
|
<userDefinedRules/>
|
||||||
|
<files/>
|
||||||
|
<fileTags/>
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<ips>0</ips>
|
||||||
|
<promisc>0</promisc>
|
||||||
|
<interfaces>wan</interfaces>
|
||||||
|
<homenet>192.168.0.0/16,10.0.0.0/8,172.16.0.0/12</homenet>
|
||||||
|
<defaultPacketSize/>
|
||||||
|
<UpdateCron/>
|
||||||
|
<AlertLogrotate>W0D23</AlertLogrotate>
|
||||||
|
<AlertSaveLogs>4</AlertSaveLogs>
|
||||||
|
<MPMAlgo/>
|
||||||
|
<detect>
|
||||||
|
<Profile/>
|
||||||
|
<toclient_groups/>
|
||||||
|
<toserver_groups/>
|
||||||
|
</detect>
|
||||||
|
<syslog>0</syslog>
|
||||||
|
<syslog_eve>0</syslog_eve>
|
||||||
|
<LogPayload>0</LogPayload>
|
||||||
|
<verbosity/>
|
||||||
|
<eveLog>
|
||||||
|
<http>
|
||||||
|
<enable>0</enable>
|
||||||
|
<extended>0</extended>
|
||||||
|
<dumpAllHeaders/>
|
||||||
|
</http>
|
||||||
|
<tls>
|
||||||
|
<enable>0</enable>
|
||||||
|
<extended>0</extended>
|
||||||
|
<sessionResumption>0</sessionResumption>
|
||||||
|
<custom/>
|
||||||
|
</tls>
|
||||||
|
</eveLog>
|
||||||
|
</general>
|
||||||
|
</IDS>
|
||||||
|
<Interfaces>
|
||||||
|
<loopbacks version="1.0.0" persisted_at="1755708111.95"/>
|
||||||
|
<neighbors version="1.0.0" persisted_at="1755708111.96"/>
|
||||||
|
<vxlans version="1.0.2" persisted_at="1755708111.99"/>
|
||||||
|
</Interfaces>
|
||||||
|
<Kea>
|
||||||
|
<ctrl_agent version="0.0.1" persisted_at="1755708111.99">
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<http_host>127.0.0.1</http_host>
|
||||||
|
<http_port>8000</http_port>
|
||||||
|
</general>
|
||||||
|
</ctrl_agent>
|
||||||
|
<dhcp4 version="1.0.4" persisted_at="1755708112.00">
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<manual_config>0</manual_config>
|
||||||
|
<interfaces/>
|
||||||
|
<valid_lifetime>4000</valid_lifetime>
|
||||||
|
<fwrules>1</fwrules>
|
||||||
|
<dhcp_socket_type>raw</dhcp_socket_type>
|
||||||
|
</general>
|
||||||
|
<ha>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<this_server_name/>
|
||||||
|
<max_unacked_clients>2</max_unacked_clients>
|
||||||
|
</ha>
|
||||||
|
<subnets/>
|
||||||
|
<reservations/>
|
||||||
|
<ha_peers/>
|
||||||
|
</dhcp4>
|
||||||
|
<dhcp6 version="1.0.0" persisted_at="1755708112.00">
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<manual_config>0</manual_config>
|
||||||
|
<interfaces/>
|
||||||
|
<valid_lifetime>4000</valid_lifetime>
|
||||||
|
<fwrules>1</fwrules>
|
||||||
|
</general>
|
||||||
|
<ha>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<this_server_name/>
|
||||||
|
<max_unacked_clients>2</max_unacked_clients>
|
||||||
|
</ha>
|
||||||
|
<subnets/>
|
||||||
|
<reservations/>
|
||||||
|
<pd_pools/>
|
||||||
|
<ha_peers/>
|
||||||
|
</dhcp6>
|
||||||
|
</Kea>
|
||||||
|
<monit version="1.0.13" persisted_at="1755708112.02">
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<interval>120</interval>
|
||||||
|
<startdelay>120</startdelay>
|
||||||
|
<mailserver>127.0.0.1</mailserver>
|
||||||
|
<port>25</port>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<ssl>0</ssl>
|
||||||
|
<sslversion>auto</sslversion>
|
||||||
|
<sslverify>1</sslverify>
|
||||||
|
<logfile/>
|
||||||
|
<statefile/>
|
||||||
|
<eventqueuePath/>
|
||||||
|
<eventqueueSlots/>
|
||||||
|
<httpdEnabled>0</httpdEnabled>
|
||||||
|
<httpdUsername>root</httpdUsername>
|
||||||
|
<httpdPassword/>
|
||||||
|
<httpdPort>2812</httpdPort>
|
||||||
|
<httpdAllow/>
|
||||||
|
<mmonitUrl/>
|
||||||
|
<mmonitTimeout>5</mmonitTimeout>
|
||||||
|
<mmonitRegisterCredentials>1</mmonitRegisterCredentials>
|
||||||
|
</general>
|
||||||
|
<alert uuid="76cd5195-a487-4f4f-8ef5-4f9815bf19e5">
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<recipient>root@localhost.local</recipient>
|
||||||
|
<noton>0</noton>
|
||||||
|
<events/>
|
||||||
|
<format/>
|
||||||
|
<reminder/>
|
||||||
|
<description/>
|
||||||
|
</alert>
|
||||||
|
<service uuid="11610907-f700-4f0a-9926-c25a47709493">
|
||||||
|
<enabled>1</enabled>
|
||||||
|
<name>$HOST</name>
|
||||||
|
<description/>
|
||||||
|
<type>system</type>
|
||||||
|
<pidfile/>
|
||||||
|
<match/>
|
||||||
|
<path/>
|
||||||
|
<timeout>300</timeout>
|
||||||
|
<starttimeout>30</starttimeout>
|
||||||
|
<address/>
|
||||||
|
<interface/>
|
||||||
|
<start/>
|
||||||
|
<stop/>
|
||||||
|
<tests>02014be3-fc31-4af3-a0d5-061eaa67d28a,ebfd0d97-ae21-45d5-8b42-5220c75ce46f,d37f25f0-89e3-44b6-8ad2-280ac83a8904,37afd0d9-990c-4f03-a817-45691461e3d0</tests>
|
||||||
|
<depends/>
|
||||||
|
<polltime/>
|
||||||
|
</service>
|
||||||
|
<service uuid="dcc7e42f-a878-49a3-8b90-67faf21d67bd">
|
||||||
|
<enabled>1</enabled>
|
||||||
|
<name>RootFs</name>
|
||||||
|
<description/>
|
||||||
|
<type>filesystem</type>
|
||||||
|
<pidfile/>
|
||||||
|
<match/>
|
||||||
|
<path>/</path>
|
||||||
|
<timeout>300</timeout>
|
||||||
|
<starttimeout>30</starttimeout>
|
||||||
|
<address/>
|
||||||
|
<interface/>
|
||||||
|
<start/>
|
||||||
|
<stop/>
|
||||||
|
<tests>b44b859c-bc72-4c2e-82c9-4f56d84a5497</tests>
|
||||||
|
<depends/>
|
||||||
|
<polltime/>
|
||||||
|
</service>
|
||||||
|
<service uuid="5ca544d4-846a-4f61-9d6f-c191eafcd9fb">
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<name>carp_status_change</name>
|
||||||
|
<description/>
|
||||||
|
<type>custom</type>
|
||||||
|
<pidfile/>
|
||||||
|
<match/>
|
||||||
|
<path>/usr/local/opnsense/scripts/OPNsense/Monit/carp_status</path>
|
||||||
|
<timeout>300</timeout>
|
||||||
|
<starttimeout>30</starttimeout>
|
||||||
|
<address/>
|
||||||
|
<interface/>
|
||||||
|
<start/>
|
||||||
|
<stop/>
|
||||||
|
<tests>0909801b-cd11-41c8-afeb-369396247308</tests>
|
||||||
|
<depends/>
|
||||||
|
<polltime/>
|
||||||
|
</service>
|
||||||
|
<service uuid="6e16e26e-e732-4b9b-ac92-2086b84f3158">
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<name>gateway_alert</name>
|
||||||
|
<description/>
|
||||||
|
<type>custom</type>
|
||||||
|
<pidfile/>
|
||||||
|
<match/>
|
||||||
|
<path>/usr/local/opnsense/scripts/OPNsense/Monit/gateway_alert</path>
|
||||||
|
<timeout>300</timeout>
|
||||||
|
<starttimeout>30</starttimeout>
|
||||||
|
<address/>
|
||||||
|
<interface/>
|
||||||
|
<start/>
|
||||||
|
<stop/>
|
||||||
|
<tests>56e67d76-cef6-4167-a51e-2c69a921ebc9</tests>
|
||||||
|
<depends/>
|
||||||
|
<polltime/>
|
||||||
|
</service>
|
||||||
|
<test uuid="b7671673-5cf1-4123-a58c-37f57a8e9d59">
|
||||||
|
<name>Ping</name>
|
||||||
|
<type>NetworkPing</type>
|
||||||
|
<condition>failed ping</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="30cf3664-5c6f-4ac5-a52a-36023270c6fb">
|
||||||
|
<name>NetworkLink</name>
|
||||||
|
<type>NetworkInterface</type>
|
||||||
|
<condition>failed link</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="a7c0836a-b102-4f37-a73b-2a50903ffcc8">
|
||||||
|
<name>NetworkSaturation</name>
|
||||||
|
<type>NetworkInterface</type>
|
||||||
|
<condition>saturation is greater than 75%</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="02014be3-fc31-4af3-a0d5-061eaa67d28a">
|
||||||
|
<name>MemoryUsage</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>memory usage is greater than 75%</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="ebfd0d97-ae21-45d5-8b42-5220c75ce46f">
|
||||||
|
<name>CPUUsage</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>cpu usage is greater than 75%</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="d37f25f0-89e3-44b6-8ad2-280ac83a8904">
|
||||||
|
<name>LoadAvg1</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>loadavg (1min) is greater than 4</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="37afd0d9-990c-4f03-a817-45691461e3d0">
|
||||||
|
<name>LoadAvg5</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>loadavg (5min) is greater than 3</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="608d2888-9df5-486d-bbfb-bf17fad75a7e">
|
||||||
|
<name>LoadAvg15</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>loadavg (15min) is greater than 2</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="b44b859c-bc72-4c2e-82c9-4f56d84a5497">
|
||||||
|
<name>SpaceUsage</name>
|
||||||
|
<type>SpaceUsage</type>
|
||||||
|
<condition>space usage is greater than 75%</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="0909801b-cd11-41c8-afeb-369396247308">
|
||||||
|
<name>ChangedStatus</name>
|
||||||
|
<type>ProgramStatus</type>
|
||||||
|
<condition>changed status</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="56e67d76-cef6-4167-a51e-2c69a921ebc9">
|
||||||
|
<name>NonZeroStatus</name>
|
||||||
|
<type>ProgramStatus</type>
|
||||||
|
<condition>status != 0</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
</monit>
|
||||||
|
<Gateways version="1.0.0" persisted_at="1755721633.53"/>
|
||||||
|
<Syslog version="1.0.2" persisted_at="1755708112.05">
|
||||||
|
<general>
|
||||||
|
<enabled>1</enabled>
|
||||||
|
<loglocal>1</loglocal>
|
||||||
|
<maxpreserve>31</maxpreserve>
|
||||||
|
<maxfilesize/>
|
||||||
|
</general>
|
||||||
|
<destinations/>
|
||||||
|
</Syslog>
|
||||||
|
<TrafficShaper version="1.0.3" persisted_at="1755708112.06">
|
||||||
|
<pipes/>
|
||||||
|
<queues/>
|
||||||
|
<rules/>
|
||||||
|
</TrafficShaper>
|
||||||
|
<trust>
|
||||||
|
<general version="1.0.1" persisted_at="1755708112.22">
|
||||||
|
<store_intermediate_certs>0</store_intermediate_certs>
|
||||||
|
<install_crls>0</install_crls>
|
||||||
|
<fetch_crls>0</fetch_crls>
|
||||||
|
<enable_legacy_sect>1</enable_legacy_sect>
|
||||||
|
<enable_config_constraints>0</enable_config_constraints>
|
||||||
|
<CipherString/>
|
||||||
|
<Ciphersuites/>
|
||||||
|
<SignatureAlgorithms/>
|
||||||
|
<groups/>
|
||||||
|
<MinProtocol/>
|
||||||
|
<MinProtocol_DTLS/>
|
||||||
|
</general>
|
||||||
|
</trust>
|
||||||
|
<unboundplus version="1.0.12" persisted_at="1755708112.29">
|
||||||
|
<general>
|
||||||
|
<enabled>1</enabled>
|
||||||
|
<port>53</port>
|
||||||
|
<stats>0</stats>
|
||||||
|
<active_interface/>
|
||||||
|
<dnssec>0</dnssec>
|
||||||
|
<dns64>0</dns64>
|
||||||
|
<dns64prefix/>
|
||||||
|
<noarecords>0</noarecords>
|
||||||
|
<regdhcp>0</regdhcp>
|
||||||
|
<regdhcpdomain/>
|
||||||
|
<regdhcpstatic>0</regdhcpstatic>
|
||||||
|
<noreglladdr6>0</noreglladdr6>
|
||||||
|
<noregrecords>0</noregrecords>
|
||||||
|
<txtsupport>0</txtsupport>
|
||||||
|
<cacheflush>0</cacheflush>
|
||||||
|
<local_zone_type>transparent</local_zone_type>
|
||||||
|
<outgoing_interface/>
|
||||||
|
<enable_wpad>0</enable_wpad>
|
||||||
|
</general>
|
||||||
|
<advanced>
|
||||||
|
<hideidentity>0</hideidentity>
|
||||||
|
<hideversion>0</hideversion>
|
||||||
|
<prefetch>0</prefetch>
|
||||||
|
<prefetchkey>0</prefetchkey>
|
||||||
|
<dnssecstripped>0</dnssecstripped>
|
||||||
|
<aggressivensec>1</aggressivensec>
|
||||||
|
<serveexpired>0</serveexpired>
|
||||||
|
<serveexpiredreplyttl/>
|
||||||
|
<serveexpiredttl/>
|
||||||
|
<serveexpiredttlreset>0</serveexpiredttlreset>
|
||||||
|
<serveexpiredclienttimeout/>
|
||||||
|
<qnameminstrict>0</qnameminstrict>
|
||||||
|
<extendedstatistics>0</extendedstatistics>
|
||||||
|
<logqueries>0</logqueries>
|
||||||
|
<logreplies>0</logreplies>
|
||||||
|
<logtagqueryreply>0</logtagqueryreply>
|
||||||
|
<logservfail>0</logservfail>
|
||||||
|
<loglocalactions>0</loglocalactions>
|
||||||
|
<logverbosity>1</logverbosity>
|
||||||
|
<valloglevel>0</valloglevel>
|
||||||
|
<privatedomain/>
|
||||||
|
<privateaddress>0.0.0.0/8,10.0.0.0/8,100.64.0.0/10,169.254.0.0/16,172.16.0.0/12,192.0.2.0/24,192.168.0.0/16,198.18.0.0/15,198.51.100.0/24,203.0.113.0/24,233.252.0.0/24,::1/128,2001:db8::/32,fc00::/8,fd00::/8,fe80::/10</privateaddress>
|
||||||
|
<insecuredomain/>
|
||||||
|
<msgcachesize/>
|
||||||
|
<rrsetcachesize/>
|
||||||
|
<outgoingnumtcp/>
|
||||||
|
<incomingnumtcp/>
|
||||||
|
<numqueriesperthread/>
|
||||||
|
<outgoingrange/>
|
||||||
|
<jostletimeout/>
|
||||||
|
<discardtimeout/>
|
||||||
|
<cachemaxttl/>
|
||||||
|
<cachemaxnegativettl/>
|
||||||
|
<cacheminttl/>
|
||||||
|
<infrahostttl/>
|
||||||
|
<infrakeepprobing>0</infrakeepprobing>
|
||||||
|
<infracachenumhosts/>
|
||||||
|
<unwantedreplythreshold/>
|
||||||
|
</advanced>
|
||||||
|
<acls>
|
||||||
|
<default_action>allow</default_action>
|
||||||
|
</acls>
|
||||||
|
<dnsbl>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<safesearch>0</safesearch>
|
||||||
|
<type/>
|
||||||
|
<lists/>
|
||||||
|
<whitelists/>
|
||||||
|
<blocklists/>
|
||||||
|
<wildcards/>
|
||||||
|
<address/>
|
||||||
|
<nxdomain>0</nxdomain>
|
||||||
|
</dnsbl>
|
||||||
|
<forwarding>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
</forwarding>
|
||||||
|
<dots/>
|
||||||
|
<hosts/>
|
||||||
|
<aliases/>
|
||||||
|
</unboundplus>
|
||||||
|
</OPNsense>
|
||||||
|
<hasync version="1.0.2" persisted_at="1755708111.35">
|
||||||
|
<disablepreempt>0</disablepreempt>
|
||||||
|
<disconnectppps>0</disconnectppps>
|
||||||
|
<pfsyncinterface/>
|
||||||
|
<pfsyncpeerip/>
|
||||||
|
<pfsyncversion>1400</pfsyncversion>
|
||||||
|
<synchronizetoip/>
|
||||||
|
<verifypeer>0</verifypeer>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<syncitems/>
|
||||||
|
</hasync>
|
||||||
|
<openvpn/>
|
||||||
|
<ifgroups version="1.0.0" persisted_at="1755708111.71"/>
|
||||||
|
<bridges version="1.0.0" persisted_at="1755708111.91">
|
||||||
|
<bridged/>
|
||||||
|
</bridges>
|
||||||
|
<gifs version="1.0.0" persisted_at="1755708111.92">
|
||||||
|
<gif/>
|
||||||
|
</gifs>
|
||||||
|
<gres version="1.0.0" persisted_at="1755708111.93">
|
||||||
|
<gre/>
|
||||||
|
</gres>
|
||||||
|
<laggs version="1.0.0" persisted_at="1755708111.95">
|
||||||
|
<lagg/>
|
||||||
|
</laggs>
|
||||||
|
<virtualip version="1.0.1" persisted_at="1755708111.96">
|
||||||
|
<vip/>
|
||||||
|
</virtualip>
|
||||||
|
<vlans version="1.0.0" persisted_at="1755708111.98">
|
||||||
|
<vlan/>
|
||||||
|
</vlans>
|
||||||
|
<staticroutes version="1.0.0" persisted_at="1755708112.03"/>
|
||||||
|
<ppps>
|
||||||
|
<ppp/>
|
||||||
|
</ppps>
|
||||||
|
<wireless>
|
||||||
|
<clone/>
|
||||||
|
</wireless>
|
||||||
|
<ca/>
|
||||||
|
<dhcpd/>
|
||||||
|
<dhcpdv6/>
|
||||||
|
<cert uuid="d60972af-642c-411f-abb6-43e0d680fefd">
|
||||||
|
<refid>68a5faf1685db</refid>
|
||||||
|
<descr>Web GUI TLS certificate</descr>
|
||||||
|
<caref/>
|
||||||
|
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhFakNDQlBxZ0F3SUJBZ0lVQlpQYjUwMXNaM3hhTTZzSDVUM1ZNRG9mcnlNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZWXhHakFZQmdOVkJBTU1FVTlRVG5ObGJuTmxMbWx1ZEdWeWJtRnNNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWlRBZUZ3MHkKTlRBNE1qQXhOalF5TWpaYUZ3MHlOakE1TWpFeE5qUXlNalphTUlHR01Sb3dHQVlEVlFRRERCRlBVRTV6Wlc1egpaUzVwYm5SbGNtNWhiREVMTUFrR0ExVUVCaE1DVGt3eEZUQVRCZ05WQkFnTURGcDFhV1F0U0c5c2JHRnVaREVWCk1CTUdBMVVFQnd3TVRXbGtaR1ZzYUdGeWJtbHpNUzB3S3dZRFZRUUtEQ1JQVUU1elpXNXpaU0J6Wld4bUxYTnAKWjI1bFpDQjNaV0lnWTJWeWRHbG1hV05oZEdVd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJSwpBb0lDQVFEQVozZk1lakdOckZYVFhZd24vTUp5YXBYMDdVOTVWZ0JERzZmWU1wZkZEU1NXeFRValRLRlNvR3JRCkpDb0ZyQ0NRQ3BsWnlua0ZjVFZvWVAraGszcndWWmxHZVFyL0RyR2ZiM1lPc2RGbEtublo5YzRTOGVrSkc2WTIKYWI0eFJTcnBja0hoTWQ4MHNENUFRdks1Skc2MS9UMEhNRXVMcGlraUF3MFpCempWbjlVUUpSRTJiS29kOW9IdgpEbG5DVGNTV1FUNWYrV3A0Sll0anVBVHBZMUlRVW4wbkxuWDBHUC9JRGtsWjFrdEZOczRPOGcrQmRVWFU0MUdvCjNGTFpCc1hQVm90WFVrRVl2R0ZldjJRMlBwSnNib25aWEpoR255amREUlZkZFZGOGhacGJua0wwU2xJTVFNeFQKSTRXK051ZmUvUTZGRDdmZnFRa0toemZ3SlJ2N0dGM2RTRlEwWldPUGNTZVZXY3lWTlVVMTMvcnBteUpvNXZhWQpYR000THcxb1d2c1FjUWxaUllnSkxhSWMzM0dnMGQySHhvZTIvdytIeFRXOEw4ZldqbzgxK250YWJXTlZhV0IwCnd6TXNFNGRBOWtxR2dmcWZjbm96ckovamJtNEFBTTB6QTlVZFh0SUJtRGdpeFNkVzB4eHNQNlZWRTdMdnlURTgKWnBJTjRoL1FCYURyc2hhRXJ6TXhUd01IZXJ1RlV4bFpxZEdSa3ErQXRJU1VwRE05VXB0YWZZMk5ydzgxVDFhSwoycFduVFlFQktCUnVwdk00TzFHNXN5NU5GZm13NFRTc0pqRUhtMFEvVTZ4ZU45bVg0OFhIYUZFNnhvQTJEZEMrCjJHS2lKWFlrYi9nZm13cmp1Y3NGWGpBS2tDNWF6ZXFqaERXeGxDbmJNS1YwSTQxOWp3SURBUUFCbzRJQmREQ0MKQVhBd0NRWURWUjBUQkFJd0FEQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0JrQXdOQVlKWUlaSUFZYjRRZ0VOQkNjVwpKVTlRVG5ObGJuTmxJRWRsYm1WeVlYUmxaQ0JUWlhKMlpYSWdRMlZ5ZEdsbWFXTmhkR1V3SFFZRFZSME9CQllFCkZMK2YzU0tCM0tMSi9nWStBUTJIZDBhTzVPRU1NSUd3QmdOVkhTTUVnYWd3Z2FXaGdZeWtnWWt3Z1lZeEdqQVkKQmdOVkJBTU1FVTlRVG5ObGJuTmxMbWx1ZEdWeWJtRnNNUXN3Q1FZRFZRUUdFd0pPVERFVk1CTUdBMVVFQ0F3TQpXblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyQmdOVkJBb01KRTlRClRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVUJaUGI1MDFzWjN4YU02c0gKNVQzVk1Eb2ZyeU13SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQ01Bc0dBMVVkRHdRRQpBd0lGb0RBY0JnTlZIUkVFRlRBVGdoRlBVRTV6Wlc1elpTNXBiblJsY201aGJEQU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBZ0VBY3F3VEN0RmVwWDlFOEFMYXRaWEE4dkN2b1YwZkxuaElPM0lWT2tZNEhYMTRRRU9NUGo4KzVXMXoKc3hyUGNscEJQVU5tbXJRb0hWUHBuWTRFM2hFanlYY1JWSzZtTEFrSkpRUDJPOEE2NFFpL3FNSkhCYUlEU0MzKwpqMHdkMGYyODRvcEppQ0F2UnF0SGh1bDd3akd4QzNZUXRxWTFMODNWUHBOWGRjOVVsZExTUGZ6WWluMlBPekMrClFDWU9qN3VQUDlCVGExTURudkdPdkdrOHdQeUJGaFZQWVFBWjYwb1ZaS2psOUI2R1piRzF1SG1ON3p3a3k0eEIKNk1RSlF3cHFscDdXQ09QSHJlZTFiVGZaMkJMZFQrZzJHakVMT0xNRGJMTHAzNUw0blBDUmNGRkJZNEszMHBncQpVWjdncEtNTmhuR3huQ29lR3dHUk54ZHFoZnNlT3FqaURVM0hBVDEya3FReU1vOEZNT1g1bG9EaVpXSGZTS0JrClVRaG5Tc1BTMG0vZ2dSRVgwNVQzYWM2NUxNOVVXMEs2MXppZUs5WFhTcjNXWlQ1TkhNV2JmU0VScUR4SGRtZ0YKeGt3YXkxZWpCZTFoZzdGMGpicTVDMGo1ZXB5ZDNOc1BTVUtDY2FDNi9aWTNkUHVYWVZZL0J2dnFsZHZJSzRBeAo0R1BLQ0xzaStGRjliSXZRWG4zbTV2KzJoQWF2WlpxcmJOTFUzVFQ0aDd2QllBOVRNcXpwd3lEaW5BR3RhaEE3CnhDSW5IU01kZXpQcnNkZDJrTW5TckhPdWtGeGdKb2lNZ3krVlJmdTdvZk9NMjhYQ1FySWF6djBFYmFhTU1ZMTcKRzlXOFd3SXZUb2lYY1ZWNTk3K1NUNHRsSTVIM3lDZFBtSk1kRm5GcDg1K2JzbW42MFQwPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==</crt>
|
||||||
|
<csr/>
|
||||||
|
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRREFaM2ZNZWpHTnJGWFQKWFl3bi9NSnlhcFgwN1U5NVZnQkRHNmZZTXBmRkRTU1d4VFVqVEtGU29HclFKQ29GckNDUUNwbFp5bmtGY1RWbwpZUCtoazNyd1ZabEdlUXIvRHJHZmIzWU9zZEZsS25uWjljNFM4ZWtKRzZZMmFiNHhSU3JwY2tIaE1kODBzRDVBClF2SzVKRzYxL1QwSE1FdUxwaWtpQXcwWkJ6alZuOVVRSlJFMmJLb2Q5b0h2RGxuQ1RjU1dRVDVmK1dwNEpZdGoKdUFUcFkxSVFVbjBuTG5YMEdQL0lEa2xaMWt0Rk5zNE84ZytCZFVYVTQxR28zRkxaQnNYUFZvdFhVa0VZdkdGZQp2MlEyUHBKc2JvblpYSmhHbnlqZERSVmRkVkY4aFpwYm5rTDBTbElNUU14VEk0VytOdWZlL1E2RkQ3ZmZxUWtLCmh6ZndKUnY3R0YzZFNGUTBaV09QY1NlVldjeVZOVVUxMy9ycG15Sm81dmFZWEdNNEx3MW9XdnNRY1FsWlJZZ0oKTGFJYzMzR2cwZDJIeG9lMi93K0h4VFc4TDhmV2pvODErbnRhYldOVmFXQjB3ek1zRTRkQTlrcUdnZnFmY25vegpySi9qYm00QUFNMHpBOVVkWHRJQm1EZ2l4U2RXMHh4c1A2VlZFN0x2eVRFOFpwSU40aC9RQmFEcnNoYUVyek14ClR3TUhlcnVGVXhsWnFkR1JrcStBdElTVXBETTlVcHRhZlkyTnJ3ODFUMWFLMnBXblRZRUJLQlJ1cHZNNE8xRzUKc3k1TkZmbXc0VFNzSmpFSG0wUS9VNnhlTjltWDQ4WEhhRkU2eG9BMkRkQysyR0tpSlhZa2IvZ2Ztd3JqdWNzRgpYakFLa0M1YXplcWpoRFd4bENuYk1LVjBJNDE5andJREFRQUJBb0lDQUNVVkRBTE4zalVXN09leTFPdDBES251Cm52NDRxcU9SRHJYZ1k2WUlnalhKUmE4RlRTdURmbWdsWU5EQzE1S0dUVFJWeHA2R3BuS0ZFaTBPM05Yd1RiWjYKV1BNN0t3SmplNXBsNmhRRTgzMlRCUzhiNzk2NDN4Z1JTeVNibHJ0NlFENEQ5bXlIcHlSSmY0WDFJVURMbzhiUgppdXlTdzB5ajlyT0djUVRNM29oVnFNUFcwUTF6UGdwT1UxYVdwbmdMY3dNZWlmNEhYUnpRNTUrTmZPemFacHVjCnVtQk4xUS81clhxS1BscmhNVnFpcUc0Nit3QVJjU2NKdE5oZHRsMzdyeTQ1Mk5zNGtERkxSVnowZUVUNEpGSmYKcjVQRUE5bEFuYWlVOS9RdVEwbERtcTlqdmpYRkNURXhYKy82SGJHK2RVd0Y2OEY3ZVEzVFQxbkhHK0hkMVJsbgpOWm1JM0p2d0Z1cG9JeU9VdlpJb3VGVmo2ak8ra0JLejkza1BHWmdMbnNmUUw5WDhRbTU3cjh4K3Z1eFNudGI1CjV4WVBxRkdrOWQrbDUwbTlQakdkekxGT3UwYnJ5TmQ4MFVMS2tuUlFtUVpvTngxck5GTUxpSjNlZENWUS9lclUKT1BDQ0Z0WEJMemJGTjR2ZzVWRjZMUkhvZGxqcEgxRzJOSXNoSzJhc1FuWS9RWDFpUUNLSk1tWERSUndMTWVsNQp3MUF4T2FqYVkzbWx2ZlRVd2xqdkE3a0tFUDBvZzRPeXZldDA2WTVRWk1EQXc1V00yT0pZVDVxcmFlYjZDbTdMCjlNckk4bG50TGp3WFVSZG4yU3U2RCtCWXNpcC9KK3BvOFNqYlJBaGJIc0lJbkJ1QWJnbGxqdTB2QXRXZmFkQlQKOTg4YnUwK3VUb1Q2T1Jkbk84Y1JBb0lCQVFEcStWYkVUQWVpSHN6K29jZnFWV3VwVHJrc2FNNm1wUUMwb0tqZApwb1FzWGVuTmNiNThHQ3FhWHkvdTJHWmNKUnR1QXRHamEyUVpEUUFUSjQyVTFmaTFhWm90Y053eXhPdmlud1NjCmVLZyt0ZGcwdW9LeGs2aXJKRFptaDBIK3Ewblg2RFJYK25RNDVmWVNmRkRFK0ZLd1lac0dQMkhYV3dKaVZ6OE0KU2NkL2pETTFRTWV2OXIzZWx1dS9DWFlvZ1N0N00wMklyczVoNjRuNjFmdVZjNHI4YmUwdFkrUTVsUnlwWk9NVwpkQ2VkWGFOV3RaNjF2bEFxamNiWkpkdXFBUjJjNzAyR3NML201TXA4Zmd3YmY2aG51TXJLaVlpQjlZalZxalc2CmYyUW1PclZtMUk0MFJBMC9OaFBTR2NXejBkNXZrdXY0VHUra2JFbERZTCsxaHY1M0FvSUJBUURSbnZaTmJaa1UKTXpmUTRLWEdML3dLUXJEbjNvL0RENWVBR1ZDTGcwTUkyYlAxYWpubHNVTjE4NCs1UWF6cVVOaWlZT3laODczeQpQYkw0cTBOZWFDYXdxby9WbjJMSkVIUFVTTVhUWjB4ckxTa1hPUjFuMDUwT2tDWXhVbFpOUXFvZU1xcHJGNXZLCm1NNlJxalN4NS8ydU9IUlR1SDRVV2RETEpwTDVUN2RpUCtXcFUwSDlSUWhrNDdkQUJaUjZEZjNxaDJEYmVxUWoKdWcxY0hWUVNqaldhUGpVZGlLR2dHemdvdlE2UkdNZDA1UVUzdkRMdzBCSkNPQ25XV2x0VXkvMW1jMUpPUHR2ZQp4UGltV2tRNmlkRHZ4RGZFRGg5U05zY1FPMnBTVjZxNnhCTWlqVGgvTldGN2NsOU1LYUhJWGxzTmt0RFVXWHZyCmNKRlM4eE1TcDhlcEFvSUJBUUNtWktVTjRxMHhIOUNZckdYT1Nta3Yvc0JnYzJPTFhLTXdSZWp1OVFENkRoTUgKMmZsREZUWHVGV1B6SmlqdUxaVE1CWkVBd1lhanVySUgzbVdETlRhbStMNG1XWnFGRlMvWlRqUk12YUNlcjlVSQpHZDk4OG94cGpQNDlBcUU0UDRIT00vQUZNU1ZtT1dwVTB0VzdkZ0hRUjM0cElXOGV1cUxva3RIaDJNaytTRURuCkFCV29SUGxWaTlncmN2N0tWaFk5YXlvSGxZb3VpMFl0YTZSNXc5VnpSa0REZU01Zi9Iak1kOVhieTZ0VjQ3NU0KSTliYzZvVUliVmVYNUJnMnZnMkRXVzZ6NTZ3dFRHMGJWWU1yWWU0V2JTU2w0bGpaZHM5TVJ2ay9OUUR0bFh0cAo4ekUwVDlCMXA4ekhabHE3S08zMFlyMVpIRVRWVVoxYjZrSTN3UDJuQW9JQkFFZ1VGKzlCMjF4RnpGQ0hucGtLClVPa2FTNGcvVUVHcmI5VzlYcVBLUzllVVBEd0wvY0tNZEh6dmRpRW1neFhESE9xZzExcU1wR2pTYkdMelNPUUMKZmlOTFV0QUswVVgvNFVSQ2pidUdqcEZmNHZ3NFNITTJJWkFyWXVhY3dFNHF1U0pQRzZoZFl0V0VPNnQ4MGtmRwpWTVYrWmdtUHE5TEZtM1R2VzZSY2s5czF5M3V3eEVVWllxeUdYTEduK1lrS25KL3pVd3ZGSFFHbjdRWWFrNWtaCnl6YXhZMFEzZ2hQeXFCbmlBRXRHTVBkeDlKeFltMCtRekdaMnQzUWNkOEV0cjRGMTcvdzF3eGJUdGdoRmk2WngKVXlYTzI3b1BmUmVnL0V3SmtpS2tRSEdlRUZKV0t2SWE0ZDAzMDZyMXVjcVRIMDRJaU1RcnpOK0ZRb002VC9tZgpOWmtDZ2dFQUsrRVJNVVdJZTE3V1k3VDIycy9lOEplN0xxSXlUcU9mSGovaWFUUjhHbXhqcU1HNEdod1RpVXJsCkh0Skhud3BMVGFjVmdYUjV3UmtYcEhRT2JqSUFzeVNBUGxwSzBvZUkyK2kvS0cyQjZ2U0cza0V2b1VZY0RlRk4KdzhHd0oxNDNTd21LQXM4eUtWMmd1RjhmRXNNVitEQzNzVHFlZXJmMy82bFprMUVCVFF0QTZqVHdqK0picXgwVgpaalZJUXBwUE8vc1VHdi9LZVE3MW5ockJpT0lXclJ0dDRTUDJ2aWx2em9DUTQxVjFqZ09wS3VwU3E1Y2J3VDRxCmp1bkJIMkx5VnNQaUc4M0Vha1JSUEhDK0craTk1MFJxckxVRUJOeVdHNGlMNTdUdU9xYVJuSmRnN2ZFb2lVLzMKNld4TjlvR2VRWjV0NjZkdTJEL01WSUZ4ZzJ1cXRBPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||||
|
</cert>
|
||||||
|
<syslog/>
|
||||||
|
</opnsense>
|
826
opnsense-config/src/tests/data/config-full-25.7.xml
Normal file
826
opnsense-config/src/tests/data/config-full-25.7.xml
Normal file
@ -0,0 +1,826 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<opnsense>
|
||||||
|
<theme>opnsense</theme>
|
||||||
|
<sysctl version="1.0.1" persisted_at="1755708111.39">
|
||||||
|
<item/>
|
||||||
|
</sysctl>
|
||||||
|
<system>
|
||||||
|
<serialspeed>115200</serialspeed>
|
||||||
|
<primaryconsole>serial</primaryconsole>
|
||||||
|
<optimization>normal</optimization>
|
||||||
|
<hostname>OPNsense</hostname>
|
||||||
|
<domain>internal</domain>
|
||||||
|
<dnsallowoverride>1</dnsallowoverride>
|
||||||
|
<dnsallowoverride_exclude/>
|
||||||
|
<group uuid="67305f6f-7f7a-454d-8a4e-65cb8f072d81">
|
||||||
|
<gid>1999</gid>
|
||||||
|
<name>admins</name>
|
||||||
|
<scope>system</scope>
|
||||||
|
<description>System Administrators</description>
|
||||||
|
<priv>page-all</priv>
|
||||||
|
<member>0</member>
|
||||||
|
<source_networks/>
|
||||||
|
</group>
|
||||||
|
<user uuid="1d2ed537-5d1a-4772-9600-37b93f9f798b">
|
||||||
|
<uid>0</uid>
|
||||||
|
<name>root</name>
|
||||||
|
<disabled>0</disabled>
|
||||||
|
<scope>system</scope>
|
||||||
|
<expires/>
|
||||||
|
<authorizedkeys/>
|
||||||
|
<otp_seed/>
|
||||||
|
<shell/>
|
||||||
|
<password>$2y$10$YRVoF4SgskIsrXOvOQjGieB9XqHPRra9R7d80B3BZdbY/j21TwBfS</password>
|
||||||
|
<pwd_changed_at/>
|
||||||
|
<landing_page/>
|
||||||
|
<comment/>
|
||||||
|
<email/>
|
||||||
|
<apikeys/>
|
||||||
|
<priv/>
|
||||||
|
<language/>
|
||||||
|
<descr>System Administrator</descr>
|
||||||
|
<dashboard/>
|
||||||
|
</user>
|
||||||
|
<timezone>Etc/UTC</timezone>
|
||||||
|
<timeservers>0.opnsense.pool.ntp.org 1.opnsense.pool.ntp.org 2.opnsense.pool.ntp.org 3.opnsense.pool.ntp.org</timeservers>
|
||||||
|
<webgui>
|
||||||
|
<protocol>https</protocol>
|
||||||
|
<ssl-certref>68a5faf1685db</ssl-certref>
|
||||||
|
<port/>
|
||||||
|
<ssl-ciphers/>
|
||||||
|
<interfaces/>
|
||||||
|
<compression/>
|
||||||
|
</webgui>
|
||||||
|
<disablenatreflection>yes</disablenatreflection>
|
||||||
|
<usevirtualterminal>1</usevirtualterminal>
|
||||||
|
<disableconsolemenu>1</disableconsolemenu>
|
||||||
|
<disablevlanhwfilter>1</disablevlanhwfilter>
|
||||||
|
<disablechecksumoffloading>1</disablechecksumoffloading>
|
||||||
|
<disablesegmentationoffloading>1</disablesegmentationoffloading>
|
||||||
|
<disablelargereceiveoffloading>1</disablelargereceiveoffloading>
|
||||||
|
<ipv6allow>1</ipv6allow>
|
||||||
|
<powerd_ac_mode>hadp</powerd_ac_mode>
|
||||||
|
<powerd_battery_mode>hadp</powerd_battery_mode>
|
||||||
|
<powerd_normal_mode>hadp</powerd_normal_mode>
|
||||||
|
<bogons>
|
||||||
|
<interval>monthly</interval>
|
||||||
|
</bogons>
|
||||||
|
<pf_share_forward>1</pf_share_forward>
|
||||||
|
<lb_use_sticky>1</lb_use_sticky>
|
||||||
|
<ssh>
|
||||||
|
<group>admins</group>
|
||||||
|
<noauto>1</noauto>
|
||||||
|
<interfaces/>
|
||||||
|
<kex/>
|
||||||
|
<ciphers/>
|
||||||
|
<macs/>
|
||||||
|
<keys/>
|
||||||
|
<keysig/>
|
||||||
|
<rekeylimit/>
|
||||||
|
<enabled>enabled</enabled>
|
||||||
|
<passwordauth>1</passwordauth>
|
||||||
|
<permitrootlogin>1</permitrootlogin>
|
||||||
|
</ssh>
|
||||||
|
<rrdbackup>-1</rrdbackup>
|
||||||
|
<netflowbackup>-1</netflowbackup>
|
||||||
|
<firmware version="1.0.1" persisted_at="1755708111.32">
|
||||||
|
<mirror/>
|
||||||
|
<flavour/>
|
||||||
|
<plugins/>
|
||||||
|
<type/>
|
||||||
|
<subscription/>
|
||||||
|
<reboot>0</reboot>
|
||||||
|
</firmware>
|
||||||
|
<dnsserver/>
|
||||||
|
<language>en_US</language>
|
||||||
|
</system>
|
||||||
|
<interfaces>
|
||||||
|
<wan>
|
||||||
|
<enable>1</enable>
|
||||||
|
<if>vtnet0</if>
|
||||||
|
<mtu/>
|
||||||
|
<ipaddr>dhcp</ipaddr>
|
||||||
|
<ipaddrv6>dhcp6</ipaddrv6>
|
||||||
|
<subnet/>
|
||||||
|
<gateway/>
|
||||||
|
<blockpriv>0</blockpriv>
|
||||||
|
<blockbogons>1</blockbogons>
|
||||||
|
<media/>
|
||||||
|
<mediaopt/>
|
||||||
|
<dhcp6-ia-pd-len>0</dhcp6-ia-pd-len>
|
||||||
|
<dhcphostname/>
|
||||||
|
<spoofmac/>
|
||||||
|
<mss/>
|
||||||
|
</wan>
|
||||||
|
<lan>
|
||||||
|
<enable>1</enable>
|
||||||
|
<if>vtnet1</if>
|
||||||
|
<ipaddr>192.168.1.1</ipaddr>
|
||||||
|
<subnet>24</subnet>
|
||||||
|
<ipaddrv6>track6</ipaddrv6>
|
||||||
|
<subnetv6>64</subnetv6>
|
||||||
|
<media/>
|
||||||
|
<mediaopt/>
|
||||||
|
<track6-interface>wan</track6-interface>
|
||||||
|
<track6-prefix-id>0</track6-prefix-id>
|
||||||
|
</lan>
|
||||||
|
<lo0>
|
||||||
|
<internal_dynamic>1</internal_dynamic>
|
||||||
|
<descr>Loopback</descr>
|
||||||
|
<enable>1</enable>
|
||||||
|
<if>lo0</if>
|
||||||
|
<ipaddr>127.0.0.1</ipaddr>
|
||||||
|
<ipaddrv6>::1</ipaddrv6>
|
||||||
|
<subnet>8</subnet>
|
||||||
|
<subnetv6>128</subnetv6>
|
||||||
|
<type>none</type>
|
||||||
|
<virtual>1</virtual>
|
||||||
|
</lo0>
|
||||||
|
</interfaces>
|
||||||
|
<dnsmasq version="1.0.7" persisted_at="1755721633.54">
|
||||||
|
<enable>1</enable>
|
||||||
|
<regdhcp>0</regdhcp>
|
||||||
|
<regdhcpstatic>0</regdhcpstatic>
|
||||||
|
<dhcpfirst>0</dhcpfirst>
|
||||||
|
<strict_order>0</strict_order>
|
||||||
|
<domain_needed>0</domain_needed>
|
||||||
|
<no_private_reverse>0</no_private_reverse>
|
||||||
|
<no_resolv>0</no_resolv>
|
||||||
|
<log_queries>0</log_queries>
|
||||||
|
<no_hosts>0</no_hosts>
|
||||||
|
<strictbind>0</strictbind>
|
||||||
|
<dnssec>0</dnssec>
|
||||||
|
<regdhcpdomain/>
|
||||||
|
<interface>lan</interface>
|
||||||
|
<port>0</port>
|
||||||
|
<dns_forward_max/>
|
||||||
|
<cache_size/>
|
||||||
|
<local_ttl/>
|
||||||
|
<add_mac/>
|
||||||
|
<add_subnet>0</add_subnet>
|
||||||
|
<strip_subnet>0</strip_subnet>
|
||||||
|
<dhcp>
|
||||||
|
<no_interface/>
|
||||||
|
<fqdn>1</fqdn>
|
||||||
|
<domain/>
|
||||||
|
<lease_max/>
|
||||||
|
<authoritative>0</authoritative>
|
||||||
|
<default_fw_rules>1</default_fw_rules>
|
||||||
|
<reply_delay/>
|
||||||
|
<enable_ra>0</enable_ra>
|
||||||
|
<nosync>0</nosync>
|
||||||
|
</dhcp>
|
||||||
|
<no_ident>1</no_ident>
|
||||||
|
<dhcp_ranges uuid="78b5c4a4-565d-4cd7-af10-29050f29e494">
|
||||||
|
<interface>lan</interface>
|
||||||
|
<set_tag/>
|
||||||
|
<start_addr>192.168.1.41</start_addr>
|
||||||
|
<end_addr>192.168.1.245</end_addr>
|
||||||
|
<subnet_mask/>
|
||||||
|
<constructor/>
|
||||||
|
<mode/>
|
||||||
|
<prefix_len/>
|
||||||
|
<lease_time/>
|
||||||
|
<domain_type>range</domain_type>
|
||||||
|
<domain/>
|
||||||
|
<nosync>0</nosync>
|
||||||
|
<ra_mode/>
|
||||||
|
<ra_priority/>
|
||||||
|
<ra_mtu/>
|
||||||
|
<ra_interval/>
|
||||||
|
<ra_router_lifetime/>
|
||||||
|
<description/>
|
||||||
|
</dhcp_ranges>
|
||||||
|
</dnsmasq>
|
||||||
|
<snmpd>
|
||||||
|
<syslocation/>
|
||||||
|
<syscontact/>
|
||||||
|
<rocommunity>public</rocommunity>
|
||||||
|
</snmpd>
|
||||||
|
<nat>
|
||||||
|
<outbound>
|
||||||
|
<mode>automatic</mode>
|
||||||
|
</outbound>
|
||||||
|
</nat>
|
||||||
|
<filter>
|
||||||
|
<rule>
|
||||||
|
<type>pass</type>
|
||||||
|
<ipprotocol>inet</ipprotocol>
|
||||||
|
<descr>Default allow LAN to any rule</descr>
|
||||||
|
<interface>lan</interface>
|
||||||
|
<source>
|
||||||
|
<network>lan</network>
|
||||||
|
</source>
|
||||||
|
<destination>
|
||||||
|
<any/>
|
||||||
|
</destination>
|
||||||
|
</rule>
|
||||||
|
<rule>
|
||||||
|
<type>pass</type>
|
||||||
|
<ipprotocol>inet6</ipprotocol>
|
||||||
|
<descr>Default allow LAN IPv6 to any rule</descr>
|
||||||
|
<interface>lan</interface>
|
||||||
|
<source>
|
||||||
|
<network>lan</network>
|
||||||
|
</source>
|
||||||
|
<destination>
|
||||||
|
<any/>
|
||||||
|
</destination>
|
||||||
|
</rule>
|
||||||
|
</filter>
|
||||||
|
<rrd>
|
||||||
|
<enable/>
|
||||||
|
</rrd>
|
||||||
|
<ntpd>
|
||||||
|
<prefer>0.opnsense.pool.ntp.org</prefer>
|
||||||
|
</ntpd>
|
||||||
|
<revision>
|
||||||
|
<username>root@192.168.1.5</username>
|
||||||
|
<description>/system_advanced_admin.php made changes</description>
|
||||||
|
<time>1755721653.06</time>
|
||||||
|
</revision>
|
||||||
|
<OPNsense>
|
||||||
|
<wireguard>
|
||||||
|
<client version="1.0.0" persisted_at="1755708111.04">
|
||||||
|
<clients/>
|
||||||
|
</client>
|
||||||
|
<general version="0.0.1" persisted_at="1755708111.05">
|
||||||
|
<enabled>0</enabled>
|
||||||
|
</general>
|
||||||
|
<server version="1.0.0" persisted_at="1755708111.05">
|
||||||
|
<servers/>
|
||||||
|
</server>
|
||||||
|
</wireguard>
|
||||||
|
<IPsec version="1.0.4" persisted_at="1755708111.06">
|
||||||
|
<general>
|
||||||
|
<enabled/>
|
||||||
|
<preferred_oldsa>0</preferred_oldsa>
|
||||||
|
<disablevpnrules>0</disablevpnrules>
|
||||||
|
<passthrough_networks/>
|
||||||
|
<user_source/>
|
||||||
|
<local_group/>
|
||||||
|
</general>
|
||||||
|
<charon>
|
||||||
|
<max_ikev1_exchanges/>
|
||||||
|
<threads>16</threads>
|
||||||
|
<ikesa_table_size>32</ikesa_table_size>
|
||||||
|
<ikesa_table_segments>4</ikesa_table_segments>
|
||||||
|
<init_limit_half_open>1000</init_limit_half_open>
|
||||||
|
<ignore_acquire_ts>1</ignore_acquire_ts>
|
||||||
|
<install_routes>0</install_routes>
|
||||||
|
<cisco_unity>0</cisco_unity>
|
||||||
|
<make_before_break>0</make_before_break>
|
||||||
|
<retransmit_tries/>
|
||||||
|
<retransmit_timeout/>
|
||||||
|
<retransmit_base/>
|
||||||
|
<retransmit_jitter/>
|
||||||
|
<retransmit_limit/>
|
||||||
|
<syslog>
|
||||||
|
<daemon>
|
||||||
|
<ike_name>1</ike_name>
|
||||||
|
<log_level>0</log_level>
|
||||||
|
<app>1</app>
|
||||||
|
<asn>1</asn>
|
||||||
|
<cfg>1</cfg>
|
||||||
|
<chd>1</chd>
|
||||||
|
<dmn>1</dmn>
|
||||||
|
<enc>1</enc>
|
||||||
|
<esp>1</esp>
|
||||||
|
<ike>1</ike>
|
||||||
|
<imc>1</imc>
|
||||||
|
<imv>1</imv>
|
||||||
|
<job>1</job>
|
||||||
|
<knl>1</knl>
|
||||||
|
<lib>1</lib>
|
||||||
|
<mgr>1</mgr>
|
||||||
|
<net>1</net>
|
||||||
|
<pts>1</pts>
|
||||||
|
<tls>1</tls>
|
||||||
|
<tnc>1</tnc>
|
||||||
|
</daemon>
|
||||||
|
</syslog>
|
||||||
|
<plugins>
|
||||||
|
<attr>
|
||||||
|
<subnet/>
|
||||||
|
<split-include/>
|
||||||
|
<x_28674/>
|
||||||
|
<x_28675/>
|
||||||
|
<x_28672/>
|
||||||
|
<x_28673>0</x_28673>
|
||||||
|
<x_28679/>
|
||||||
|
<dns/>
|
||||||
|
<nbns/>
|
||||||
|
</attr>
|
||||||
|
<eap-radius>
|
||||||
|
<servers/>
|
||||||
|
<accounting>0</accounting>
|
||||||
|
<class_group>0</class_group>
|
||||||
|
</eap-radius>
|
||||||
|
<xauth-pam>
|
||||||
|
<pam_service>ipsec</pam_service>
|
||||||
|
<session>0</session>
|
||||||
|
<trim_email>1</trim_email>
|
||||||
|
</xauth-pam>
|
||||||
|
</plugins>
|
||||||
|
</charon>
|
||||||
|
<keyPairs/>
|
||||||
|
<preSharedKeys/>
|
||||||
|
</IPsec>
|
||||||
|
<Swanctl version="1.0.0" persisted_at="1755708111.08">
|
||||||
|
<Connections/>
|
||||||
|
<locals/>
|
||||||
|
<remotes/>
|
||||||
|
<children/>
|
||||||
|
<Pools/>
|
||||||
|
<VTIs/>
|
||||||
|
<SPDs/>
|
||||||
|
</Swanctl>
|
||||||
|
<OpenVPNExport version="0.0.1" persisted_at="1755708111.40">
|
||||||
|
<servers/>
|
||||||
|
</OpenVPNExport>
|
||||||
|
<OpenVPN version="1.0.1" persisted_at="1755708111.40">
|
||||||
|
<Overwrites/>
|
||||||
|
<Instances/>
|
||||||
|
<StaticKeys/>
|
||||||
|
</OpenVPN>
|
||||||
|
<captiveportal version="1.0.4" persisted_at="1755708111.41">
|
||||||
|
<zones/>
|
||||||
|
<templates/>
|
||||||
|
</captiveportal>
|
||||||
|
<cron version="1.0.4" persisted_at="1755708111.43">
|
||||||
|
<jobs/>
|
||||||
|
</cron>
|
||||||
|
<DHCRelay version="1.0.1" persisted_at="1755708111.43"/>
|
||||||
|
<Firewall>
|
||||||
|
<Lvtemplate version="0.0.1" persisted_at="1755708111.45">
|
||||||
|
<templates/>
|
||||||
|
</Lvtemplate>
|
||||||
|
<Alias version="1.0.1" persisted_at="1755708111.65">
|
||||||
|
<geoip>
|
||||||
|
<url/>
|
||||||
|
</geoip>
|
||||||
|
<aliases/>
|
||||||
|
</Alias>
|
||||||
|
<Category version="1.0.0" persisted_at="1755708111.65">
|
||||||
|
<categories/>
|
||||||
|
</Category>
|
||||||
|
<Filter version="1.0.4" persisted_at="1755708111.70">
|
||||||
|
<rules/>
|
||||||
|
<snatrules/>
|
||||||
|
<npt/>
|
||||||
|
<onetoone/>
|
||||||
|
</Filter>
|
||||||
|
</Firewall>
|
||||||
|
<Netflow version="1.0.1" persisted_at="1755708111.45">
|
||||||
|
<capture>
|
||||||
|
<interfaces/>
|
||||||
|
<egress_only/>
|
||||||
|
<version>v9</version>
|
||||||
|
<targets/>
|
||||||
|
</capture>
|
||||||
|
<collect>
|
||||||
|
<enable>0</enable>
|
||||||
|
</collect>
|
||||||
|
<activeTimeout>1800</activeTimeout>
|
||||||
|
<inactiveTimeout>15</inactiveTimeout>
|
||||||
|
</Netflow>
|
||||||
|
<IDS version="1.1.0" persisted_at="1755708111.90">
|
||||||
|
<rules/>
|
||||||
|
<policies/>
|
||||||
|
<userDefinedRules/>
|
||||||
|
<files/>
|
||||||
|
<fileTags/>
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<ips>0</ips>
|
||||||
|
<promisc>0</promisc>
|
||||||
|
<interfaces>wan</interfaces>
|
||||||
|
<homenet>192.168.0.0/16,10.0.0.0/8,172.16.0.0/12</homenet>
|
||||||
|
<defaultPacketSize/>
|
||||||
|
<UpdateCron/>
|
||||||
|
<AlertLogrotate>W0D23</AlertLogrotate>
|
||||||
|
<AlertSaveLogs>4</AlertSaveLogs>
|
||||||
|
<MPMAlgo/>
|
||||||
|
<detect>
|
||||||
|
<Profile/>
|
||||||
|
<toclient_groups/>
|
||||||
|
<toserver_groups/>
|
||||||
|
</detect>
|
||||||
|
<syslog>0</syslog>
|
||||||
|
<syslog_eve>0</syslog_eve>
|
||||||
|
<LogPayload>0</LogPayload>
|
||||||
|
<verbosity/>
|
||||||
|
<eveLog>
|
||||||
|
<http>
|
||||||
|
<enable>0</enable>
|
||||||
|
<extended>0</extended>
|
||||||
|
<dumpAllHeaders/>
|
||||||
|
</http>
|
||||||
|
<tls>
|
||||||
|
<enable>0</enable>
|
||||||
|
<extended>0</extended>
|
||||||
|
<sessionResumption>0</sessionResumption>
|
||||||
|
<custom/>
|
||||||
|
</tls>
|
||||||
|
</eveLog>
|
||||||
|
</general>
|
||||||
|
</IDS>
|
||||||
|
<Interfaces>
|
||||||
|
<loopbacks version="1.0.0" persisted_at="1755708111.95"/>
|
||||||
|
<neighbors version="1.0.0" persisted_at="1755708111.96"/>
|
||||||
|
<vxlans version="1.0.2" persisted_at="1755708111.99"/>
|
||||||
|
</Interfaces>
|
||||||
|
<Kea>
|
||||||
|
<ctrl_agent version="0.0.1" persisted_at="1755708111.99">
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<http_host>127.0.0.1</http_host>
|
||||||
|
<http_port>8000</http_port>
|
||||||
|
</general>
|
||||||
|
</ctrl_agent>
|
||||||
|
<dhcp4 version="1.0.4" persisted_at="1755708112.00">
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<manual_config>0</manual_config>
|
||||||
|
<interfaces/>
|
||||||
|
<valid_lifetime>4000</valid_lifetime>
|
||||||
|
<fwrules>1</fwrules>
|
||||||
|
<dhcp_socket_type>raw</dhcp_socket_type>
|
||||||
|
</general>
|
||||||
|
<ha>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<this_server_name/>
|
||||||
|
<max_unacked_clients>2</max_unacked_clients>
|
||||||
|
</ha>
|
||||||
|
<subnets/>
|
||||||
|
<reservations/>
|
||||||
|
<ha_peers/>
|
||||||
|
</dhcp4>
|
||||||
|
<dhcp6 version="1.0.0" persisted_at="1755708112.00">
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<manual_config>0</manual_config>
|
||||||
|
<interfaces/>
|
||||||
|
<valid_lifetime>4000</valid_lifetime>
|
||||||
|
<fwrules>1</fwrules>
|
||||||
|
</general>
|
||||||
|
<ha>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<this_server_name/>
|
||||||
|
<max_unacked_clients>2</max_unacked_clients>
|
||||||
|
</ha>
|
||||||
|
<subnets/>
|
||||||
|
<reservations/>
|
||||||
|
<pd_pools/>
|
||||||
|
<ha_peers/>
|
||||||
|
</dhcp6>
|
||||||
|
</Kea>
|
||||||
|
<monit version="1.0.13" persisted_at="1755708112.02">
|
||||||
|
<general>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<interval>120</interval>
|
||||||
|
<startdelay>120</startdelay>
|
||||||
|
<mailserver>127.0.0.1</mailserver>
|
||||||
|
<port>25</port>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<ssl>0</ssl>
|
||||||
|
<sslversion>auto</sslversion>
|
||||||
|
<sslverify>1</sslverify>
|
||||||
|
<logfile/>
|
||||||
|
<statefile/>
|
||||||
|
<eventqueuePath/>
|
||||||
|
<eventqueueSlots/>
|
||||||
|
<httpdEnabled>0</httpdEnabled>
|
||||||
|
<httpdUsername>root</httpdUsername>
|
||||||
|
<httpdPassword/>
|
||||||
|
<httpdPort>2812</httpdPort>
|
||||||
|
<httpdAllow/>
|
||||||
|
<mmonitUrl/>
|
||||||
|
<mmonitTimeout>5</mmonitTimeout>
|
||||||
|
<mmonitRegisterCredentials>1</mmonitRegisterCredentials>
|
||||||
|
</general>
|
||||||
|
<alert uuid="76cd5195-a487-4f4f-8ef5-4f9815bf19e5">
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<recipient>root@localhost.local</recipient>
|
||||||
|
<noton>0</noton>
|
||||||
|
<events/>
|
||||||
|
<format/>
|
||||||
|
<reminder/>
|
||||||
|
<description/>
|
||||||
|
</alert>
|
||||||
|
<service uuid="11610907-f700-4f0a-9926-c25a47709493">
|
||||||
|
<enabled>1</enabled>
|
||||||
|
<name>$HOST</name>
|
||||||
|
<description/>
|
||||||
|
<type>system</type>
|
||||||
|
<pidfile/>
|
||||||
|
<match/>
|
||||||
|
<path/>
|
||||||
|
<timeout>300</timeout>
|
||||||
|
<starttimeout>30</starttimeout>
|
||||||
|
<address/>
|
||||||
|
<interface/>
|
||||||
|
<start/>
|
||||||
|
<stop/>
|
||||||
|
<tests>02014be3-fc31-4af3-a0d5-061eaa67d28a,ebfd0d97-ae21-45d5-8b42-5220c75ce46f,d37f25f0-89e3-44b6-8ad2-280ac83a8904,37afd0d9-990c-4f03-a817-45691461e3d0</tests>
|
||||||
|
<depends/>
|
||||||
|
<polltime/>
|
||||||
|
</service>
|
||||||
|
<service uuid="dcc7e42f-a878-49a3-8b90-67faf21d67bd">
|
||||||
|
<enabled>1</enabled>
|
||||||
|
<name>RootFs</name>
|
||||||
|
<description/>
|
||||||
|
<type>filesystem</type>
|
||||||
|
<pidfile/>
|
||||||
|
<match/>
|
||||||
|
<path>/</path>
|
||||||
|
<timeout>300</timeout>
|
||||||
|
<starttimeout>30</starttimeout>
|
||||||
|
<address/>
|
||||||
|
<interface/>
|
||||||
|
<start/>
|
||||||
|
<stop/>
|
||||||
|
<tests>b44b859c-bc72-4c2e-82c9-4f56d84a5497</tests>
|
||||||
|
<depends/>
|
||||||
|
<polltime/>
|
||||||
|
</service>
|
||||||
|
<service uuid="5ca544d4-846a-4f61-9d6f-c191eafcd9fb">
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<name>carp_status_change</name>
|
||||||
|
<description/>
|
||||||
|
<type>custom</type>
|
||||||
|
<pidfile/>
|
||||||
|
<match/>
|
||||||
|
<path>/usr/local/opnsense/scripts/OPNsense/Monit/carp_status</path>
|
||||||
|
<timeout>300</timeout>
|
||||||
|
<starttimeout>30</starttimeout>
|
||||||
|
<address/>
|
||||||
|
<interface/>
|
||||||
|
<start/>
|
||||||
|
<stop/>
|
||||||
|
<tests>0909801b-cd11-41c8-afeb-369396247308</tests>
|
||||||
|
<depends/>
|
||||||
|
<polltime/>
|
||||||
|
</service>
|
||||||
|
<service uuid="6e16e26e-e732-4b9b-ac92-2086b84f3158">
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<name>gateway_alert</name>
|
||||||
|
<description/>
|
||||||
|
<type>custom</type>
|
||||||
|
<pidfile/>
|
||||||
|
<match/>
|
||||||
|
<path>/usr/local/opnsense/scripts/OPNsense/Monit/gateway_alert</path>
|
||||||
|
<timeout>300</timeout>
|
||||||
|
<starttimeout>30</starttimeout>
|
||||||
|
<address/>
|
||||||
|
<interface/>
|
||||||
|
<start/>
|
||||||
|
<stop/>
|
||||||
|
<tests>56e67d76-cef6-4167-a51e-2c69a921ebc9</tests>
|
||||||
|
<depends/>
|
||||||
|
<polltime/>
|
||||||
|
</service>
|
||||||
|
<test uuid="b7671673-5cf1-4123-a58c-37f57a8e9d59">
|
||||||
|
<name>Ping</name>
|
||||||
|
<type>NetworkPing</type>
|
||||||
|
<condition>failed ping</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="30cf3664-5c6f-4ac5-a52a-36023270c6fb">
|
||||||
|
<name>NetworkLink</name>
|
||||||
|
<type>NetworkInterface</type>
|
||||||
|
<condition>failed link</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="a7c0836a-b102-4f37-a73b-2a50903ffcc8">
|
||||||
|
<name>NetworkSaturation</name>
|
||||||
|
<type>NetworkInterface</type>
|
||||||
|
<condition>saturation is greater than 75%</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="02014be3-fc31-4af3-a0d5-061eaa67d28a">
|
||||||
|
<name>MemoryUsage</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>memory usage is greater than 75%</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="ebfd0d97-ae21-45d5-8b42-5220c75ce46f">
|
||||||
|
<name>CPUUsage</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>cpu usage is greater than 75%</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="d37f25f0-89e3-44b6-8ad2-280ac83a8904">
|
||||||
|
<name>LoadAvg1</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>loadavg (1min) is greater than 4</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="37afd0d9-990c-4f03-a817-45691461e3d0">
|
||||||
|
<name>LoadAvg5</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>loadavg (5min) is greater than 3</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="608d2888-9df5-486d-bbfb-bf17fad75a7e">
|
||||||
|
<name>LoadAvg15</name>
|
||||||
|
<type>SystemResource</type>
|
||||||
|
<condition>loadavg (15min) is greater than 2</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="b44b859c-bc72-4c2e-82c9-4f56d84a5497">
|
||||||
|
<name>SpaceUsage</name>
|
||||||
|
<type>SpaceUsage</type>
|
||||||
|
<condition>space usage is greater than 75%</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="0909801b-cd11-41c8-afeb-369396247308">
|
||||||
|
<name>ChangedStatus</name>
|
||||||
|
<type>ProgramStatus</type>
|
||||||
|
<condition>changed status</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
<test uuid="56e67d76-cef6-4167-a51e-2c69a921ebc9">
|
||||||
|
<name>NonZeroStatus</name>
|
||||||
|
<type>ProgramStatus</type>
|
||||||
|
<condition>status != 0</condition>
|
||||||
|
<action>alert</action>
|
||||||
|
<path/>
|
||||||
|
</test>
|
||||||
|
</monit>
|
||||||
|
<Gateways version="1.0.0" persisted_at="1755721633.53"/>
|
||||||
|
<Syslog version="1.0.2" persisted_at="1755708112.05">
|
||||||
|
<general>
|
||||||
|
<enabled>1</enabled>
|
||||||
|
<loglocal>1</loglocal>
|
||||||
|
<maxpreserve>31</maxpreserve>
|
||||||
|
<maxfilesize/>
|
||||||
|
</general>
|
||||||
|
<destinations/>
|
||||||
|
</Syslog>
|
||||||
|
<TrafficShaper version="1.0.3" persisted_at="1755708112.06">
|
||||||
|
<pipes/>
|
||||||
|
<queues/>
|
||||||
|
<rules/>
|
||||||
|
</TrafficShaper>
|
||||||
|
<trust>
|
||||||
|
<general version="1.0.1" persisted_at="1755708112.22">
|
||||||
|
<store_intermediate_certs>0</store_intermediate_certs>
|
||||||
|
<install_crls>0</install_crls>
|
||||||
|
<fetch_crls>0</fetch_crls>
|
||||||
|
<enable_legacy_sect>1</enable_legacy_sect>
|
||||||
|
<enable_config_constraints>0</enable_config_constraints>
|
||||||
|
<CipherString/>
|
||||||
|
<Ciphersuites/>
|
||||||
|
<SignatureAlgorithms/>
|
||||||
|
<groups/>
|
||||||
|
<MinProtocol/>
|
||||||
|
<MinProtocol_DTLS/>
|
||||||
|
</general>
|
||||||
|
</trust>
|
||||||
|
<unboundplus version="1.0.12" persisted_at="1755708112.29">
|
||||||
|
<general>
|
||||||
|
<enabled>1</enabled>
|
||||||
|
<port>53</port>
|
||||||
|
<stats>0</stats>
|
||||||
|
<active_interface/>
|
||||||
|
<dnssec>0</dnssec>
|
||||||
|
<dns64>0</dns64>
|
||||||
|
<dns64prefix/>
|
||||||
|
<noarecords>0</noarecords>
|
||||||
|
<regdhcp>0</regdhcp>
|
||||||
|
<regdhcpdomain/>
|
||||||
|
<regdhcpstatic>0</regdhcpstatic>
|
||||||
|
<noreglladdr6>0</noreglladdr6>
|
||||||
|
<noregrecords>0</noregrecords>
|
||||||
|
<txtsupport>0</txtsupport>
|
||||||
|
<cacheflush>0</cacheflush>
|
||||||
|
<local_zone_type>transparent</local_zone_type>
|
||||||
|
<outgoing_interface/>
|
||||||
|
<enable_wpad>0</enable_wpad>
|
||||||
|
</general>
|
||||||
|
<advanced>
|
||||||
|
<hideidentity>0</hideidentity>
|
||||||
|
<hideversion>0</hideversion>
|
||||||
|
<prefetch>0</prefetch>
|
||||||
|
<prefetchkey>0</prefetchkey>
|
||||||
|
<dnssecstripped>0</dnssecstripped>
|
||||||
|
<aggressivensec>1</aggressivensec>
|
||||||
|
<serveexpired>0</serveexpired>
|
||||||
|
<serveexpiredreplyttl/>
|
||||||
|
<serveexpiredttl/>
|
||||||
|
<serveexpiredttlreset>0</serveexpiredttlreset>
|
||||||
|
<serveexpiredclienttimeout/>
|
||||||
|
<qnameminstrict>0</qnameminstrict>
|
||||||
|
<extendedstatistics>0</extendedstatistics>
|
||||||
|
<logqueries>0</logqueries>
|
||||||
|
<logreplies>0</logreplies>
|
||||||
|
<logtagqueryreply>0</logtagqueryreply>
|
||||||
|
<logservfail>0</logservfail>
|
||||||
|
<loglocalactions>0</loglocalactions>
|
||||||
|
<logverbosity>1</logverbosity>
|
||||||
|
<valloglevel>0</valloglevel>
|
||||||
|
<privatedomain/>
|
||||||
|
<privateaddress>0.0.0.0/8,10.0.0.0/8,100.64.0.0/10,169.254.0.0/16,172.16.0.0/12,192.0.2.0/24,192.168.0.0/16,198.18.0.0/15,198.51.100.0/24,203.0.113.0/24,233.252.0.0/24,::1/128,2001:db8::/32,fc00::/8,fd00::/8,fe80::/10</privateaddress>
|
||||||
|
<insecuredomain/>
|
||||||
|
<msgcachesize/>
|
||||||
|
<rrsetcachesize/>
|
||||||
|
<outgoingnumtcp/>
|
||||||
|
<incomingnumtcp/>
|
||||||
|
<numqueriesperthread/>
|
||||||
|
<outgoingrange/>
|
||||||
|
<jostletimeout/>
|
||||||
|
<discardtimeout/>
|
||||||
|
<cachemaxttl/>
|
||||||
|
<cachemaxnegativettl/>
|
||||||
|
<cacheminttl/>
|
||||||
|
<infrahostttl/>
|
||||||
|
<infrakeepprobing>0</infrakeepprobing>
|
||||||
|
<infracachenumhosts/>
|
||||||
|
<unwantedreplythreshold/>
|
||||||
|
</advanced>
|
||||||
|
<acls>
|
||||||
|
<default_action>allow</default_action>
|
||||||
|
</acls>
|
||||||
|
<dnsbl>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
<safesearch>0</safesearch>
|
||||||
|
<type/>
|
||||||
|
<lists/>
|
||||||
|
<whitelists/>
|
||||||
|
<blocklists/>
|
||||||
|
<wildcards/>
|
||||||
|
<address/>
|
||||||
|
<nxdomain>0</nxdomain>
|
||||||
|
</dnsbl>
|
||||||
|
<forwarding>
|
||||||
|
<enabled>0</enabled>
|
||||||
|
</forwarding>
|
||||||
|
<dots/>
|
||||||
|
<hosts/>
|
||||||
|
<aliases/>
|
||||||
|
</unboundplus>
|
||||||
|
</OPNsense>
|
||||||
|
<hasync version="1.0.2" persisted_at="1755708111.35">
|
||||||
|
<disablepreempt>0</disablepreempt>
|
||||||
|
<disconnectppps>0</disconnectppps>
|
||||||
|
<pfsyncinterface/>
|
||||||
|
<pfsyncpeerip/>
|
||||||
|
<pfsyncversion>1400</pfsyncversion>
|
||||||
|
<synchronizetoip/>
|
||||||
|
<verifypeer>0</verifypeer>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<syncitems/>
|
||||||
|
</hasync>
|
||||||
|
<openvpn/>
|
||||||
|
<ifgroups version="1.0.0" persisted_at="1755708111.71"/>
|
||||||
|
<bridges version="1.0.0" persisted_at="1755708111.91">
|
||||||
|
<bridged/>
|
||||||
|
</bridges>
|
||||||
|
<gifs version="1.0.0" persisted_at="1755708111.92">
|
||||||
|
<gif/>
|
||||||
|
</gifs>
|
||||||
|
<gres version="1.0.0" persisted_at="1755708111.93">
|
||||||
|
<gre/>
|
||||||
|
</gres>
|
||||||
|
<laggs version="1.0.0" persisted_at="1755708111.95">
|
||||||
|
<lagg/>
|
||||||
|
</laggs>
|
||||||
|
<virtualip version="1.0.1" persisted_at="1755708111.96">
|
||||||
|
<vip/>
|
||||||
|
</virtualip>
|
||||||
|
<vlans version="1.0.0" persisted_at="1755708111.98">
|
||||||
|
<vlan/>
|
||||||
|
</vlans>
|
||||||
|
<staticroutes version="1.0.0" persisted_at="1755708112.03"/>
|
||||||
|
<ppps>
|
||||||
|
<ppp/>
|
||||||
|
</ppps>
|
||||||
|
<wireless>
|
||||||
|
<clone/>
|
||||||
|
</wireless>
|
||||||
|
<ca/>
|
||||||
|
<dhcpd/>
|
||||||
|
<dhcpdv6/>
|
||||||
|
<cert uuid="d60972af-642c-411f-abb6-43e0d680fefd">
|
||||||
|
<refid>68a5faf1685db</refid>
|
||||||
|
<descr>Web GUI TLS certificate</descr>
|
||||||
|
<caref/>
|
||||||
|
<crt>LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhFakNDQlBxZ0F3SUJBZ0lVQlpQYjUwMXNaM3hhTTZzSDVUM1ZNRG9mcnlNd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZWXhHakFZQmdOVkJBTU1FVTlRVG5ObGJuTmxMbWx1ZEdWeWJtRnNNUXN3Q1FZRFZRUUdFd0pPVERFVgpNQk1HQTFVRUNBd01XblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyCkJnTlZCQW9NSkU5UVRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWlRBZUZ3MHkKTlRBNE1qQXhOalF5TWpaYUZ3MHlOakE1TWpFeE5qUXlNalphTUlHR01Sb3dHQVlEVlFRRERCRlBVRTV6Wlc1egpaUzVwYm5SbGNtNWhiREVMTUFrR0ExVUVCaE1DVGt3eEZUQVRCZ05WQkFnTURGcDFhV1F0U0c5c2JHRnVaREVWCk1CTUdBMVVFQnd3TVRXbGtaR1ZzYUdGeWJtbHpNUzB3S3dZRFZRUUtEQ1JQVUU1elpXNXpaU0J6Wld4bUxYTnAKWjI1bFpDQjNaV0lnWTJWeWRHbG1hV05oZEdVd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJSwpBb0lDQVFEQVozZk1lakdOckZYVFhZd24vTUp5YXBYMDdVOTVWZ0JERzZmWU1wZkZEU1NXeFRValRLRlNvR3JRCkpDb0ZyQ0NRQ3BsWnlua0ZjVFZvWVAraGszcndWWmxHZVFyL0RyR2ZiM1lPc2RGbEtublo5YzRTOGVrSkc2WTIKYWI0eFJTcnBja0hoTWQ4MHNENUFRdks1Skc2MS9UMEhNRXVMcGlraUF3MFpCempWbjlVUUpSRTJiS29kOW9IdgpEbG5DVGNTV1FUNWYrV3A0Sll0anVBVHBZMUlRVW4wbkxuWDBHUC9JRGtsWjFrdEZOczRPOGcrQmRVWFU0MUdvCjNGTFpCc1hQVm90WFVrRVl2R0ZldjJRMlBwSnNib25aWEpoR255amREUlZkZFZGOGhacGJua0wwU2xJTVFNeFQKSTRXK051ZmUvUTZGRDdmZnFRa0toemZ3SlJ2N0dGM2RTRlEwWldPUGNTZVZXY3lWTlVVMTMvcnBteUpvNXZhWQpYR000THcxb1d2c1FjUWxaUllnSkxhSWMzM0dnMGQySHhvZTIvdytIeFRXOEw4ZldqbzgxK250YWJXTlZhV0IwCnd6TXNFNGRBOWtxR2dmcWZjbm96ckovamJtNEFBTTB6QTlVZFh0SUJtRGdpeFNkVzB4eHNQNlZWRTdMdnlURTgKWnBJTjRoL1FCYURyc2hhRXJ6TXhUd01IZXJ1RlV4bFpxZEdSa3ErQXRJU1VwRE05VXB0YWZZMk5ydzgxVDFhSwoycFduVFlFQktCUnVwdk00TzFHNXN5NU5GZm13NFRTc0pqRUhtMFEvVTZ4ZU45bVg0OFhIYUZFNnhvQTJEZEMrCjJHS2lKWFlrYi9nZm13cmp1Y3NGWGpBS2tDNWF6ZXFqaERXeGxDbmJNS1YwSTQxOWp3SURBUUFCbzRJQmREQ0MKQVhBd0NRWURWUjBUQkFJd0FEQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0JrQXdOQVlKWUlaSUFZYjRRZ0VOQkNjVwpKVTlRVG5ObGJuTmxJRWRsYm1WeVlYUmxaQ0JUWlhKMlpYSWdRMlZ5ZEdsbWFXTmhkR1V3SFFZRFZSME9CQllFCkZMK2YzU0tCM0tMSi9nWStBUTJIZDBhTzVPRU1NSUd3QmdOVkhTTUVnYWd3Z2FXaGdZeWtnWWt3Z1lZeEdqQVkKQmdOVkJBTU1FVTlRVG5ObGJuTmxMbWx1ZEdWeWJtRnNNUXN3Q1FZRFZRUUdFd0pPVERFVk1CTUdBMVVFQ0F3TQpXblZwWkMxSWIyeHNZVzVrTVJVd0V3WURWUVFIREF4TmFXUmtaV3hvWVhKdWFYTXhMVEFyQmdOVkJBb01KRTlRClRuTmxibk5sSUhObGJHWXRjMmxuYm1Wa0lIZGxZaUJqWlhKMGFXWnBZMkYwWllJVUJaUGI1MDFzWjN4YU02c0gKNVQzVk1Eb2ZyeU13SFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQ0FJQ01Bc0dBMVVkRHdRRQpBd0lGb0RBY0JnTlZIUkVFRlRBVGdoRlBVRTV6Wlc1elpTNXBiblJsY201aGJEQU5CZ2txaGtpRzl3MEJBUXNGCkFBT0NBZ0VBY3F3VEN0RmVwWDlFOEFMYXRaWEE4dkN2b1YwZkxuaElPM0lWT2tZNEhYMTRRRU9NUGo4KzVXMXoKc3hyUGNscEJQVU5tbXJRb0hWUHBuWTRFM2hFanlYY1JWSzZtTEFrSkpRUDJPOEE2NFFpL3FNSkhCYUlEU0MzKwpqMHdkMGYyODRvcEppQ0F2UnF0SGh1bDd3akd4QzNZUXRxWTFMODNWUHBOWGRjOVVsZExTUGZ6WWluMlBPekMrClFDWU9qN3VQUDlCVGExTURudkdPdkdrOHdQeUJGaFZQWVFBWjYwb1ZaS2psOUI2R1piRzF1SG1ON3p3a3k0eEIKNk1RSlF3cHFscDdXQ09QSHJlZTFiVGZaMkJMZFQrZzJHakVMT0xNRGJMTHAzNUw0blBDUmNGRkJZNEszMHBncQpVWjdncEtNTmhuR3huQ29lR3dHUk54ZHFoZnNlT3FqaURVM0hBVDEya3FReU1vOEZNT1g1bG9EaVpXSGZTS0JrClVRaG5Tc1BTMG0vZ2dSRVgwNVQzYWM2NUxNOVVXMEs2MXppZUs5WFhTcjNXWlQ1TkhNV2JmU0VScUR4SGRtZ0YKeGt3YXkxZWpCZTFoZzdGMGpicTVDMGo1ZXB5ZDNOc1BTVUtDY2FDNi9aWTNkUHVYWVZZL0J2dnFsZHZJSzRBeAo0R1BLQ0xzaStGRjliSXZRWG4zbTV2KzJoQWF2WlpxcmJOTFUzVFQ0aDd2QllBOVRNcXpwd3lEaW5BR3RhaEE3CnhDSW5IU01kZXpQcnNkZDJrTW5TckhPdWtGeGdKb2lNZ3krVlJmdTdvZk9NMjhYQ1FySWF6djBFYmFhTU1ZMTcKRzlXOFd3SXZUb2lYY1ZWNTk3K1NUNHRsSTVIM3lDZFBtSk1kRm5GcDg1K2JzbW42MFQwPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==</crt>
|
||||||
|
<csr/>
|
||||||
|
<prv>LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRREFaM2ZNZWpHTnJGWFQKWFl3bi9NSnlhcFgwN1U5NVZnQkRHNmZZTXBmRkRTU1d4VFVqVEtGU29HclFKQ29GckNDUUNwbFp5bmtGY1RWbwpZUCtoazNyd1ZabEdlUXIvRHJHZmIzWU9zZEZsS25uWjljNFM4ZWtKRzZZMmFiNHhSU3JwY2tIaE1kODBzRDVBClF2SzVKRzYxL1QwSE1FdUxwaWtpQXcwWkJ6alZuOVVRSlJFMmJLb2Q5b0h2RGxuQ1RjU1dRVDVmK1dwNEpZdGoKdUFUcFkxSVFVbjBuTG5YMEdQL0lEa2xaMWt0Rk5zNE84ZytCZFVYVTQxR28zRkxaQnNYUFZvdFhVa0VZdkdGZQp2MlEyUHBKc2JvblpYSmhHbnlqZERSVmRkVkY4aFpwYm5rTDBTbElNUU14VEk0VytOdWZlL1E2RkQ3ZmZxUWtLCmh6ZndKUnY3R0YzZFNGUTBaV09QY1NlVldjeVZOVVUxMy9ycG15Sm81dmFZWEdNNEx3MW9XdnNRY1FsWlJZZ0oKTGFJYzMzR2cwZDJIeG9lMi93K0h4VFc4TDhmV2pvODErbnRhYldOVmFXQjB3ek1zRTRkQTlrcUdnZnFmY25vegpySi9qYm00QUFNMHpBOVVkWHRJQm1EZ2l4U2RXMHh4c1A2VlZFN0x2eVRFOFpwSU40aC9RQmFEcnNoYUVyek14ClR3TUhlcnVGVXhsWnFkR1JrcStBdElTVXBETTlVcHRhZlkyTnJ3ODFUMWFLMnBXblRZRUJLQlJ1cHZNNE8xRzUKc3k1TkZmbXc0VFNzSmpFSG0wUS9VNnhlTjltWDQ4WEhhRkU2eG9BMkRkQysyR0tpSlhZa2IvZ2Ztd3JqdWNzRgpYakFLa0M1YXplcWpoRFd4bENuYk1LVjBJNDE5andJREFRQUJBb0lDQUNVVkRBTE4zalVXN09leTFPdDBES251Cm52NDRxcU9SRHJYZ1k2WUlnalhKUmE4RlRTdURmbWdsWU5EQzE1S0dUVFJWeHA2R3BuS0ZFaTBPM05Yd1RiWjYKV1BNN0t3SmplNXBsNmhRRTgzMlRCUzhiNzk2NDN4Z1JTeVNibHJ0NlFENEQ5bXlIcHlSSmY0WDFJVURMbzhiUgppdXlTdzB5ajlyT0djUVRNM29oVnFNUFcwUTF6UGdwT1UxYVdwbmdMY3dNZWlmNEhYUnpRNTUrTmZPemFacHVjCnVtQk4xUS81clhxS1BscmhNVnFpcUc0Nit3QVJjU2NKdE5oZHRsMzdyeTQ1Mk5zNGtERkxSVnowZUVUNEpGSmYKcjVQRUE5bEFuYWlVOS9RdVEwbERtcTlqdmpYRkNURXhYKy82SGJHK2RVd0Y2OEY3ZVEzVFQxbkhHK0hkMVJsbgpOWm1JM0p2d0Z1cG9JeU9VdlpJb3VGVmo2ak8ra0JLejkza1BHWmdMbnNmUUw5WDhRbTU3cjh4K3Z1eFNudGI1CjV4WVBxRkdrOWQrbDUwbTlQakdkekxGT3UwYnJ5TmQ4MFVMS2tuUlFtUVpvTngxck5GTUxpSjNlZENWUS9lclUKT1BDQ0Z0WEJMemJGTjR2ZzVWRjZMUkhvZGxqcEgxRzJOSXNoSzJhc1FuWS9RWDFpUUNLSk1tWERSUndMTWVsNQp3MUF4T2FqYVkzbWx2ZlRVd2xqdkE3a0tFUDBvZzRPeXZldDA2WTVRWk1EQXc1V00yT0pZVDVxcmFlYjZDbTdMCjlNckk4bG50TGp3WFVSZG4yU3U2RCtCWXNpcC9KK3BvOFNqYlJBaGJIc0lJbkJ1QWJnbGxqdTB2QXRXZmFkQlQKOTg4YnUwK3VUb1Q2T1Jkbk84Y1JBb0lCQVFEcStWYkVUQWVpSHN6K29jZnFWV3VwVHJrc2FNNm1wUUMwb0tqZApwb1FzWGVuTmNiNThHQ3FhWHkvdTJHWmNKUnR1QXRHamEyUVpEUUFUSjQyVTFmaTFhWm90Y053eXhPdmlud1NjCmVLZyt0ZGcwdW9LeGs2aXJKRFptaDBIK3Ewblg2RFJYK25RNDVmWVNmRkRFK0ZLd1lac0dQMkhYV3dKaVZ6OE0KU2NkL2pETTFRTWV2OXIzZWx1dS9DWFlvZ1N0N00wMklyczVoNjRuNjFmdVZjNHI4YmUwdFkrUTVsUnlwWk9NVwpkQ2VkWGFOV3RaNjF2bEFxamNiWkpkdXFBUjJjNzAyR3NML201TXA4Zmd3YmY2aG51TXJLaVlpQjlZalZxalc2CmYyUW1PclZtMUk0MFJBMC9OaFBTR2NXejBkNXZrdXY0VHUra2JFbERZTCsxaHY1M0FvSUJBUURSbnZaTmJaa1UKTXpmUTRLWEdML3dLUXJEbjNvL0RENWVBR1ZDTGcwTUkyYlAxYWpubHNVTjE4NCs1UWF6cVVOaWlZT3laODczeQpQYkw0cTBOZWFDYXdxby9WbjJMSkVIUFVTTVhUWjB4ckxTa1hPUjFuMDUwT2tDWXhVbFpOUXFvZU1xcHJGNXZLCm1NNlJxalN4NS8ydU9IUlR1SDRVV2RETEpwTDVUN2RpUCtXcFUwSDlSUWhrNDdkQUJaUjZEZjNxaDJEYmVxUWoKdWcxY0hWUVNqaldhUGpVZGlLR2dHemdvdlE2UkdNZDA1UVUzdkRMdzBCSkNPQ25XV2x0VXkvMW1jMUpPUHR2ZQp4UGltV2tRNmlkRHZ4RGZFRGg5U05zY1FPMnBTVjZxNnhCTWlqVGgvTldGN2NsOU1LYUhJWGxzTmt0RFVXWHZyCmNKRlM4eE1TcDhlcEFvSUJBUUNtWktVTjRxMHhIOUNZckdYT1Nta3Yvc0JnYzJPTFhLTXdSZWp1OVFENkRoTUgKMmZsREZUWHVGV1B6SmlqdUxaVE1CWkVBd1lhanVySUgzbVdETlRhbStMNG1XWnFGRlMvWlRqUk12YUNlcjlVSQpHZDk4OG94cGpQNDlBcUU0UDRIT00vQUZNU1ZtT1dwVTB0VzdkZ0hRUjM0cElXOGV1cUxva3RIaDJNaytTRURuCkFCV29SUGxWaTlncmN2N0tWaFk5YXlvSGxZb3VpMFl0YTZSNXc5VnpSa0REZU01Zi9Iak1kOVhieTZ0VjQ3NU0KSTliYzZvVUliVmVYNUJnMnZnMkRXVzZ6NTZ3dFRHMGJWWU1yWWU0V2JTU2w0bGpaZHM5TVJ2ay9OUUR0bFh0cAo4ekUwVDlCMXA4ekhabHE3S08zMFlyMVpIRVRWVVoxYjZrSTN3UDJuQW9JQkFFZ1VGKzlCMjF4RnpGQ0hucGtLClVPa2FTNGcvVUVHcmI5VzlYcVBLUzllVVBEd0wvY0tNZEh6dmRpRW1neFhESE9xZzExcU1wR2pTYkdMelNPUUMKZmlOTFV0QUswVVgvNFVSQ2pidUdqcEZmNHZ3NFNITTJJWkFyWXVhY3dFNHF1U0pQRzZoZFl0V0VPNnQ4MGtmRwpWTVYrWmdtUHE5TEZtM1R2VzZSY2s5czF5M3V3eEVVWllxeUdYTEduK1lrS25KL3pVd3ZGSFFHbjdRWWFrNWtaCnl6YXhZMFEzZ2hQeXFCbmlBRXRHTVBkeDlKeFltMCtRekdaMnQzUWNkOEV0cjRGMTcvdzF3eGJUdGdoRmk2WngKVXlYTzI3b1BmUmVnL0V3SmtpS2tRSEdlRUZKV0t2SWE0ZDAzMDZyMXVjcVRIMDRJaU1RcnpOK0ZRb002VC9tZgpOWmtDZ2dFQUsrRVJNVVdJZTE3V1k3VDIycy9lOEplN0xxSXlUcU9mSGovaWFUUjhHbXhqcU1HNEdod1RpVXJsCkh0Skhud3BMVGFjVmdYUjV3UmtYcEhRT2JqSUFzeVNBUGxwSzBvZUkyK2kvS0cyQjZ2U0cza0V2b1VZY0RlRk4KdzhHd0oxNDNTd21LQXM4eUtWMmd1RjhmRXNNVitEQzNzVHFlZXJmMy82bFprMUVCVFF0QTZqVHdqK0picXgwVgpaalZJUXBwUE8vc1VHdi9LZVE3MW5ockJpT0lXclJ0dDRTUDJ2aWx2em9DUTQxVjFqZ09wS3VwU3E1Y2J3VDRxCmp1bkJIMkx5VnNQaUc4M0Vha1JSUEhDK0craTk1MFJxckxVRUJOeVdHNGlMNTdUdU9xYVJuSmRnN2ZFb2lVLzMKNld4TjlvR2VRWjV0NjZkdTJEL01WSUZ4ZzJ1cXRBPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=</prv>
|
||||||
|
</cert>
|
||||||
|
<syslog/>
|
||||||
|
</opnsense>
|
2572
opnsense-config/src/tests/data/config-full-ncd0.xml
Normal file
2572
opnsense-config/src/tests/data/config-full-ncd0.xml
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user