summaryrefslogtreecommitdiff
path: root/src/mailman/rules/approved.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/rules/approved.py')
-rw-r--r--src/mailman/rules/approved.py11
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))