diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2023-12-06 20:57:25 +0100 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2023-12-06 20:57:25 +0100 |
commit | 3ddbce4529225fe004acde3ab2e95261673bafc3 (patch) | |
tree | 799b7fa0e1aa8d173c89a2124ffc2865f3d6ced0 /src/config.rs | |
parent | 2779837a3750c3b2964c3a4d5d43de25218bc605 (diff) | |
download | aerogramme-3ddbce4529225fe004acde3ab2e95261673bafc3.tar.gz aerogramme-3ddbce4529225fe004acde3ab2e95261673bafc3.zip |
WIP refactor
Diffstat (limited to 'src/config.rs')
-rw-r--r-- | src/config.rs | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/config.rs b/src/config.rs index 286ef65..5bd7380 100644 --- a/src/config.rs +++ b/src/config.rs @@ -12,7 +12,7 @@ pub struct CompanionConfig { pub imap: ImapConfig, #[serde(flatten)] - pub users: LoginStaticUser, + pub users: LoginStaticConfig, } #[derive(Serialize, Deserialize, Debug, Clone)] @@ -26,7 +26,7 @@ pub struct ProviderConfig { #[derive(Serialize, Deserialize, Debug, Clone)] #[serde(tag = "user_driver")] pub enum UserManagement { - Static(LoginStaticUser), + Static(LoginStaticConfig), Ldap(LoginLdapConfig), } @@ -42,8 +42,8 @@ pub struct ImapConfig { } #[derive(Serialize, Deserialize, Debug, Clone)] -pub struct LoginStaticUser { - pub user_list: String, +pub struct LoginStaticConfig { + pub user_list: PathBuf, } #[derive(Serialize, Deserialize, Debug, Clone)] @@ -107,21 +107,40 @@ pub struct StaticGarageConfig { pub bucket: String, } +pub type UserList = HashMap<String, UserEntry>; + +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(tag = "crypto_root")] +pub enum CryptographyRoot { + PasswordProtected, + Keyring, + InPlace { + master_key: String, + secret_key: String, + } +} + #[derive(Serialize, Deserialize, Debug, Clone)] pub struct UserEntry { #[serde(default)] pub email_addresses: Vec<String>, pub password: String, - pub master_key: Option<String>, - pub secret_key: Option<String>, + pub crypto_root: CryptographyRoot, #[serde(flatten)] pub storage: StaticStorage, } +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(tag = "role")] +pub enum AnyConfig { + Companion(CompanionConfig), + Provider(ProviderConfig), +} + // --- -pub fn read_config(config_file: PathBuf) -> Result<Config> { +pub fn read_config<'a, T: Deserialize<'a>>(config_file: PathBuf) -> Result<T> { let mut file = std::fs::OpenOptions::new() .read(true) .open(config_file.as_path())?; |