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 d7ee7caed4f1eb147ae4e9b0114dd6b01afa557f
parent 3fb63bbe8c95ebc361e1587dc718a2b5d5ecfa50
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Wed,  3 Jul 2019 22:42:42 +0200

Merge pull request #520 from njfox/fix-email-alias

Fix #468 - Percent-encode the email address in invite link
Diffstat:
MCargo.lock | 1+
MCargo.toml | 3+++
Msrc/mail.rs | 3++-
3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/Cargo.lock b/Cargo.lock @@ -118,6 +118,7 @@ dependencies = [ "num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "oath 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "quoted_printable 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml @@ -105,6 +105,9 @@ handlebars = "1.1.0" soup = "0.4.1" regex = "1.1.7" +# URL encoding library +percent-encoding = "1.0.1" + [patch.crates-io] # Add support for Timestamp type rmp = { git = 'https://github.com/dani-garcia/msgpack-rust' } diff --git a/src/mail.rs b/src/mail.rs @@ -4,6 +4,7 @@ use lettre::{ClientSecurity, ClientTlsParameters, SmtpClient, SmtpTransport, Tra use lettre_email::{EmailBuilder, MimeMultipartType, PartBuilder}; use native_tls::{Protocol, TlsConnector}; use quoted_printable::encode_to_str; +use percent_encoding::{percent_encode, DEFAULT_ENCODE_SET}; use crate::api::EmptyResult; use crate::auth::{encode_jwt, generate_invite_claims}; @@ -101,7 +102,7 @@ pub fn send_invite( "url": CONFIG.domain(), "org_id": org_id.unwrap_or_else(|| "_".to_string()), "org_user_id": org_user_id.unwrap_or_else(|| "_".to_string()), - "email": address, + "email": percent_encode(address.as_bytes(), DEFAULT_ENCODE_SET).to_string().replace("+", "%2b"), "org_name": org_name, "token": invite_token, }),