vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit 2d2745195e8426bd2d63a4ab233c37c04852a356
parent 026f9da035dcbf5ff12387600162841f94b47154
Author: ViViDboarder <ViViDboarder@gmail.com>
Date:   Fri, 23 Aug 2019 16:22:14 -0700

Allow explicitly defined smtp auth mechansim

Diffstat:
M.env.template | 1+
Msrc/config.rs | 2++
Msrc/mail.rs | 12++++++++++++
3 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/.env.template b/.env.template @@ -149,3 +149,4 @@ # SMTP_SSL=true # SMTP_USERNAME=username # SMTP_PASSWORD=password +# SMTP_AUTH_MECHANISM="Plain" diff --git a/src/config.rs b/src/config.rs @@ -345,6 +345,8 @@ make_config! { smtp_username: String, true, option; /// Password smtp_password: Pass, true, option; + /// Json form auth mechanism |> Defaults for ssl is "Plain" and "Login" and nothing for non-ssl connections. Possible values: ["Plain", "Login", "Xoauth2"] + smtp_auth_mechanism: String, true, option; }, } diff --git a/src/mail.rs b/src/mail.rs @@ -1,4 +1,5 @@ use lettre::smtp::authentication::Credentials; +use lettre::smtp::authentication::Mechanism as SmtpAuthMechanism; use lettre::smtp::ConnectionReuseParameters; use lettre::{ClientSecurity, ClientTlsParameters, SmtpClient, SmtpTransport, Transport}; use lettre_email::{EmailBuilder, MimeMultipartType, PartBuilder}; @@ -39,6 +40,17 @@ fn mailer() -> SmtpTransport { _ => smtp_client, }; + let smtp_client = match &CONFIG.smtp_auth_mechanism() { + Some(auth_mechanism_json) => { + let auth_mechanism = serde_json::from_str::<SmtpAuthMechanism>(&auth_mechanism_json.clone()); + match auth_mechanism { + Ok(auth_mechanism) => smtp_client.authentication_mechanism(auth_mechanism), + Err(_) => panic!("Failure to parse mechanism. Is it proper Json? Eg. `\"Plain\"` not `Plain`"), + } + }, + _ => smtp_client, + }; + smtp_client .smtp_utf8(true) .connection_reuse(ConnectionReuseParameters::NoReuse)