diff options
Diffstat (limited to 'Mailman/Handlers')
| -rw-r--r-- | Mailman/Handlers/Cleanse.py | 4 | ||||
| -rw-r--r-- | Mailman/Handlers/CookHeaders.py | 18 | ||||
| -rw-r--r-- | Mailman/Handlers/Scrubber.py | 11 |
3 files changed, 21 insertions, 12 deletions
diff --git a/Mailman/Handlers/Cleanse.py b/Mailman/Handlers/Cleanse.py index d84f988e3..bf25a4591 100644 --- a/Mailman/Handlers/Cleanse.py +++ b/Mailman/Handlers/Cleanse.py @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2007 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2008 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -54,3 +54,5 @@ def process(mlist, msg, msgdata): del msg['x-confirm-reading-to'] # Pegasus mail uses this one... sigh del msg['x-pmrqc'] + # Don't let this header be spoofed. See RFC 5064. + del msg['archived-at'] diff --git a/Mailman/Handlers/CookHeaders.py b/Mailman/Handlers/CookHeaders.py index cb14853d5..4797de62b 100644 --- a/Mailman/Handlers/CookHeaders.py +++ b/Mailman/Handlers/CookHeaders.py @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2007 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2008 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -26,7 +26,7 @@ from email.Utils import parseaddr, formataddr, getaddresses from Mailman import Utils from Mailman import Version -from Mailman.app.archiving import get_base_archive_url +from Mailman.app.archiving import get_archiver from Mailman.configuration import config from Mailman.i18n import _ from Mailman.interfaces import Personalization, ReplyToMunging @@ -200,6 +200,7 @@ def process(mlist, msg, msgdata): 'List-Unsubscribe': subfieldfmt % (listinfo, mlist.leave_address), 'List-Subscribe' : subfieldfmt % (listinfo, mlist.join_address), }) + archiver = get_archiver() if msgdata.get('reduced_list_headers'): headers['X-List-Administrivia'] = 'yes' else: @@ -208,10 +209,17 @@ def process(mlist, msg, msgdata): headers['List-Post'] = '<mailto:%s>' % mlist.posting_address # Add this header if we're archiving if mlist.archive: - archiveurl = get_base_archive_url(mlist) - if archiveurl.endswith('/'): - archiveurl = archiveurl[:-1] + archiveurl = archiver.get_list_url(mlist) headers['List-Archive'] = '<%s>' % archiveurl + # XXX RFC 2369 also defines a List-Owner header which we are not currently + # supporting, but should. + # + # Draft RFC 5064 defines an Archived-At header which contains the pointer + # directly to the message in the archive. If the currently defined + # archiver can tell us the URL, go ahead and include this header. + archived_at = archiver.get_message_url(mlist, msg) + if archived_at is not None: + headers['Archived-At'] = archived_at # First we delete any pre-existing headers because the RFC permits only # one copy of each, and we want to be sure it's ours. for h, v in headers.items(): diff --git a/Mailman/Handlers/Scrubber.py b/Mailman/Handlers/Scrubber.py index 6946de7f4..fb1b6e602 100644 --- a/Mailman/Handlers/Scrubber.py +++ b/Mailman/Handlers/Scrubber.py @@ -1,4 +1,4 @@ -# Copyright (C) 2001-2007 by the Free Software Foundation, Inc. +# Copyright (C) 2001-2008 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -35,7 +35,7 @@ from mimetypes import guess_all_extensions from Mailman import Utils from Mailman.Errors import DiscardMessage -from Mailman.app.archiving import get_base_archive_url +from Mailman.app.archiving import get_archiver from Mailman.configuration import config from Mailman.i18n import _ @@ -490,10 +490,9 @@ def save_attachment(mlist, msg, dir, filter_html=True): fp = open(path, 'w') fp.write(decodedpayload) fp.close() - # Now calculate the url - baseurl = get_base_archive_url(mlist) - # Private archives will likely have a trailing slash. Normalize. - if baseurl[-1] <> '/': + # Now calculate the url to the list's archive. + baseurl = get_archiver().get_list_url(mlist) + if not baseurl.endswith('/'): baseurl += '/' # Trailing space will definitely be a problem with format=flowed. # Bracket the URL instead. |
