vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit ade293cf524e9cd66db8416dd3417077eb11ed07
parent 877408b80832c37725c11d5c2ce48fb08f3f7900
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sat,  2 Feb 2019 17:45:25 +0100

Save config

Diffstat:
Msrc/api/admin.rs | 2+-
Msrc/config.rs | 19+++++++++++++------
2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/api/admin.rs b/src/api/admin.rs @@ -98,7 +98,7 @@ impl AdminTemplateData { Self { users, page_content: String::from("admin/page"), - config: serde_json::to_string_pretty(&CONFIG.get_config()).unwrap(), + config: CONFIG.get_config(), } } diff --git a/src/config.rs b/src/config.rs @@ -10,6 +10,7 @@ lazy_static! { println!("Error loading config:\n\t{:?}\n", e); exit(12) }); + pub static ref CONFIG_PATH: String = "data/config.json".into(); } macro_rules! make_config { @@ -86,7 +87,7 @@ macro_rules! make_config { // TODO: Get config.json from CONFIG_PATH env var or -c <CONFIG> console option // Loading from file - let mut builder = match ConfigBuilder::from_file("data/config.json") { + let mut builder = match ConfigBuilder::from_file(&CONFIG_PATH) { Ok(builder) => builder, Err(_) => ConfigBuilder::default() }; @@ -200,17 +201,23 @@ fn validate_config(cfg: &ConfigItems) -> Result<(), Error> { } impl Config { - pub fn get_config(&self) -> ConfigItems { - self.inner.read().unwrap().config.clone() + pub fn get_config(&self) -> String { + let cfg = &self.inner.read().unwrap().config; + serde_json::to_string_pretty(cfg).unwrap() } - + pub fn update_config(&self, other: ConfigBuilder) -> Result<(), Error> { let config = other.build(); validate_config(&config)?; - self.inner.write().unwrap().config = config; + let config_str = serde_json::to_string_pretty(&config)?; + + self.inner.write().unwrap().config = config.clone(); - // TODO: Save to file + //Save to file + use std::{fs::File, io::Write}; + let mut file = File::create(&*CONFIG_PATH)?; + file.write_all(config_str.as_bytes())?; Ok(()) }