diff options
Diffstat (limited to 'src/mailman/rules/approved.py')
| -rw-r--r-- | src/mailman/rules/approved.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mailman/rules/approved.py b/src/mailman/rules/approved.py index 8981f9030..3e2b7bc83 100644 --- a/src/mailman/rules/approved.py +++ b/src/mailman/rules/approved.py @@ -17,7 +17,7 @@ """Look for moderator pre-approval.""" -from __future__ import absolute_import, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals __metaclass__ = type __all__ = [ @@ -26,7 +26,9 @@ __all__ = [ import re + from email.iterators import typed_subpart_iterator +from flufl.password import verify from zope.interface import implements from mailman.core.i18n import _ @@ -73,10 +75,12 @@ class Approved: break payload = part.get_payload(decode=True) if payload is not None: + charset = part.get_content_charset('us-ascii') + payload = payload.decode(charset, 'replace') line = '' lines = payload.splitlines(True) for lineno, line in enumerate(lines): - if line.strip() <> '': + if line.strip() != '': break if ':' in line: header, value = line.split(':', 1) @@ -115,7 +119,8 @@ class Approved: else: for header in HEADERS: del msg[header] - return password is not missing and password == mlist.moderator_password + return (password is not missing and + verify(mlist.moderator_password, password)) |
