diff --git a/burrow/src/daemon/instance.rs b/burrow/src/daemon/instance.rs index d054e8e..018ec9f 100644 --- a/burrow/src/daemon/instance.rs +++ b/burrow/src/daemon/instance.rs @@ -17,7 +17,7 @@ use crate::{ ServerConfig, ServerInfo, }, - database::{get_connection, load_interface}, + database::{get_connection, load_interface, dump_interface}, wireguard::{Config, Interface}, }; @@ -116,7 +116,10 @@ impl DaemonInstance { .await?; Ok(DaemonResponseData::None) } - DaemonCommand::AddConfigToml(interface_id, config_toml) => { + DaemonCommand::AddConfigToml(config_toml) => { + let conn = get_connection(self.db_path.as_deref())?; + let cfig = Config::from_toml(&config_toml)?; + let _if_id = dump_interface(&conn, &cfig)?; Ok(DaemonResponseData::None) } } diff --git a/burrow/src/daemon/rpc/request.rs b/burrow/src/daemon/rpc/request.rs index ec577c2..0779abb 100644 --- a/burrow/src/daemon/rpc/request.rs +++ b/burrow/src/daemon/rpc/request.rs @@ -10,7 +10,7 @@ pub enum DaemonCommand { ServerConfig, Stop, ReloadConfig(String), - AddConfigToml(String, String), + AddConfigToml(String), } #[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)] diff --git a/burrow/src/database.rs b/burrow/src/database.rs index 0047b01..0dbf397 100644 --- a/burrow/src/database.rs +++ b/burrow/src/database.rs @@ -92,7 +92,7 @@ pub fn load_interface(conn: &Connection, interface_id: &str) -> Result { Ok(Config { interface: iface, peers }) } -pub fn dump_interface(conn: &Connection, config: &Config) -> Result<()> { +pub fn dump_interface(conn: &Connection, config: &Config) -> Result { let mut stmt = conn.prepare("INSERT INTO wg_interface (private_key, dns, address, listen_port, mtu) VALUES (?, ?, ?, ?, ?)")?; let cif = &config.interface; stmt.execute(params![ @@ -113,7 +113,7 @@ pub fn dump_interface(conn: &Connection, config: &Config) -> Result<()> { &peer.endpoint ])?; } - Ok(()) + Ok(interface_id) } pub fn get_connection(path: Option<&Path>) -> Result { diff --git a/burrow/src/wireguard/config.rs b/burrow/src/wireguard/config.rs index 2a9dc14..6fc4b7f 100644 --- a/burrow/src/wireguard/config.rs +++ b/burrow/src/wireguard/config.rs @@ -115,6 +115,12 @@ impl Default for Config { } } +impl Config { + pub fn from_toml(toml: &str) -> Result { + toml::from_str(toml).map_err(Into::into) + } +} + #[cfg(test)] mod tests { use super::*;