diff options
| author | J08nY | 2017-06-22 14:16:15 +0200 |
|---|---|---|
| committer | J08nY | 2017-06-22 14:16:15 +0200 |
| commit | 1683c0e288d65d2cb99c118a98f8b581ebd492dc (patch) | |
| tree | d94e5f3c515db42920c79aeff7f5b20049f4301c /src/mailman_pgp/rules/signature.py | |
| parent | 2da30c19dbb5b3bac05d7db759091dd16447aa01 (diff) | |
| download | mailman-pgp-1683c0e288d65d2cb99c118a98f8b581ebd492dc.tar.gz mailman-pgp-1683c0e288d65d2cb99c118a98f8b581ebd492dc.tar.zst mailman-pgp-1683c0e288d65d2cb99c118a98f8b581ebd492dc.zip | |
Diffstat (limited to 'src/mailman_pgp/rules/signature.py')
| -rw-r--r-- | src/mailman_pgp/rules/signature.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/mailman_pgp/rules/signature.py b/src/mailman_pgp/rules/signature.py new file mode 100644 index 0000000..28d05e4 --- /dev/null +++ b/src/mailman_pgp/rules/signature.py @@ -0,0 +1,70 @@ +# 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 <http://www.gnu.org/licenses/>. + +"""""" + +from mailman.core.i18n import _ +from mailman.interfaces.rules import IRule +from public import public +from zope.interface import implementer + +from mailman_pgp.database import query +from mailman_pgp.model.list import EncryptedMailingList +from mailman_pgp.pgp.wrapper import PGPWrapper + + +@public +@implementer(IRule) +class Signature: + """""" + + name = 'signature' + + description = _( + """ + """) + + record = True + + def _record_action(self, msgdata, action, sender, reason): + msgdata['moderation_action'] = action + msgdata['moderation_sender'] = sender + msgdata.setdefault('moderation_reasons', []).append(reason) + + def check(self, mlist, msg, msgdata): + """See `IRule`.""" + enc_list = query(EncryptedMailingList).filter_by( + list_id=mlist.list_id).first() + if enc_list is None: + raise ValueError('Encrypted mailing list not found.') + wrapped = PGPWrapper(msg) + + if not wrapped.is_signed(): + action = enc_list.unsigned_msg_action + if action is not None: + self._record_action(msgdata, action, msg.sender, + 'The message is unsigned.') + return True + + if wrapped.is_inline_signed(): + action = enc_list.inline_pgp_action + if action is not None: + self._record_action(msgdata, action, msg.sender, + 'Inline PGP is not allowed.') + return True + + # TODO finish this
\ No newline at end of file |
