]> git.proxmox.com Git - proxmox.git/blob - proxmox-notify/src/config.rs
notify: preparation for the first endpoint plugin
[proxmox.git] / proxmox-notify / src / config.rs
1 use lazy_static::lazy_static;
2 use proxmox_schema::{ApiType, ObjectSchema};
3 use proxmox_section_config::{SectionConfig, SectionConfigData, SectionConfigPlugin};
4
5 use crate::schema::BACKEND_NAME_SCHEMA;
6 use crate::Error;
7
8 lazy_static! {
9 pub static ref CONFIG: SectionConfig = config_init();
10 pub static ref PRIVATE_CONFIG: SectionConfig = private_config_init();
11 }
12
13 fn config_init() -> SectionConfig {
14 let mut config = SectionConfig::new(&BACKEND_NAME_SCHEMA);
15
16 config
17 }
18
19 fn private_config_init() -> SectionConfig {
20 let mut config = SectionConfig::new(&BACKEND_NAME_SCHEMA);
21
22 config
23 }
24
25 pub fn config(raw_config: &str) -> Result<(SectionConfigData, [u8; 32]), Error> {
26 let digest = openssl::sha::sha256(raw_config.as_bytes());
27 let data = CONFIG
28 .parse("notifications.cfg", raw_config)
29 .map_err(|err| Error::ConfigDeserialization(err.into()))?;
30 Ok((data, digest))
31 }
32
33 pub fn private_config(raw_config: &str) -> Result<(SectionConfigData, [u8; 32]), Error> {
34 let digest = openssl::sha::sha256(raw_config.as_bytes());
35 let data = PRIVATE_CONFIG
36 .parse("priv/notifications.cfg", raw_config)
37 .map_err(|err| Error::ConfigDeserialization(err.into()))?;
38 Ok((data, digest))
39 }
40
41 pub fn write(config: &SectionConfigData) -> Result<String, Error> {
42 CONFIG
43 .write("notifications.cfg", config)
44 .map_err(|err| Error::ConfigSerialization(err.into()))
45 }
46
47 pub fn write_private(config: &SectionConfigData) -> Result<String, Error> {
48 PRIVATE_CONFIG
49 .write("priv/notifications.cfg", config)
50 .map_err(|err| Error::ConfigSerialization(err.into()))
51 }