From 21c1f303aad3ed2975fecca66ca38b41542858fe Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Sat, 28 Oct 2023 19:47:29 +0200 Subject: [PATCH] add get rpc calls --- src/api/firewall.rs | 35 +++++++++++++++++++++++++++++++++++ src/api/mod.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/api/network.rs | 14 +++++++++++++- src/api/object.rs | 18 ++++++++++++++++++ src/api/service.rs | 34 ++++++++++++++++++++++++++++++++++ 5 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 src/api/firewall.rs create mode 100644 src/api/object.rs create mode 100644 src/api/service.rs diff --git a/src/api/firewall.rs b/src/api/firewall.rs new file mode 100644 index 0000000..5ec7cb2 --- /dev/null +++ b/src/api/firewall.rs @@ -0,0 +1,35 @@ +use jsonrpsee::types::Params; + +use crate::{ + definitions::firewall::{DestinationNATRule, ForwardRule, SourceNATRule}, + state::RpcState, +}; + +use super::ApiError; + +pub fn get_forward_rules(_: Params, state: &RpcState) -> Result, ApiError> { + Ok(state + .config_manager + .get_pending_config() + .firewall + .forward_rules) +} + +pub fn get_source_nat_rules(_: Params, state: &RpcState) -> Result, ApiError> { + Ok(state + .config_manager + .get_pending_config() + .firewall + .source_nat_rules) +} + +pub fn get_destination_nat_rules( + _: Params, + state: &RpcState, +) -> Result, ApiError> { + Ok(state + .config_manager + .get_pending_config() + .firewall + .destination_nat_rules) +} diff --git a/src/api/mod.rs b/src/api/mod.rs index 585ab03..5756ce3 100644 --- a/src/api/mod.rs +++ b/src/api/mod.rs @@ -1,4 +1,7 @@ +mod firewall; mod network; +mod object; +mod service; mod system; use crate::state::RpcState; @@ -44,5 +47,47 @@ pub fn new_rpc_module(state: RpcState) -> RpcModule { .register_method("network.get_static_routes", network::get_static_routes) .unwrap(); + module + .register_method("network.get_interfaces", network::get_interfaces) + .unwrap(); + + module + .register_method("object.get_services", object::get_services) + .unwrap(); + + module + .register_method("object.get_addresses", object::get_addresses) + .unwrap(); + + module + .register_method("service.get_dhcp_servers", service::get_dhcp_servers) + .unwrap(); + + module + .register_method("service.get_dns_servers", service::get_dns_servers) + .unwrap(); + + module + .register_method("service.get_ntp_servers", service::get_ntp_servers) + .unwrap(); + + module + .register_method("firewall.get_forward_rules", firewall::get_forward_rules) + .unwrap(); + + module + .register_method( + "firewall.get_destination_nat_rules", + firewall::get_destination_nat_rules, + ) + .unwrap(); + + module + .register_method( + "firewall.get_source_nat_rules", + firewall::get_source_nat_rules, + ) + .unwrap(); + module } diff --git a/src/api/network.rs b/src/api/network.rs index bf92118..49a902f 100644 --- a/src/api/network.rs +++ b/src/api/network.rs @@ -1,6 +1,11 @@ +use std::collections::HashMap; + use jsonrpsee::types::Params; -use crate::{definitions::network::StaticRoute, state::RpcState}; +use crate::{ + definitions::network::{NetworkInterface, StaticRoute}, + state::RpcState, +}; use super::ApiError; @@ -11,3 +16,10 @@ pub fn get_static_routes(_: Params, state: &RpcState) -> Result .network .static_routes) } + +pub fn get_interfaces( + _: Params, + state: &RpcState, +) -> Result, ApiError> { + Ok(state.config_manager.get_pending_config().network.interfaces) +} diff --git a/src/api/object.rs b/src/api/object.rs new file mode 100644 index 0000000..c0d6289 --- /dev/null +++ b/src/api/object.rs @@ -0,0 +1,18 @@ +use std::collections::HashMap; + +use jsonrpsee::types::Params; + +use crate::{ + definitions::object::{Address, Service}, + state::RpcState, +}; + +use super::ApiError; + +pub fn get_services(_: Params, state: &RpcState) -> Result, ApiError> { + Ok(state.config_manager.get_pending_config().object.services) +} + +pub fn get_addresses(_: Params, state: &RpcState) -> Result, ApiError> { + Ok(state.config_manager.get_pending_config().object.addresses) +} diff --git a/src/api/service.rs b/src/api/service.rs new file mode 100644 index 0000000..f160a84 --- /dev/null +++ b/src/api/service.rs @@ -0,0 +1,34 @@ +use std::collections::HashMap; + +use jsonrpsee::types::Params; + +use crate::{ + definitions::service::{DHCPServer, DNSServer, NTPServer}, + state::RpcState, +}; + +use super::ApiError; + +pub fn get_dhcp_servers(_: Params, state: &RpcState) -> Result, ApiError> { + Ok(state + .config_manager + .get_pending_config() + .service + .dhcp_servers) +} + +pub fn get_dns_servers(_: Params, state: &RpcState) -> Result, ApiError> { + Ok(state + .config_manager + .get_pending_config() + .service + .dns_servers) +} + +pub fn get_ntp_servers(_: Params, state: &RpcState) -> Result, ApiError> { + Ok(state + .config_manager + .get_pending_config() + .service + .ntp_servers) +}