feat(opnsense-config): Public API now a bit simpler, added support for latest opnsense version in xml types
This commit is contained in:
@@ -13,21 +13,21 @@ use super::opnsense::{NumberOption, Range, StaticMap};
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct DhcpInterface {
|
||||
pub enable: i32,
|
||||
pub gateway: String,
|
||||
pub domain: String,
|
||||
pub enable: Option<MaybeString>,
|
||||
pub gateway: Option<MaybeString>,
|
||||
pub domain: Option<MaybeString>,
|
||||
#[yaserde(rename = "ddnsdomainalgorithm")]
|
||||
pub ddns_domain_algorithm: String,
|
||||
pub ddns_domain_algorithm: Option<MaybeString>,
|
||||
#[yaserde(rename = "numberoptions")]
|
||||
pub number_options: Vec<NumberOption>,
|
||||
#[yaserde(rename = "range")]
|
||||
pub range: Range,
|
||||
pub winsserver: MaybeString,
|
||||
pub dnsserver: MaybeString,
|
||||
pub ntpserver: MaybeString,
|
||||
pub winsserver: Option<MaybeString>,
|
||||
pub dnsserver: Option<MaybeString>,
|
||||
pub ntpserver: Option<MaybeString>,
|
||||
#[yaserde(rename = "staticmap")]
|
||||
pub staticmaps: Vec<StaticMap>,
|
||||
pub pool: MaybeString,
|
||||
pub pool: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
@@ -40,11 +40,8 @@ pub struct DhcpRange {
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use std::net::Ipv4Addr;
|
||||
|
||||
use crate::xml_utils::to_xml_str;
|
||||
|
||||
use super::*;
|
||||
use pretty_assertions::assert_eq;
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -7,12 +7,17 @@ pub struct Interface {
|
||||
pub internal_dynamic: Option<MaybeString>,
|
||||
#[yaserde(rename = "if")]
|
||||
pub physical_interface_name: String,
|
||||
pub descr: String,
|
||||
pub descr: Option<MaybeString>,
|
||||
pub enable: MaybeString,
|
||||
pub lock: Option<MaybeString>,
|
||||
#[yaserde(rename = "spoofmac")]
|
||||
pub spoof_mac: Option<MaybeString>,
|
||||
pub ipaddr: Option<MaybeString>,
|
||||
pub dhcphostname: Option<MaybeString>,
|
||||
#[yaserde(rename = "alias-address")]
|
||||
pub alias_address: Option<MaybeString>,
|
||||
#[yaserde(rename = "alias-subnet")]
|
||||
pub alias_subnet: Option<MaybeString>,
|
||||
#[yaserde(rename = "blockpriv")]
|
||||
pub block_priv: Option<MaybeString>,
|
||||
#[yaserde(rename = "blockbogons")]
|
||||
@@ -25,10 +30,28 @@ pub struct Interface {
|
||||
pub ipaddrv6: Option<MaybeString>,
|
||||
pub networks: Option<MaybeString>,
|
||||
pub subnetv6: Option<MaybeString>,
|
||||
pub media: Option<MaybeString>,
|
||||
pub mediaopt: Option<MaybeString>,
|
||||
#[yaserde(rename = "track6-interface")]
|
||||
pub track6_interface: Option<MaybeString>,
|
||||
#[yaserde(rename = "track6-prefix-id")]
|
||||
pub track6_prefix_id: Option<MaybeString>,
|
||||
#[yaserde(rename = "dhcprejectfrom")]
|
||||
pub dhcprejectfrom: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_timeout: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_retry: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_select_timeout: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_reboot: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_backoff_cutoff: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_initial_interval: Option<MaybeString>,
|
||||
pub adv_dhcp_pt_values: Option<MaybeString>,
|
||||
pub adv_dhcp_send_options: Option<MaybeString>,
|
||||
pub adv_dhcp_request_options: Option<MaybeString>,
|
||||
pub adv_dhcp_required_options: Option<MaybeString>,
|
||||
pub adv_dhcp_option_modifiers: Option<MaybeString>,
|
||||
pub adv_dhcp_config_advanced: Option<MaybeString>,
|
||||
pub adv_dhcp_config_file_override: Option<MaybeString>,
|
||||
pub adv_dhcp_config_file_override_path: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -109,6 +132,8 @@ mod test {
|
||||
<descr>LAN</descr>
|
||||
<enable>1</enable>
|
||||
<spoofmac/>
|
||||
<media/>
|
||||
<mediaopt/>
|
||||
<ipaddr>192.168.20.1</ipaddr>
|
||||
<subnet>24</subnet>
|
||||
<ipaddrv6>track6</ipaddrv6>
|
||||
|
||||
@@ -18,7 +18,8 @@ pub struct OPNsense {
|
||||
pub syslog: Syslog,
|
||||
pub nat: Nat,
|
||||
pub filter: Filters,
|
||||
pub load_balancer: LoadBalancer,
|
||||
pub load_balancer: Option<LoadBalancer>,
|
||||
pub rrd: Option<RawXml>,
|
||||
pub ntpd: Ntpd,
|
||||
pub widgets: Widgets,
|
||||
pub revision: Revision,
|
||||
@@ -26,13 +27,13 @@ pub struct OPNsense {
|
||||
pub opnsense: OPNsenseXmlSection,
|
||||
pub staticroutes: StaticRoutes,
|
||||
pub ca: MaybeString,
|
||||
pub gateways: Gateways,
|
||||
pub cert: Cert,
|
||||
pub gateways: Option<Gateways>,
|
||||
pub cert: Vec<Cert>,
|
||||
pub dhcpdv6: DhcpDv6,
|
||||
pub virtualip: VirtualIp,
|
||||
pub openvpn: OpenVpn,
|
||||
pub ppps: Ppps,
|
||||
pub dyndnses: Dyndnses,
|
||||
pub dyndnses: Option<Dyndnses>,
|
||||
pub vlans: Vlans,
|
||||
pub bridges: Bridges,
|
||||
pub gifs: Gifs,
|
||||
@@ -332,7 +333,7 @@ pub struct Snmpd {
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Syslog {
|
||||
pub reverse: Option<MaybeString>,
|
||||
pub preservelogs: i32,
|
||||
pub preservelogs: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
@@ -389,6 +390,16 @@ pub struct Created {
|
||||
pub description: MaybeString,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Filter {
|
||||
#[yaserde(attribute)]
|
||||
version: String,
|
||||
rules: Option<MaybeString>,
|
||||
snatrules: Option<MaybeString>,
|
||||
npt: Option<MaybeString>,
|
||||
onetoone: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
#[yaserde(rename = "OPNsense")]
|
||||
pub struct OPNsenseXmlSection {
|
||||
@@ -404,6 +415,8 @@ pub struct OPNsenseXmlSection {
|
||||
pub ipsec: Option<IPsec>,
|
||||
#[yaserde(rename = "Interfaces")]
|
||||
pub interfaces: Option<ConfigInterfaces>,
|
||||
#[yaserde(rename = "Kea")]
|
||||
pub kea: Option<RawXml>,
|
||||
pub monit: Option<Monit>,
|
||||
#[yaserde(rename = "OpenVPNExport")]
|
||||
pub openvpn_export: Option<OpenVPNExport>,
|
||||
@@ -413,17 +426,19 @@ pub struct OPNsenseXmlSection {
|
||||
#[yaserde(rename = "TrafficShaper")]
|
||||
pub traffic_shaper: Option<RawXml>,
|
||||
pub unboundplus: Option<RawXml>,
|
||||
#[yaserde(rename = "DHCRelay")]
|
||||
pub dhcrelay: Option<RawXml>,
|
||||
pub wireguard: Option<Wireguard>,
|
||||
#[yaserde(rename = "Swanctl")]
|
||||
pub swanctl: Swanctl,
|
||||
#[yaserde(rename = "DynDNS")]
|
||||
pub dyndns: DynDNS,
|
||||
pub dyndns: Option<DynDNS>,
|
||||
#[yaserde(rename = "OpenVPN")]
|
||||
pub openvpn: ConfigOpenVPN,
|
||||
#[yaserde(rename = "Gateways")]
|
||||
pub gateways: ConfigGateways,
|
||||
pub gateways: RawXml,
|
||||
#[yaserde(rename = "HAProxy")]
|
||||
pub haproxy: HAProxy,
|
||||
pub haproxy: Option<HAProxy>,
|
||||
}
|
||||
|
||||
#[derive(Debug, YaSerialize, YaDeserialize, PartialEq)]
|
||||
@@ -457,7 +472,7 @@ pub struct IDSGeneral {
|
||||
#[yaserde(rename = "AlertSaveLogs")]
|
||||
alert_save_logs: u8,
|
||||
#[yaserde(rename = "MPMAlgo")]
|
||||
mpm_algo: String,
|
||||
mpm_algo: MaybeString,
|
||||
detect: Detect,
|
||||
syslog: Option<u8>,
|
||||
syslog_eve: Option<u8>,
|
||||
@@ -469,7 +484,7 @@ pub struct IDSGeneral {
|
||||
#[derive(Debug, YaSerialize, YaDeserialize, PartialEq)]
|
||||
pub struct Detect {
|
||||
#[yaserde(rename = "Profile")]
|
||||
profile: String,
|
||||
profile: MaybeString,
|
||||
toclient_groups: MaybeString,
|
||||
toserver_groups: MaybeString,
|
||||
}
|
||||
@@ -495,6 +510,13 @@ pub struct GeneralIpsec {
|
||||
pub struct ConfigInterfaces {
|
||||
vxlans: Vxlan,
|
||||
loopbacks: Loopback,
|
||||
neighbors: Option<Neighbors>,
|
||||
}
|
||||
|
||||
#[derive(Debug, YaSerialize, YaDeserialize, PartialEq)]
|
||||
pub struct Neighbors {
|
||||
#[yaserde(attribute)]
|
||||
version: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, YaSerialize, YaDeserialize, PartialEq)]
|
||||
@@ -532,7 +554,7 @@ pub struct GeneralMonit {
|
||||
ssl: u8,
|
||||
sslversion: String,
|
||||
sslverify: u8,
|
||||
logfile: String,
|
||||
logfile: MaybeString,
|
||||
statefile: MaybeString,
|
||||
#[yaserde(rename = "eventqueuePath")]
|
||||
event_queue_path: MaybeString,
|
||||
@@ -543,7 +565,7 @@ pub struct GeneralMonit {
|
||||
#[yaserde(rename = "httpdUsername")]
|
||||
httpd_username: String,
|
||||
#[yaserde(rename = "httpdPassword")]
|
||||
httpd_password: String,
|
||||
httpd_password: MaybeString,
|
||||
#[yaserde(rename = "httpdPort")]
|
||||
httpd_port: u16,
|
||||
#[yaserde(rename = "httpdAllow")]
|
||||
@@ -565,7 +587,7 @@ pub struct Alert {
|
||||
noton: u8,
|
||||
events: MaybeString,
|
||||
format: MaybeString,
|
||||
reminder: u32,
|
||||
reminder: MaybeString,
|
||||
description: MaybeString,
|
||||
}
|
||||
|
||||
@@ -725,6 +747,8 @@ pub struct Firewall {
|
||||
pub lv_template: Option<LvTemplate>,
|
||||
#[yaserde(rename = "Category")]
|
||||
pub category: Option<Category>,
|
||||
#[yaserde(rename = "Filter")]
|
||||
pub filter: Option<Filter>,
|
||||
#[yaserde(rename = "Alias")]
|
||||
pub alias: Option<Alias>,
|
||||
}
|
||||
@@ -1020,6 +1044,9 @@ pub struct ConfigSyslog {
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct SyslogGeneral {
|
||||
pub enabled: i32,
|
||||
pub loglocal: Option<MaybeString>,
|
||||
pub maxpreserve: Option<MaybeString>,
|
||||
pub maxfilesize: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
@@ -1293,11 +1320,6 @@ pub struct ConfigOpenVPN {
|
||||
pub StaticKeys: MaybeString,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct ConfigGateways {
|
||||
#[yaserde(attribute)]
|
||||
pub version: String,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
#[yaserde(rename = "HAProxy")]
|
||||
@@ -1835,27 +1857,27 @@ pub struct StaticRoutes {
|
||||
#[yaserde(attribute)]
|
||||
pub version: String,
|
||||
#[yaserde(rename = "route")]
|
||||
pub route: MaybeString, // Assuming it can be empty, use Option
|
||||
pub route: MaybeString,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Ca {} // Empty struct for <ca/>
|
||||
pub struct Ca {}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Gateways {
|
||||
#[yaserde(rename = "gateway_item")]
|
||||
pub gateway_item: MaybeString, // Assuming it can be empty, use Option
|
||||
pub gateway_item: RawXml
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Cert {
|
||||
#[yaserde(rename = "refid")]
|
||||
#[yaserde(attribute)]
|
||||
pub uuid: Option<String>,
|
||||
pub refid: String,
|
||||
#[yaserde(rename = "descr")]
|
||||
pub descr: String,
|
||||
#[yaserde(rename = "crt")]
|
||||
pub crt: String,
|
||||
#[yaserde(rename = "prv")]
|
||||
pub caref: Option<MaybeString>,
|
||||
pub csr: Option<MaybeString>,
|
||||
pub prv: String,
|
||||
}
|
||||
|
||||
@@ -1873,27 +1895,27 @@ pub struct VirtualIp {
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Vip {
|
||||
#[yaserde(attribute)]
|
||||
pub uuid: String,
|
||||
pub interface: String,
|
||||
pub mode: String,
|
||||
pub subnet: String,
|
||||
pub subnet_bits: u32,
|
||||
pub gateway: String,
|
||||
pub noexpand: u32,
|
||||
pub nobind: u32,
|
||||
pub password: MaybeString,
|
||||
pub vhid: MaybeString,
|
||||
pub advbase: u32,
|
||||
pub advskew: u32,
|
||||
pub descr: String,
|
||||
pub uuid: Option<String>,
|
||||
pub interface: Option<MaybeString>,
|
||||
pub mode: Option<MaybeString>,
|
||||
pub subnet: Option<MaybeString>,
|
||||
pub subnet_bits: Option<MaybeString>,
|
||||
pub gateway: Option<MaybeString>,
|
||||
pub noexpand: Option<MaybeString>,
|
||||
pub nobind: Option<MaybeString>,
|
||||
pub password: Option<MaybeString>,
|
||||
pub vhid: Option<MaybeString>,
|
||||
pub advbase: Option<MaybeString>,
|
||||
pub advskew: Option<MaybeString>,
|
||||
pub descr: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct OpenVpn {
|
||||
#[yaserde(rename = "openvpn-server")]
|
||||
pub openvpn_server: MaybeString,
|
||||
pub openvpn_server: Option<MaybeString>,
|
||||
#[yaserde(rename = "openvpn-client")]
|
||||
pub openvpn_client: MaybeString,
|
||||
pub openvpn_client: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
@@ -1903,14 +1925,14 @@ pub struct Ppps {
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Ppp {
|
||||
pub ptpid: u32,
|
||||
pub ptpid: Option<MaybeString>,
|
||||
#[yaserde(rename = "type")]
|
||||
pub r#type: String,
|
||||
pub r#type: Option<MaybeString>,
|
||||
#[yaserde(rename = "if")]
|
||||
pub r#if: String,
|
||||
pub ports: String,
|
||||
pub username: String,
|
||||
pub password: String,
|
||||
pub r#if: Option<MaybeString>,
|
||||
pub ports: Option<MaybeString>,
|
||||
pub username: Option<MaybeString>,
|
||||
pub password: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
@@ -1951,11 +1973,15 @@ pub struct Bridges {
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Gifs {
|
||||
#[yaserde(attribute)]
|
||||
pub version: Option<String>,
|
||||
pub gif: MaybeString,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Gres {
|
||||
#[yaserde(attribute)]
|
||||
pub version: Option<String>,
|
||||
pub gre: MaybeString,
|
||||
}
|
||||
|
||||
@@ -1963,6 +1989,7 @@ pub struct Gres {
|
||||
pub struct Laggs {
|
||||
#[yaserde(attribute)]
|
||||
pub version: String,
|
||||
pub lagg: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
@@ -1972,45 +1999,50 @@ pub struct Wireless {
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
pub struct Hasync {
|
||||
pub synchronizealiases: String,
|
||||
pub synchronizeauthservers: String,
|
||||
pub synchronizecerts: String,
|
||||
pub synchronizedhcpd: String,
|
||||
pub synchronizenat: String,
|
||||
pub synchronizerules: String,
|
||||
pub synchronizeschedules: String,
|
||||
pub synchronizestaticroutes: String,
|
||||
pub synchronizeusers: String,
|
||||
pub synchronizevirtualip: String,
|
||||
pub synchronizewidgets: String,
|
||||
pub synchronizedhcrelay: String,
|
||||
pub synchronizedhcpdv6: String,
|
||||
pub synchronizedhcrelay6: String,
|
||||
pub synchronizentpd: String,
|
||||
pub synchronizesyslog: String,
|
||||
pub synchronizecron: String,
|
||||
pub synchronizesysctl: String,
|
||||
pub synchronizewebgui: String,
|
||||
pub synchronizednsforwarder: String,
|
||||
pub synchronizeshaper: String,
|
||||
pub synchronizecaptiveportal: String,
|
||||
pub synchronizeipsec: String,
|
||||
pub synchronizemonit: String,
|
||||
pub synchronizessh: String,
|
||||
pub synchronizeopenvpn: String,
|
||||
pub synchronizeifgroups: String,
|
||||
pub synchronizecategories: String,
|
||||
pub synchronizelvtemplate: String,
|
||||
pub synchronizesquid: String,
|
||||
pub synchronizesuricata: String,
|
||||
pub synchronizednsresolver: String,
|
||||
pub pfsyncinterface: String,
|
||||
pub synchronizetoip: String,
|
||||
pub username: String,
|
||||
pub password: String,
|
||||
pub pfsyncenabled: String,
|
||||
pub disablepreempt: String,
|
||||
pub disconnectppps: String,
|
||||
#[yaserde(attribute)]
|
||||
pub version: Option<String>,
|
||||
pub synchronizealiases: Option<MaybeString>,
|
||||
pub synchronizeauthservers: Option<MaybeString>,
|
||||
pub synchronizecerts: Option<MaybeString>,
|
||||
pub synchronizedhcpd: Option<MaybeString>,
|
||||
pub synchronizenat: Option<MaybeString>,
|
||||
pub synchronizerules: Option<MaybeString>,
|
||||
pub synchronizeschedules: Option<MaybeString>,
|
||||
pub synchronizestaticroutes: Option<MaybeString>,
|
||||
pub synchronizeusers: Option<MaybeString>,
|
||||
pub synchronizevirtualip: Option<MaybeString>,
|
||||
pub synchronizewidgets: Option<MaybeString>,
|
||||
pub synchronizedhcrelay: Option<MaybeString>,
|
||||
pub synchronizedhcpdv6: Option<MaybeString>,
|
||||
pub synchronizedhcrelay6: Option<MaybeString>,
|
||||
pub synchronizentpd: Option<MaybeString>,
|
||||
pub synchronizesyslog: Option<MaybeString>,
|
||||
pub synchronizecron: Option<MaybeString>,
|
||||
pub synchronizesysctl: Option<MaybeString>,
|
||||
pub synchronizewebgui: Option<MaybeString>,
|
||||
pub synchronizednsforwarder: Option<MaybeString>,
|
||||
pub synchronizeshaper: Option<MaybeString>,
|
||||
pub synchronizecaptiveportal: Option<MaybeString>,
|
||||
pub synchronizeipsec: Option<MaybeString>,
|
||||
pub synchronizemonit: Option<MaybeString>,
|
||||
pub synchronizessh: Option<MaybeString>,
|
||||
pub synchronizeopenvpn: Option<MaybeString>,
|
||||
pub synchronizeifgroups: Option<MaybeString>,
|
||||
pub synchronizecategories: Option<MaybeString>,
|
||||
pub synchronizelvtemplate: Option<MaybeString>,
|
||||
pub synchronizesquid: Option<MaybeString>,
|
||||
pub synchronizesuricata: Option<MaybeString>,
|
||||
pub synchronizednsresolver: Option<MaybeString>,
|
||||
pub pfsyncinterface: Option<MaybeString>,
|
||||
pub synchronizetoip: Option<MaybeString>,
|
||||
pub username: Option<MaybeString>,
|
||||
pub password: Option<MaybeString>,
|
||||
pub pfsyncenabled: Option<MaybeString>,
|
||||
pub disablepreempt: Option<MaybeString>,
|
||||
pub disconnectppps: Option<MaybeString>,
|
||||
pub pfsyncpeerip: Option<MaybeString>,
|
||||
pub pfsyncversion: Option<MaybeString>,
|
||||
pub syncitems: Option<MaybeString>,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
|
||||
|
||||
Reference in New Issue
Block a user