From 4e4f91d64e32ccd601cb86fbb2a30bf3db3acf24 Mon Sep 17 00:00:00 2001 From: J08nY Date: Fri, 4 Aug 2017 00:31:13 +0200 Subject: Only use the PGP delivery on messages that are a list posting. --- src/mailman_pgp/chains/default.py | 1 + src/mailman_pgp/mta/deliver.py | 2 +- src/mailman_pgp/mta/tests/test_deliver.py | 6 ++++-- src/mailman_pgp/rules/mark.py | 36 +++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 src/mailman_pgp/rules/mark.py diff --git a/src/mailman_pgp/chains/default.py b/src/mailman_pgp/chains/default.py index 314d8b8..7806a6e 100644 --- a/src/mailman_pgp/chains/default.py +++ b/src/mailman_pgp/chains/default.py @@ -35,6 +35,7 @@ class PGPChain: _link_descriptions = ( ('pgp-encryption', LinkAction.jump, 'moderation'), ('pgp-signature', LinkAction.jump, 'moderation'), + ('pgp-mark', LinkAction.defer, None), ('truth', LinkAction.jump, 'default-posting-chain') ) diff --git a/src/mailman_pgp/mta/deliver.py b/src/mailman_pgp/mta/deliver.py index 050a740..ef4713a 100644 --- a/src/mailman_pgp/mta/deliver.py +++ b/src/mailman_pgp/mta/deliver.py @@ -50,7 +50,7 @@ def deliver(mlist, msg, msgdata): bulk_agent = BulkDelivery pgp_list = PGPMailingList.for_list(mlist) - if pgp_list: + if pgp_list and msgdata.get('pgp_is_posting', False): personalized_agent = PGPPersonalizedDelivery bulk_agent = PGPBulkDelivery diff --git a/src/mailman_pgp/mta/tests/test_deliver.py b/src/mailman_pgp/mta/tests/test_deliver.py index 3b0594f..3406d02 100644 --- a/src/mailman_pgp/mta/tests/test_deliver.py +++ b/src/mailman_pgp/mta/tests/test_deliver.py @@ -72,13 +72,15 @@ Some text. """) def test_deliver(self): - msgdata = dict(recipients=['anne@example.org', 'bart@example.org']) + msgdata = dict(recipients=['anne@example.org', 'bart@example.org'], + pgp_is_posting=True) deliver(self.mlist, self.msg, msgdata) def test_deliver_no_key(self): with transaction(): self.pgp_anne.key = None - msgdata = dict(recipients=['anne@example.org', 'bart@example.org']) + msgdata = dict(recipients=['anne@example.org', 'bart@example.org'], + pgp_is_posting=True) with self.assertRaises(SomeRecipientsFailed) as err: deliver(self.mlist, self.msg, msgdata) self.assertEqual(err.exception.temporary_failures, diff --git a/src/mailman_pgp/rules/mark.py b/src/mailman_pgp/rules/mark.py new file mode 100644 index 0000000..eda9ecf --- /dev/null +++ b/src/mailman_pgp/rules/mark.py @@ -0,0 +1,36 @@ +# Copyright (C) 2017 Jan Jancar +# +# This file is a part of the Mailman PGP plugin. +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see . + +"""""" +from mailman.interfaces.rules import IRule +from public import public +from zope.interface import implementer + + +@public +@implementer(IRule) +class MarkPosting: + """""" + + name = 'pgp-mark' + description = '' + record = False + + def check(self, mlist, msg, msgdata): + """See `IRule`.""" + msgdata['pgp_is_posting'] = True + return False -- cgit v1.2.3-70-g09d2