Spiegel von
https://github.com/dani-garcia/vaultwarden.git
synchronisiert 2024-11-22 05:10:29 +01:00
Convert email domains to punycode
Dieser Commit ist enthalten in:
Ursprung
2798f623d4
Commit
def174a517
4 geänderte Dateien mit 1150 neuen und 1146 gelöschten Zeilen
2280
Cargo.lock
generiert
2280
Cargo.lock
generiert
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
|
@ -111,6 +111,8 @@ openssl = "0.10.26"
|
||||||
|
|
||||||
# URL encoding library
|
# URL encoding library
|
||||||
percent-encoding = "2.1.0"
|
percent-encoding = "2.1.0"
|
||||||
|
# Punycode conversion
|
||||||
|
idna = "0.2.0"
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
# Use newest ring
|
# Use newest ring
|
||||||
|
|
|
@ -271,7 +271,7 @@ impl EmailTokenData {
|
||||||
|
|
||||||
/// Takes an email address and obscures it by replacing it with asterisks except two characters.
|
/// Takes an email address and obscures it by replacing it with asterisks except two characters.
|
||||||
pub fn obscure_email(email: &str) -> String {
|
pub fn obscure_email(email: &str) -> String {
|
||||||
let split: Vec<&str> = email.split('@').collect();
|
let split: Vec<&str> = email.rsplitn(2, '@').collect();
|
||||||
|
|
||||||
let mut name = split[0].to_string();
|
let mut name = split[0].to_string();
|
||||||
let domain = &split[1];
|
let domain = &split[1];
|
||||||
|
|
12
src/mail.rs
12
src/mail.rs
|
@ -259,6 +259,18 @@ pub fn send_change_email(address: &str, token: &str) -> EmptyResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn send_email(address: &str, subject: &str, body_html: &str, body_text: &str) -> EmptyResult {
|
fn send_email(address: &str, subject: &str, body_html: &str, body_text: &str) -> EmptyResult {
|
||||||
|
let address_split: Vec<&str> = address.rsplitn(2, '@').collect();
|
||||||
|
if address_split.len() != 2 {
|
||||||
|
err!("Invalid email address (no @)");
|
||||||
|
}
|
||||||
|
|
||||||
|
let domain_puny = match idna::domain_to_ascii_strict(address_split[1]) {
|
||||||
|
Ok(d) => d,
|
||||||
|
Err(_) => err!("Can't convert email domain to ASCII representation"),
|
||||||
|
};
|
||||||
|
|
||||||
|
let address = format!("{}@{}", address_split[0], domain_puny);
|
||||||
|
|
||||||
let html = PartBuilder::new()
|
let html = PartBuilder::new()
|
||||||
.body(encode_to_str(body_html))
|
.body(encode_to_str(body_html))
|
||||||
.header(("Content-Type", "text/html; charset=utf-8"))
|
.header(("Content-Type", "text/html; charset=utf-8"))
|
||||||
|
|
Laden …
In neuem Issue referenzieren