Move mail config from plume::mail::mailer to plume_models::CONFIG

This commit is contained in:
Kitaiti Makoto 2022-01-03 15:50:04 +09:00
parent 2a1a0a23a5
commit 0058c3053d
2 changed files with 26 additions and 8 deletions

View File

@ -21,6 +21,7 @@ pub struct Config {
pub logo: LogoConfig, pub logo: LogoConfig,
pub default_theme: String, pub default_theme: String,
pub media_directory: String, pub media_directory: String,
pub mail: Option<MailConfig>,
pub ldap: Option<LdapConfig>, pub ldap: Option<LdapConfig>,
pub proxy: Option<ProxyConfig>, pub proxy: Option<ProxyConfig>,
} }
@ -245,6 +246,22 @@ impl SearchTokenizerConfig {
} }
} }
pub struct MailConfig {
pub server: String,
pub helo_name: String,
pub username: String,
pub password: String,
}
fn get_mail_config() -> Option<MailConfig> {
Some(MailConfig {
server: env::var("MAIL_SERVER").ok()?,
helo_name: env::var("MAIL_HELO_NAME").unwrap_or_else(|_| "localhost".to_owned()),
username: env::var("MAIL_USER").ok()?,
password: env::var("MAIL_PASSWORD").ok()?,
})
}
pub struct LdapConfig { pub struct LdapConfig {
pub addr: String, pub addr: String,
pub base_dn: String, pub base_dn: String,
@ -347,6 +364,7 @@ lazy_static! {
default_theme: var("DEFAULT_THEME").unwrap_or_else(|_| "default-light".to_owned()), default_theme: var("DEFAULT_THEME").unwrap_or_else(|_| "default-light".to_owned()),
media_directory: var("MEDIA_UPLOAD_DIRECTORY") media_directory: var("MEDIA_UPLOAD_DIRECTORY")
.unwrap_or_else(|_| "static/media".to_owned()), .unwrap_or_else(|_| "static/media".to_owned()),
mail: get_mail_config(),
ldap: get_ldap_config(), ldap: get_ldap_config(),
proxy: get_proxy_config(), proxy: get_proxy_config(),
}; };

View File

@ -54,19 +54,19 @@ mod mailer {
}, },
SmtpClient, SmtpTransport, SmtpClient, SmtpTransport,
}; };
use std::env; use plume_models::CONFIG;
pub type Mailer = Option<SmtpTransport>; pub type Mailer = Option<SmtpTransport>;
pub fn init() -> Mailer { pub fn init() -> Mailer {
let server = env::var("MAIL_SERVER").ok()?; let config = CONFIG.mail.as_ref()?;
let helo_name = env::var("MAIL_HELO_NAME").unwrap_or_else(|_| "localhost".to_owned()); let mail = SmtpClient::new_simple(&config.server)
let username = env::var("MAIL_USER").ok()?;
let password = env::var("MAIL_PASSWORD").ok()?;
let mail = SmtpClient::new_simple(&server)
.unwrap() .unwrap()
.hello_name(ClientId::Domain(helo_name)) .hello_name(ClientId::Domain(config.helo_name.clone()))
.credentials(Credentials::new(username, password)) .credentials(Credentials::new(
config.username.clone(),
config.password.clone(),
))
.smtp_utf8(true) .smtp_utf8(true)
.authentication_mechanism(Mechanism::Plain) .authentication_mechanism(Mechanism::Plain)
.connection_reuse(ConnectionReuseParameters::NoReuse) .connection_reuse(ConnectionReuseParameters::NoReuse)