diff --git a/src/definitions/firewall.rs b/src/definitions/firewall.rs index 8633795..4116b18 100644 --- a/src/definitions/firewall.rs +++ b/src/definitions/firewall.rs @@ -1,14 +1,14 @@ use serde::{Deserialize, Serialize}; use validator::Validate; -#[derive(Serialize, Deserialize, Validate, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct Firewall { forward_rules: Vec, destination_nat_rules: Vec, source_nat_rules: Vec, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct ForwardRule { pub name: String, pub services: Vec, @@ -19,7 +19,7 @@ pub struct ForwardRule { pub verdict: Verdict, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct DestinationNATRule { pub name: String, pub services: Vec, @@ -31,7 +31,7 @@ pub struct DestinationNATRule { pub dnat_service: String, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct SourceNATRule { pub name: String, pub services: Vec, @@ -42,7 +42,7 @@ pub struct SourceNATRule { pub snat_type: SNATType, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum Verdict { Accept, @@ -50,7 +50,7 @@ pub enum Verdict { Continue, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum SNATType { SNAT { diff --git a/src/definitions/network.rs b/src/definitions/network.rs index 0a8aa53..498b491 100644 --- a/src/definitions/network.rs +++ b/src/definitions/network.rs @@ -3,13 +3,13 @@ use serde::{Deserialize, Serialize}; use std::{collections::HashMap, net::IpAddr}; use validator::Validate; -#[derive(Serialize, Deserialize, Validate, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct Network { pub interfaces: HashMap, pub static_routes: Vec, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct NetworkInterface { pub alias: String, pub comment: String, @@ -17,7 +17,7 @@ pub struct NetworkInterface { pub addressing_mode: AddressingMode, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum NetworkInterfaceType { Hardware { device: String }, @@ -26,7 +26,7 @@ pub enum NetworkInterfaceType { Bridge { members: Vec }, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum AddressingMode { None, @@ -34,7 +34,7 @@ pub enum AddressingMode { DHCP, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct StaticRoute { pub name: String, pub interface: String, diff --git a/src/definitions/object.rs b/src/definitions/object.rs index 123c581..59f7758 100644 --- a/src/definitions/object.rs +++ b/src/definitions/object.rs @@ -3,19 +3,19 @@ use serde::{Deserialize, Serialize}; use std::{collections::HashMap, net::IpAddr}; use validator::Validate; -#[derive(Serialize, Deserialize, Validate, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct Object { pub addresses: HashMap, pub services: HashMap, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct Address { pub address_type: AddressType, pub comment: String, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum AddressType { Host { host: String }, @@ -24,13 +24,13 @@ pub enum AddressType { Group { children: Vec }, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct Service { pub service_type: ServiceType, pub comment: String, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum ServiceType { TCP { diff --git a/src/definitions/service.rs b/src/definitions/service.rs index 9e07e3d..ea27f2f 100644 --- a/src/definitions/service.rs +++ b/src/definitions/service.rs @@ -4,14 +4,14 @@ use serde::{Deserialize, Serialize}; use std::net::IpAddr; use validator::Validate; -#[derive(Serialize, Deserialize, Validate, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct Service { pub dhcp_servers: Vec, pub dns_servers: Vec, pub ntp_servers: Vec, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct DHCPServer { pub interface: String, pub pool: Vec, @@ -23,19 +23,19 @@ pub struct DHCPServer { pub comment: String, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct DNSServer { pub interface: String, pub comment: String, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct NTPServer { pub interface: String, pub comment: String, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum GatewayMode { None, @@ -43,7 +43,7 @@ pub enum GatewayMode { Specify { gateway: String }, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum DNSServerMode { None, @@ -51,7 +51,7 @@ pub enum DNSServerMode { Specify { dns_servers: Vec }, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "snake_case")] pub enum NTPServerMode { None, @@ -59,7 +59,7 @@ pub enum NTPServerMode { Specify { ntp_servers: Vec }, } -#[derive(Serialize, Deserialize, Debug)] +#[derive(Serialize, Deserialize, Clone, Debug)] pub struct Reservation { pub ip_address: IpAddr, pub hardware_address: MacAddr8, diff --git a/src/definitions/system.rs b/src/definitions/system.rs index 7fa899b..f0e4384 100644 --- a/src/definitions/system.rs +++ b/src/definitions/system.rs @@ -2,12 +2,12 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; use validator::Validate; -#[derive(Serialize, Deserialize, Validate, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct System { pub users: HashMap, } -#[derive(Serialize, Deserialize, Validate, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct User { pub comment: String, pub hash: String, diff --git a/src/definitions/vpn.rs b/src/definitions/vpn.rs index f8a6452..84104f7 100644 --- a/src/definitions/vpn.rs +++ b/src/definitions/vpn.rs @@ -2,18 +2,18 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; use validator::Validate; -#[derive(Serialize, Deserialize, Validate, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct VPN { pub wireguard: Wireguard, } -#[derive(Serialize, Deserialize, Validate, Default, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)] pub struct Wireguard { pub interfaces: HashMap, pub peers: HashMap, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct WireguardInterface { pub public_key: String, pub private_key: String, @@ -22,7 +22,7 @@ pub struct WireguardInterface { pub comment: String, } -#[derive(Serialize, Deserialize, Validate, Debug)] +#[derive(Serialize, Deserialize, Clone, Validate, Debug)] pub struct WireguardPeer { pub public_key: String, pub preshared_key: Option,