mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-11 02:48:21 +00:00
Add Clone Traits
This commit is contained in:
parent
7c2210e26c
commit
bb1b4d78e4
6 changed files with 30 additions and 30 deletions
|
@ -1,14 +1,14 @@
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Default, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct Firewall {
|
pub struct Firewall {
|
||||||
forward_rules: Vec<ForwardRule>,
|
forward_rules: Vec<ForwardRule>,
|
||||||
destination_nat_rules: Vec<DestinationNATRule>,
|
destination_nat_rules: Vec<DestinationNATRule>,
|
||||||
source_nat_rules: Vec<SourceNATRule>,
|
source_nat_rules: Vec<SourceNATRule>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct ForwardRule {
|
pub struct ForwardRule {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub services: Vec<String>,
|
pub services: Vec<String>,
|
||||||
|
@ -19,7 +19,7 @@ pub struct ForwardRule {
|
||||||
pub verdict: Verdict,
|
pub verdict: Verdict,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct DestinationNATRule {
|
pub struct DestinationNATRule {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub services: Vec<String>,
|
pub services: Vec<String>,
|
||||||
|
@ -31,7 +31,7 @@ pub struct DestinationNATRule {
|
||||||
pub dnat_service: String,
|
pub dnat_service: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct SourceNATRule {
|
pub struct SourceNATRule {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub services: Vec<String>,
|
pub services: Vec<String>,
|
||||||
|
@ -42,7 +42,7 @@ pub struct SourceNATRule {
|
||||||
pub snat_type: SNATType,
|
pub snat_type: SNATType,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum Verdict {
|
pub enum Verdict {
|
||||||
Accept,
|
Accept,
|
||||||
|
@ -50,7 +50,7 @@ pub enum Verdict {
|
||||||
Continue,
|
Continue,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum SNATType {
|
pub enum SNATType {
|
||||||
SNAT {
|
SNAT {
|
||||||
|
|
|
@ -3,13 +3,13 @@ use serde::{Deserialize, Serialize};
|
||||||
use std::{collections::HashMap, net::IpAddr};
|
use std::{collections::HashMap, net::IpAddr};
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Default, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct Network {
|
pub struct Network {
|
||||||
pub interfaces: HashMap<String, NetworkInterface>,
|
pub interfaces: HashMap<String, NetworkInterface>,
|
||||||
pub static_routes: Vec<StaticRoute>,
|
pub static_routes: Vec<StaticRoute>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct NetworkInterface {
|
pub struct NetworkInterface {
|
||||||
pub alias: String,
|
pub alias: String,
|
||||||
pub comment: String,
|
pub comment: String,
|
||||||
|
@ -17,7 +17,7 @@ pub struct NetworkInterface {
|
||||||
pub addressing_mode: AddressingMode,
|
pub addressing_mode: AddressingMode,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum NetworkInterfaceType {
|
pub enum NetworkInterfaceType {
|
||||||
Hardware { device: String },
|
Hardware { device: String },
|
||||||
|
@ -26,7 +26,7 @@ pub enum NetworkInterfaceType {
|
||||||
Bridge { members: Vec<String> },
|
Bridge { members: Vec<String> },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum AddressingMode {
|
pub enum AddressingMode {
|
||||||
None,
|
None,
|
||||||
|
@ -34,7 +34,7 @@ pub enum AddressingMode {
|
||||||
DHCP,
|
DHCP,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct StaticRoute {
|
pub struct StaticRoute {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub interface: String,
|
pub interface: String,
|
||||||
|
|
|
@ -3,19 +3,19 @@ use serde::{Deserialize, Serialize};
|
||||||
use std::{collections::HashMap, net::IpAddr};
|
use std::{collections::HashMap, net::IpAddr};
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Default, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct Object {
|
pub struct Object {
|
||||||
pub addresses: HashMap<String, Address>,
|
pub addresses: HashMap<String, Address>,
|
||||||
pub services: HashMap<String, Service>,
|
pub services: HashMap<String, Service>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct Address {
|
pub struct Address {
|
||||||
pub address_type: AddressType,
|
pub address_type: AddressType,
|
||||||
pub comment: String,
|
pub comment: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum AddressType {
|
pub enum AddressType {
|
||||||
Host { host: String },
|
Host { host: String },
|
||||||
|
@ -24,13 +24,13 @@ pub enum AddressType {
|
||||||
Group { children: Vec<String> },
|
Group { children: Vec<String> },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct Service {
|
pub struct Service {
|
||||||
pub service_type: ServiceType,
|
pub service_type: ServiceType,
|
||||||
pub comment: String,
|
pub comment: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum ServiceType {
|
pub enum ServiceType {
|
||||||
TCP {
|
TCP {
|
||||||
|
|
|
@ -4,14 +4,14 @@ use serde::{Deserialize, Serialize};
|
||||||
use std::net::IpAddr;
|
use std::net::IpAddr;
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Default, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct Service {
|
pub struct Service {
|
||||||
pub dhcp_servers: Vec<DHCPServer>,
|
pub dhcp_servers: Vec<DHCPServer>,
|
||||||
pub dns_servers: Vec<DNSServer>,
|
pub dns_servers: Vec<DNSServer>,
|
||||||
pub ntp_servers: Vec<NTPServer>,
|
pub ntp_servers: Vec<NTPServer>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct DHCPServer {
|
pub struct DHCPServer {
|
||||||
pub interface: String,
|
pub interface: String,
|
||||||
pub pool: Vec<String>,
|
pub pool: Vec<String>,
|
||||||
|
@ -23,19 +23,19 @@ pub struct DHCPServer {
|
||||||
pub comment: String,
|
pub comment: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct DNSServer {
|
pub struct DNSServer {
|
||||||
pub interface: String,
|
pub interface: String,
|
||||||
pub comment: String,
|
pub comment: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct NTPServer {
|
pub struct NTPServer {
|
||||||
pub interface: String,
|
pub interface: String,
|
||||||
pub comment: String,
|
pub comment: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum GatewayMode {
|
pub enum GatewayMode {
|
||||||
None,
|
None,
|
||||||
|
@ -43,7 +43,7 @@ pub enum GatewayMode {
|
||||||
Specify { gateway: String },
|
Specify { gateway: String },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum DNSServerMode {
|
pub enum DNSServerMode {
|
||||||
None,
|
None,
|
||||||
|
@ -51,7 +51,7 @@ pub enum DNSServerMode {
|
||||||
Specify { dns_servers: Vec<String> },
|
Specify { dns_servers: Vec<String> },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum NTPServerMode {
|
pub enum NTPServerMode {
|
||||||
None,
|
None,
|
||||||
|
@ -59,7 +59,7 @@ pub enum NTPServerMode {
|
||||||
Specify { ntp_servers: Vec<String> },
|
Specify { ntp_servers: Vec<String> },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Debug)]
|
||||||
pub struct Reservation {
|
pub struct Reservation {
|
||||||
pub ip_address: IpAddr,
|
pub ip_address: IpAddr,
|
||||||
pub hardware_address: MacAddr8,
|
pub hardware_address: MacAddr8,
|
||||||
|
|
|
@ -2,12 +2,12 @@ use serde::{Deserialize, Serialize};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Default, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct System {
|
pub struct System {
|
||||||
pub users: HashMap<String, User>,
|
pub users: HashMap<String, User>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Default, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct User {
|
pub struct User {
|
||||||
pub comment: String,
|
pub comment: String,
|
||||||
pub hash: String,
|
pub hash: String,
|
||||||
|
|
|
@ -2,18 +2,18 @@ use serde::{Deserialize, Serialize};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use validator::Validate;
|
use validator::Validate;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Default, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct VPN {
|
pub struct VPN {
|
||||||
pub wireguard: Wireguard,
|
pub wireguard: Wireguard,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Default, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Default, Debug)]
|
||||||
pub struct Wireguard {
|
pub struct Wireguard {
|
||||||
pub interfaces: HashMap<String, WireguardInterface>,
|
pub interfaces: HashMap<String, WireguardInterface>,
|
||||||
pub peers: HashMap<String, WireguardPeer>,
|
pub peers: HashMap<String, WireguardPeer>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct WireguardInterface {
|
pub struct WireguardInterface {
|
||||||
pub public_key: String,
|
pub public_key: String,
|
||||||
pub private_key: String,
|
pub private_key: String,
|
||||||
|
@ -22,7 +22,7 @@ pub struct WireguardInterface {
|
||||||
pub comment: String,
|
pub comment: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Validate, Debug)]
|
#[derive(Serialize, Deserialize, Clone, Validate, Debug)]
|
||||||
pub struct WireguardPeer {
|
pub struct WireguardPeer {
|
||||||
pub public_key: String,
|
pub public_key: String,
|
||||||
pub preshared_key: Option<String>,
|
pub preshared_key: Option<String>,
|
||||||
|
|
Loading…
Add table
Reference in a new issue