Fix: Also show the hop_info for encrypted messages (#2923)

Before, the hop_info was shown only for unencrypted messages.

Credits: The bug was noticed by link2xt

Follow-up for #2751
This commit is contained in:
Hocuri
2021-12-28 13:23:41 +01:00
committed by GitHub
parent 273a38d781
commit d47680733b
3 changed files with 121 additions and 13 deletions

View File

@@ -769,13 +769,8 @@ mod tests {
}
#[async_std::test]
async fn test_parse_receive_headers_integration() -> anyhow::Result<()> {
let t = TestContext::new_alice().await;
t.set_config(Config::ShowEmails, Some("2")).await?;
async fn test_parse_receive_headers_integration() {
let raw = include_bytes!("../test-data/message/mail_with_cc.txt");
dc_receive_imf(&t, raw, "INBOX", 1, false).await.unwrap();
let g = t.get_last_msg().await;
let expected = r"State: Fresh
hi
@@ -785,14 +780,39 @@ Last seen as: INBOX/1
Hop: From: localhost; By: hq5.merlinux.eu; Date: Sat, 14 Sep 2019 17:00:22 +0000
Hop: From: hq5.merlinux.eu; By: hq5.merlinux.eu; Date: Sat, 14 Sep 2019 17:00:25 +0000";
let result = get_msg_info(&t, g.id).await.unwrap();
// little hack to ignore the first row of a parsed email because it contains a
// send time that depends and the test runtime which makes it impossible to
// compare with a static string
let capped_result = &result[result.find("State").unwrap()..];
check_parse_receive_headers_integration(raw, expected).await;
let raw = include_bytes!("../test-data/message/encrypted_with_received_headers.eml");
let expected = "State: Fresh, Encrypted
Re: Message from alice@example.org
hi back\r\n\
\r\n\
-- \r\n\
Sent with my Delta Chat Messenger: https://delta.chat
Message-ID: Mr.adQpEwndXLH.LPDdlFVJ7wG@example.net
Last seen as: INBOX/1
Hop: From: [127.0.0.1]; By: mail.example.org; Date: Mon, 27 Dec 2021 11:21:21 +0000
Hop: From: mout.example.org; By: hq5.example.org; Date: Mon, 27 Dec 2021 11:21:22 +0000
Hop: From: hq5.example.org; By: hq5.example.org; Date: Mon, 27 Dec 2021 11:21:22 +0000";
check_parse_receive_headers_integration(raw, expected).await;
}
async fn check_parse_receive_headers_integration(raw: &[u8], expected: &str) {
let t = TestContext::new_alice().await;
t.set_config(Config::ShowEmails, Some("2")).await.unwrap();
dc_receive_imf(&t, raw, "INBOX", 1, false).await.unwrap();
let msg = t.get_last_msg().await;
let msg_info = get_msg_info(&t, msg.id).await.unwrap();
// Ignore the first rows of the msg_info because they contain a
// received time that depends on the test time which makes it impossible to
// compare with a static string
let capped_result = &msg_info[msg_info.find("State").unwrap()..];
assert_eq!(expected, capped_result);
Ok(())
}
#[test]

View File

@@ -165,6 +165,7 @@ impl MimeMessage {
.get_header_value(HeaderDef::Date)
.and_then(|v| mailparse::dateparse(&v).ok())
.unwrap_or_default();
let hop_info = parse_receive_headers(&mail.get_headers());
let mut headers = Default::default();
let mut recipients = Default::default();
@@ -296,7 +297,7 @@ impl MimeMessage {
footer: None,
is_mime_modified: false,
decoded_data: Vec::new(),
hop_info: parse_receive_headers(&mail.get_headers()),
hop_info,
};
match partial {

View File

@@ -0,0 +1,87 @@
Return-Path: <bob@example.org>
Delivered-To: alice@example.org
Received: from hq5.example.org
by hq5.example.org with LMTP
id ODfyL7KhyWEANgAAPzvFDg
(envelope-from <bob@example.org>)
for <bob@example.org>; Mon, 27 Dec 2021 12:21:22 +0100
Received: from mout.example.org (mout.example.org [212.227.17.22])
by hq5.example.org (Postfix) with ESMTPS id 45BAF27A0001
for <bob@example.org>; Mon, 27 Dec 2021 12:21:22 +0100 (CET)
Received: from [127.0.0.1] ([217.80.24.163]) by mail.example.org (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MF3HU-1nCnTl33U0-00FXCF; Mon, 27
Dec 2021 12:21:21 +0100
Subject: ...
MIME-Version: 1.0
Date: Mon, 27 Dec 2021 13:12:03 +0000
Chat-Version: 1.0
Autocrypt: addr=bob@example.net; prefer-encrypt=mutual;
keydata=xsBNBF4wx1cBCADOwLS/xCd8iKDWUsyTfVzWby+ZGKPpamPTvdj0GFgnf0B1EBaA5//PjA
zbK5iKio6QNEmZagzJPkXPByJcAIRUm0T16tqDtCvxm+H93YEXpHi/XWOeJw9kohATSqUtsRO0pFJe
DvPiMTmQrEmHYoWDSQBfCrowZdvnMAlbJ9JjYOngcMeTxc0jxmPs5s17yFC+1OWu4fwWCyUM3wy1Jz
dKTcDWryrSkvmgFdUqJ7pJDk1HFTt+x9tvQlK3un9BXiRwv0u0zDSuI8eDH/dRLA4UL9Pq6vmJmBam
e1BPsE1PA7VzeTSJR2ooJXMT6o2AmH8PPUfRkv3OiWuh7LM5FSpHABEBAAHNETxib2JAZXhhbXBsZS
5uZXQ+wsCJBBABCAAzAhkBBQJeMMduAhsDBAsJCAcGFQgJCgsCAxYCARYhBMzLWqn24RQclDFl8dsY
sYy89wSHAAoJENsYsYy89wSH9oIIALbpmicuVghM3CloiCgJhPEFLFMaQZRDV/KCVVtBcHAhw6d42q
8T50mhs+W3Va5E37DN+wcenj8CgeGPQY3kPp2cnZruYtLhLkZ1+VEay5BQFUMb8kY21XrNTQQET8vc
0L8cCLQ7RCgm1tGiFVp1nqbjmGUdoru90ksoufWfoqVPjNrW+9eHFvY/Z7PqchCdMnbKOJiwwv4E3N
DTySZ1UVZnDztGy95Aa8OZ3cntvbq4JVi7S+N38rRPPPzpZKx+M4DUGfDAoaq7O/Xemyk1sP6C/NgQ
vS8rri54PgkMgKSS4TyyEzdM+fzeNYFPXFGTbgj4p0pSueQV7/JUfYHRfe3OwE0EXjDHVwEIAKIHgS
2yI2niSCN1tqcbLvkhLrEJCVcpGxmA7asl1flwWYrGOBhNJE2sCuZqkofqw6qrgsQ4GFgUU5xmcBCq
IZ49jRu+aY38lT4WDFHSbe/mGtaIhb2ZYK6zo9W7Y3r6ud8hbUKJTDfl9qEvJpX/Y0syMjwng8SZNT
dYMWgAE4NwcgMgdU3dMA3RT6ePJ4vKs38hmXmInLyZce+GJzmo2tpZyP8viPS7JpqojoCPB3G5h9aH
eakp1Y4XKQaExANeWCyBJEhNwtNEOVEpQ0txFYPyDrtxV5y5e79IUP418r/PHsnH6UnxXGzB6LfVbS
eEyDyKEl+w0PrlNklySomTZFUAEQEAAcLAdgQYAQgAIAUCXjDHbgIbDBYhBMzLWqn24RQclDFl8dsY
sYy89wSHAAoJENsYsYy89wSHVCIIAIH694HkQLXRAJlXmi8K/xMVP96ywJovL/B5l4S/vk/iR4P1lY
sF55A3Z2PK/iFtwAgVsppcBIPBlqSI0GPDMvEIxj7UFOQfQzVpDes29wG8grHJEJqI/4TlRjOacxTG
aJ5fIMsLXJD6nLBuoN5Z6zm3LjqIyOx4ZGrwradPO95OMGT2Xll3YNzUqSWe33RJLqNQ5ea9I7+qvK
nW5Z9Yt5nQwOo8yD+f5fql8904B3eAyLqxgkdLmngAWmYhc7KOaKdAsx7TXBAKsoeHk51OPk59u7Eb
X35HWD6snl/phJdUYDXiddyYN/n2ZY9g80ycle2JfgpfrQGlh7oJqgCjZuk=
Message-ID: <Mr.adQpEwndXLH.LPDdlFVJ7wG@example.net>
To: <alice@example.org>
From: <bob@example.net>
Content-Type: multipart/encrypted; protocol="application/pgp-encrypted";
boundary="M1Jorju4VotNmLKKE0sfOXoILeBrPT"
--M1Jorju4VotNmLKKE0sfOXoILeBrPT
Content-Type: application/pgp-encrypted
Content-Description: PGP/MIME version identification
Version: 1
--M1Jorju4VotNmLKKE0sfOXoILeBrPT
Content-Type: application/octet-stream; name="encrypted.asc"
Content-Description: OpenPGP encrypted message
Content-Disposition: inline; filename="encrypted.asc";
-----BEGIN PGP MESSAGE-----
wU4D5tq63hTeebASAQdAvnEfGvGoq5gqUvdfaQYTaYEpOGE/PwfwDmoP0dMoAHgg
rjw3qVEAlAkvEjr6zZ55GTUFCPL+PTbePTCLXvNeFvjBwEwD49jcm8SO4yIBCACU
Xxzv2wWPEXcHv3IC068E1maFYJgjbL4UUqEnepyQeRw6X4hqhivR1t+Sq5jtSB90
ywDKf/z3gNytjUYwgWL0wC7hRc9HoctXf/j6pIGMui2FqyzOxmbD1E99lFvexDbo
9qx47bFqC47HTc3pyOBHgnCqNsfLwRoBz+BMtpLOU8TeJeA1LanrXDPLxQoExitc
CpdmrlpVXmLbgQ7h/tT7dwidQ8xMB5J4h/gXzaSrrPI8E5HVFUEp0nt1G0sRsMFZ
HftxsyucK+GSppaU4mPQ5KgLjztY9Hd67f/XFLsJpU0Gxq8aRrMh43WzsM9kgAUB
Gj6WW5KH/8gTsjNqMgPC0sHSATYf3TgPs9w2R7ZawiLDfYCRugzWuKwajpMBlt76
Sa8XFOg53QPzgK2lIm4jzRCT7bmFXQ+jNn5i8/XsgNohsGCbTxfU37ieAX/RBPtj
S4N2RwbMmNr+8PnZaEXz8MKAG1Ptpl3oceqJ8uUXtC2DK8SuGXkTumJYVM1qTNzx
Y3T9xFuu56b6sEPQZPrbjdK9hP7KI91vsakbLa9KiNGDFxu/YtO9fM+CT2F+9geN
Q4DPYuq/FMLvztjMm27cYT0jPU3sBCkxtb1nsxJViEo5DsFBZA5Xo4pg/waGbCc/
u6C7tesb+hf/DgU76UsUKFQGMX6KDNqNiyiWp4nA6c8i5rIh0IXEk97JG6tGLhSc
yMdsj59F9vTMFLuFFNCuLGyX9y/2JE2VKfPRbOwspmrbvg9yVLhdyFkxuv+M+cWv
tj6E2oL3HhmJXSIbWbWH80c0Q5UUH9Z0tI2cxQZTvQxegnnnJ+VZmQAs2S5nZxds
74/Wk0Gf4HHFn2jEDkaMEP4S1W6pvdowkzv7FnQ/3bFdEKGHNrNgZoPNXHh3eM+L
HiY8Opx4vsRK5ia/1TbVkzyJtihL5y5LupS7PRXjjLlXjxbrZxQIpMztuC29lgMD
Da5+F2hcrQEd2oDv/67s54+IkuBdTTM3YwXy6NJ0NtEVcEfiGILGoNpeBF5ppTgU
N4ep54h0PYO/L8xLkzNrvIbJGfquYnKhgRicBNPyrPiDlB/1CmfTIE/K9jJosigV
/jEQ2dSlDILFElmGCGRnb/t21PhWPhmiNcSaYdQKhjTf4LgYlBXP57YsEMdo+HAl
koaQzcdV8os3PeBeFgQi11B2nOSoq0gHmto6lWZnZC7dIsJwI8cq6A/49WLKUFNR
sO+twA==
=Dvgk
-----END PGP MESSAGE-----
--M1Jorju4VotNmLKKE0sfOXoILeBrPT--