From f40a56b2c754ea9254a54b240d3e6ca8d5bd0b1d Mon Sep 17 00:00:00 2001 From: Giovane Date: Mon, 22 Feb 2016 14:39:10 -0300 Subject: Revert "Revert "Filter keys from attachments #608 w/ @deniscostadsc"" This reverts commit f92e802df2aeec9b2341ba5b4efea48356edf01f. --- service/pixelated/adapter/mailstore/leap_mailstore.py | 7 +++++++ service/src/leap.auth | 1 + service/src/leap.common | 1 + service/src/leap.keymanager | 1 + service/src/leap.mail | 1 + service/src/leap.soledad.client | 1 + service/src/leap.soledad.common | 1 + service/src/leap.soledad.server | 1 + service/src/pip-delete-this-directory.txt | 5 +++++ service/test/integration/test_leap_mailstore.py | 14 ++++++++++++++ 10 files changed, 33 insertions(+) create mode 160000 service/src/leap.auth create mode 160000 service/src/leap.common create mode 160000 service/src/leap.keymanager create mode 160000 service/src/leap.mail create mode 160000 service/src/leap.soledad.client create mode 160000 service/src/leap.soledad.common create mode 160000 service/src/leap.soledad.server create mode 100644 service/src/pip-delete-this-directory.txt diff --git a/service/pixelated/adapter/mailstore/leap_mailstore.py b/service/pixelated/adapter/mailstore/leap_mailstore.py index 6cbbe10a..72a16dfa 100644 --- a/service/pixelated/adapter/mailstore/leap_mailstore.py +++ b/service/pixelated/adapter/mailstore/leap_mailstore.py @@ -29,6 +29,9 @@ from pixelated.support import log_time_deferred from pixelated.support.functional import to_unicode +MIME_PGP_KEY = 'application/pgp-keys' + + class AttachmentInfo(object): def __init__(self, ident, name, encoding=None, ctype='application/octet-stream', size=0): self.ident = ident @@ -322,10 +325,14 @@ class LeapMailStore(MailStore): mbox_uuid = message.get_wrapper().fdoc.mbox_uuid mbox_name = yield self._mailbox_name_from_uuid(mbox_uuid) attachments = self._extract_attachment_info_from(message) + attachments = self._filter_keys(attachments) mail = LeapMail(mail_id, mbox_name, message.get_wrapper().hdoc.headers, set(message.get_tags()), set(message.get_flags()), body=body, attachments=attachments) # TODO assert flags are passed on defer.returnValue(mail) + def _filter_keys(self, attachments): + return filter(lambda attachment: attachment.ctype != MIME_PGP_KEY, attachments) + @defer.inlineCallbacks def _raw_message_body(self, message): content_doc = (yield message.get_wrapper().get_body(self.soledad)) diff --git a/service/src/leap.auth b/service/src/leap.auth new file mode 160000 index 00000000..89cb3a5e --- /dev/null +++ b/service/src/leap.auth @@ -0,0 +1 @@ +Subproject commit 89cb3a5e36bf3f243b55148e58e48e1a91923d3e diff --git a/service/src/leap.common b/service/src/leap.common new file mode 160000 index 00000000..eb65db3e --- /dev/null +++ b/service/src/leap.common @@ -0,0 +1 @@ +Subproject commit eb65db3e4a7e0d5f42fb7269b98aed6fc59788b9 diff --git a/service/src/leap.keymanager b/service/src/leap.keymanager new file mode 160000 index 00000000..f77d42a2 --- /dev/null +++ b/service/src/leap.keymanager @@ -0,0 +1 @@ +Subproject commit f77d42a25b135e4d11546afde48c24e304ca62d1 diff --git a/service/src/leap.mail b/service/src/leap.mail new file mode 160000 index 00000000..f303fd99 --- /dev/null +++ b/service/src/leap.mail @@ -0,0 +1 @@ +Subproject commit f303fd99f2f7ff59c24fe34094a91ac17e17649b diff --git a/service/src/leap.soledad.client b/service/src/leap.soledad.client new file mode 160000 index 00000000..2eb96f7f --- /dev/null +++ b/service/src/leap.soledad.client @@ -0,0 +1 @@ +Subproject commit 2eb96f7f3cb35e48c87af1452749e413a59ffa68 diff --git a/service/src/leap.soledad.common b/service/src/leap.soledad.common new file mode 160000 index 00000000..2eb96f7f --- /dev/null +++ b/service/src/leap.soledad.common @@ -0,0 +1 @@ +Subproject commit 2eb96f7f3cb35e48c87af1452749e413a59ffa68 diff --git a/service/src/leap.soledad.server b/service/src/leap.soledad.server new file mode 160000 index 00000000..2eb96f7f --- /dev/null +++ b/service/src/leap.soledad.server @@ -0,0 +1 @@ +Subproject commit 2eb96f7f3cb35e48c87af1452749e413a59ffa68 diff --git a/service/src/pip-delete-this-directory.txt b/service/src/pip-delete-this-directory.txt new file mode 100644 index 00000000..c8883ea9 --- /dev/null +++ b/service/src/pip-delete-this-directory.txt @@ -0,0 +1,5 @@ +This file is placed here by pip to indicate the source was put +here by pip. + +Once this package is successfully installed this source code will be +deleted (unless you remove this file). diff --git a/service/test/integration/test_leap_mailstore.py b/service/test/integration/test_leap_mailstore.py index 885aa62b..f52d7c9c 100644 --- a/service/test/integration/test_leap_mailstore.py +++ b/service/test/integration/test_leap_mailstore.py @@ -49,6 +49,19 @@ class LeapMailStoreTest(SoledadTestBase): self.assertEqual(expected_mail_dict['header'], mail.as_dict()['header']) self.assertEqual(expected_mail_dict['header'], fetched_mail.as_dict()['header']) + @defer.inlineCallbacks + def test_remove_key_from_attachments(self): + input_mail = MIMEMultipart() + input_mail.attach(MIMEText(u'a utf8 message', _charset='utf-8')) + attachment = MIMEApplication('pretend to be binary attachment data') + attachment.add_header('Content-Disposition', 'attachment', filename='pub.key') + attachment.replace_header('Content-Type', 'application/pgp-keys') + input_mail.attach(attachment) + + mail = yield self.mail_store.add_mail('INBOX', input_mail.as_string()) + fetched_mail = yield self.mail_store.get_mail(mail.ident, include_body=True) + self.assertEquals(fetched_mail.as_dict().get('attachments'), []) + @defer.inlineCallbacks def test_round_trip_through_soledad_keeps_attachment(self): input_mail = MIMEMultipart() @@ -59,6 +72,7 @@ class LeapMailStoreTest(SoledadTestBase): mail = yield self.mail_store.add_mail('INBOX', input_mail.as_string()) fetched_mail = yield self.mail_store.get_mail(mail.ident, include_body=True) + self.assertDictEqual(mail.as_dict(), fetched_mail.as_dict()) @defer.inlineCallbacks def test_all_mails(self): -- cgit v1.2.3