mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-10 18:38:22 +00:00
add create vec thing macro
This commit is contained in:
parent
138e862327
commit
94f580996c
4 changed files with 74 additions and 0 deletions
|
@ -1,5 +1,6 @@
|
||||||
use super::ApiError;
|
use super::ApiError;
|
||||||
use crate::{
|
use crate::{
|
||||||
|
create_vec_thing,
|
||||||
definitions::firewall::{DestinationNATRule, ForwardRule, SourceNATRule},
|
definitions::firewall::{DestinationNATRule, ForwardRule, SourceNATRule},
|
||||||
delete_vec_thing, get_vec_thing, list_things,
|
delete_vec_thing, get_vec_thing, list_things,
|
||||||
state::RpcState,
|
state::RpcState,
|
||||||
|
@ -21,6 +22,13 @@ pub fn register_methods(module: &mut RpcModule<RpcState>) {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
module
|
||||||
|
.register_method(
|
||||||
|
"firewall.forward_rules.create",
|
||||||
|
create_vec_thing!(firewall.forward_rules, ForwardRule),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
module
|
module
|
||||||
.register_method(
|
.register_method(
|
||||||
"firewall.forward_rules.delete",
|
"firewall.forward_rules.delete",
|
||||||
|
@ -42,6 +50,13 @@ pub fn register_methods(module: &mut RpcModule<RpcState>) {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
module
|
||||||
|
.register_method(
|
||||||
|
"firewall.destination_nat_rules.create",
|
||||||
|
create_vec_thing!(firewall.destination_nat_rules, DestinationNATRule),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
module
|
module
|
||||||
.register_method(
|
.register_method(
|
||||||
"firewall.destination_nat_rules.delete",
|
"firewall.destination_nat_rules.delete",
|
||||||
|
@ -63,6 +78,13 @@ pub fn register_methods(module: &mut RpcModule<RpcState>) {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
module
|
||||||
|
.register_method(
|
||||||
|
"firewall.source_nat_rules.create",
|
||||||
|
create_vec_thing!(firewall.source_nat_rules, SourceNATRule),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
module
|
module
|
||||||
.register_method(
|
.register_method(
|
||||||
"firewall.source_nat_rules.delete",
|
"firewall.source_nat_rules.delete",
|
||||||
|
|
|
@ -104,6 +104,28 @@ macro_rules! list_things {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! create_vec_thing {
|
||||||
|
($( $sub_system:ident ).+, $typ:ty) => {
|
||||||
|
|params, state| {
|
||||||
|
let t: $typ = params.parse().map_err(ApiError::ParameterDeserialize)?;
|
||||||
|
|
||||||
|
let mut cm = state.config_manager.clone();
|
||||||
|
let mut tx = cm.start_transaction();
|
||||||
|
|
||||||
|
tx.config.$($sub_system).+.push(t);
|
||||||
|
let id = {tx.config.$($sub_system).+.len() - 1}.to_string();
|
||||||
|
tx.commit(crate::config_manager::Change {
|
||||||
|
action: crate::config_manager::ChangeAction::Delete,
|
||||||
|
path: stringify!($($sub_system).+),
|
||||||
|
id,
|
||||||
|
})
|
||||||
|
.map_err(ApiError::ConfigError)
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! delete_map_thing {
|
macro_rules! delete_map_thing {
|
||||||
($( $sub_system:ident ).+) => {
|
($( $sub_system:ident ).+) => {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use super::ApiError;
|
use super::ApiError;
|
||||||
use crate::{
|
use crate::{
|
||||||
|
create_vec_thing,
|
||||||
definitions::network::{NetworkInterface, StaticRoute},
|
definitions::network::{NetworkInterface, StaticRoute},
|
||||||
delete_map_thing, delete_vec_thing, get_map_thing, get_vec_thing, list_things,
|
delete_map_thing, delete_vec_thing, get_map_thing, get_vec_thing, list_things,
|
||||||
state::RpcState,
|
state::RpcState,
|
||||||
|
@ -22,6 +23,13 @@ pub fn register_methods(module: &mut RpcModule<RpcState>) {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
module
|
||||||
|
.register_method(
|
||||||
|
"network.static_routes.create",
|
||||||
|
create_vec_thing!(network.static_routes, StaticRoute),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
module
|
module
|
||||||
.register_method(
|
.register_method(
|
||||||
"network.static_routes.delete",
|
"network.static_routes.delete",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use super::ApiError;
|
use super::ApiError;
|
||||||
use crate::{
|
use crate::{
|
||||||
|
create_vec_thing,
|
||||||
definitions::service::{DHCPServer, DNSServer, NTPServer},
|
definitions::service::{DHCPServer, DNSServer, NTPServer},
|
||||||
delete_vec_thing, get_vec_thing, list_things,
|
delete_vec_thing, get_vec_thing, list_things,
|
||||||
state::RpcState,
|
state::RpcState,
|
||||||
|
@ -21,6 +22,13 @@ pub fn register_methods(module: &mut RpcModule<RpcState>) {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
module
|
||||||
|
.register_method(
|
||||||
|
"service.dhcp_servers.create",
|
||||||
|
create_vec_thing!(service.dhcp_servers, DHCPServer),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
module
|
module
|
||||||
.register_method(
|
.register_method(
|
||||||
"service.dhcp_servers.delete",
|
"service.dhcp_servers.delete",
|
||||||
|
@ -42,6 +50,13 @@ pub fn register_methods(module: &mut RpcModule<RpcState>) {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
module
|
||||||
|
.register_method(
|
||||||
|
"service.dns_servers.create",
|
||||||
|
create_vec_thing!(service.dns_servers, DNSServer),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
module
|
module
|
||||||
.register_method(
|
.register_method(
|
||||||
"service.dns_servers.delete",
|
"service.dns_servers.delete",
|
||||||
|
@ -63,6 +78,13 @@ pub fn register_methods(module: &mut RpcModule<RpcState>) {
|
||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
module
|
||||||
|
.register_method(
|
||||||
|
"service.ntp_servers.create",
|
||||||
|
create_vec_thing!(service.ntp_servers, NTPServer),
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
module
|
module
|
||||||
.register_method(
|
.register_method(
|
||||||
"service.ntp_servers.delete",
|
"service.ntp_servers.delete",
|
||||||
|
|
Loading…
Add table
Reference in a new issue