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 default_theme: String,
pub media_directory: String,
pub mail: Option<MailConfig>,
pub ldap: Option<LdapConfig>,
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 addr: String,
pub base_dn: String,
@ -347,6 +364,7 @@ lazy_static! {
default_theme: var("DEFAULT_THEME").unwrap_or_else(|_| "default-light".to_owned()),
media_directory: var("MEDIA_UPLOAD_DIRECTORY")
.unwrap_or_else(|_| "static/media".to_owned()),
mail: get_mail_config(),
ldap: get_ldap_config(),
proxy: get_proxy_config(),
};

View file

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