reworked configuration file
This commit is contained in:
parent
0722886efb
commit
e2581c0dfb
2 changed files with 33 additions and 1 deletions
|
@ -18,6 +18,7 @@ pub struct Config {
|
||||||
pub type LoginStaticConfig = HashMap<String, LoginStaticUser>;
|
pub type LoginStaticConfig = HashMap<String, LoginStaticUser>;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
|
#[serde(tag = "storage_driver")]
|
||||||
pub enum StaticStorage {
|
pub enum StaticStorage {
|
||||||
Garage(StaticGarageConfig),
|
Garage(StaticGarageConfig),
|
||||||
InMemory,
|
InMemory,
|
||||||
|
@ -47,10 +48,12 @@ pub struct LoginStaticUser {
|
||||||
pub master_key: Option<String>,
|
pub master_key: Option<String>,
|
||||||
pub secret_key: Option<String>,
|
pub secret_key: Option<String>,
|
||||||
|
|
||||||
|
#[serde(flatten)]
|
||||||
pub storage: StaticStorage,
|
pub storage: StaticStorage,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
|
#[serde(tag = "storage_driver")]
|
||||||
pub enum LdapStorage {
|
pub enum LdapStorage {
|
||||||
Garage(LdapGarageConfig),
|
Garage(LdapGarageConfig),
|
||||||
InMemory,
|
InMemory,
|
||||||
|
@ -86,6 +89,7 @@ pub struct LoginLdapConfig {
|
||||||
pub alternate_user_secrets_attr: Option<String>,
|
pub alternate_user_secrets_attr: Option<String>,
|
||||||
|
|
||||||
// Storage related thing
|
// Storage related thing
|
||||||
|
#[serde(flatten)]
|
||||||
pub storage: LdapStorage,
|
pub storage: LdapStorage,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
30
src/main.rs
30
src/main.rs
|
@ -33,7 +33,8 @@ enum Command {
|
||||||
Server {
|
Server {
|
||||||
#[clap(short, long, env = "CONFIG_FILE", default_value = "aerogramme.toml")]
|
#[clap(short, long, env = "CONFIG_FILE", default_value = "aerogramme.toml")]
|
||||||
config_file: PathBuf,
|
config_file: PathBuf,
|
||||||
}
|
},
|
||||||
|
Test,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
|
@ -70,6 +71,33 @@ async fn main() -> Result<()> {
|
||||||
let server = Server::new(config).await?;
|
let server = Server::new(config).await?;
|
||||||
server.run().await?;
|
server.run().await?;
|
||||||
}
|
}
|
||||||
|
Command::Test => {
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
|
||||||
|
println!("--- toml ---\n{}\n--- end ---\n", toml::to_string(&Config {
|
||||||
|
lmtp: None,
|
||||||
|
imap: Some(ImapConfig { bind_addr: SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)), 8080) }),
|
||||||
|
login_ldap: None,
|
||||||
|
login_static: Some(HashMap::from([
|
||||||
|
("alice".into(), LoginStaticUser {
|
||||||
|
password: "hash".into(),
|
||||||
|
user_secret: "hello".into(),
|
||||||
|
alternate_user_secrets: vec![],
|
||||||
|
email_addresses: vec![],
|
||||||
|
master_key: None,
|
||||||
|
secret_key: None,
|
||||||
|
storage: StaticStorage::Garage(StaticGarageConfig {
|
||||||
|
s3_endpoint: "http://".into(),
|
||||||
|
k2v_endpoint: "http://".into(),
|
||||||
|
aws_region: "garage".into(),
|
||||||
|
aws_access_key_id: "GK...".into(),
|
||||||
|
aws_secret_access_key: "xxx".into(),
|
||||||
|
bucket: "aerogramme".into(),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
])),
|
||||||
|
}).unwrap());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Reference in a new issue