X-Git-Url: https://git.r.bdr.sh/rbdr/olden-mail/blobdiff_plain/768227f7aa31e2930e1ff2641c24fbf06fc339fe..6aebf7f92c7a0bdce8e7c8e8049739d70065ec3b:/src/configuration.rs?ds=sidebyside diff --git a/src/configuration.rs b/src/configuration.rs index af5c46d..1c8741d 100644 --- a/src/configuration.rs +++ b/src/configuration.rs @@ -9,7 +9,7 @@ use std::sync::Arc; use thiserror::Error; #[derive(Error, Debug)] -pub enum ConfigurationError { +pub enum Error { #[error("Environment variable {0} not set.")] MissingEnvVar(String), #[error("Failed to parse {0}.")] @@ -18,7 +18,7 @@ pub enum ConfigurationError { /// Configuration for any proxy #[derive(Debug)] -pub struct ProxyConfiguration { +pub struct Proxy { pub local_port: u16, pub bind_address: String, pub remote_host: String, @@ -28,27 +28,27 @@ pub struct ProxyConfiguration { /// Aggregated configuration for both proxies, already in a reference counter. pub struct Configuration { - pub imap_configuration: Arc, - pub smtp_configuration: Arc, + pub imap_configuration: Arc, + pub smtp_configuration: Arc, } impl Configuration { /// Creates a new configuration object by reading the environment /// variables. Exits if the right ones aren't found. - pub fn new() -> Result { + pub fn new() -> Result { Ok(Configuration { - imap_configuration: Arc::new(ProxyConfiguration { + imap_configuration: Arc::new(Proxy { local_port: get_env_number("LOCAL_IMAP_PORT", 143)?, bind_address: get_env_var("LOCAL_IMAP_BIND_ADDRESS", Some("0.0.0.0".to_string()))?, - remote_host: get_env_var("REMOTE_IMAP_DOMAIN", None)?, + remote_host: get_env_var("REMOTE_IMAP_HOST", None)?, remote_port: get_env_number("REMOTE_IMAP_PORT", 993)?, protocol: "IMAP", }), - smtp_configuration: Arc::new(ProxyConfiguration { + smtp_configuration: Arc::new(Proxy { local_port: get_env_number("LOCAL_SMTP_PORT", 25)?, bind_address: get_env_var("LOCAL_SMTP_BIND_ADDRESS", Some("0.0.0.0".to_string()))?, - remote_host: get_env_var("REMOTE_SMTP_DOMAIN", None)?, - remote_port: get_env_number("REMOTE_SMTP_PORT", 993)?, + remote_host: get_env_var("REMOTE_SMTP_HOST", None)?, + remote_port: get_env_number("REMOTE_SMTP_PORT", 465)?, protocol: "SMTP", }), }) @@ -56,23 +56,23 @@ impl Configuration { } /// Get an environment variable or return an error. -fn get_env_var(name: &str, default: Option) -> Result { +fn get_env_var(name: &str, default: Option) -> Result { match env::var(name) { Ok(value) => Ok(value), Err(_) => match default { Some(default_value) => Ok(default_value), - None => Err(ConfigurationError::MissingEnvVar(name.to_string())), + None => Err(Error::MissingEnvVar(name.to_string())), }, } } /// Get an environment variable and parse it as a number. Return a default /// if not set. -fn get_env_number(name: &str, default: u16) -> Result { +fn get_env_number(name: &str, default: u16) -> Result { match env::var(name) { Ok(value) => value .parse() - .map_err(|_| ConfigurationError::ParseError(name.to_string())), + .map_err(|_| Error::ParseError(name.to_string())), Err(_) => Ok(default), } }