| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
this right!).
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
MM2.1. Specifically,
__opendb(): The on-the-fly conversion of db entries had two bugs:
First, it was comparing the id instead of the entry type. Second, it
wasn't aware of len==4 SUBSCRIPTION entries.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
digests. Specifically,
lheader() -> oneline(): Also, get rid of **kws since we're not going
to use these. Catch any LookupError or UnicodeError that may occur,
but do the .encode() with 'replace' for a better chance to succeed.
send_i18n_digests(): Use Utils.wrap() to wrap the subject headers, and
also in the kept headers in plain text digests. Eliminate the blank
line between subjects in the ToC.
|
| |
|
|
|
|
|
|
|
|
|
| |
_dispose(): Set the msgdata's pipeline attribute to the pipeline list
before calling _dopipeline(). If there's no more to do, delete this
attribute. This way, if one of the modules throws an exception, we'll
resume the next delivery attempt at that module. (E.g. if we unshunt
it later).
_dopipeline(): Add a bare except which pushes the failing module back
on the front of the pipeline list, then re-raises the exception.
|
| |
|
|
| |
a round trip through flattening.
|
| |
|
|
| |
stringify it before calling .splitlines().
|
| | |
|
| | |
|
| |
|
|
| |
has dots in it, so treat this the same as an ImportError.
|
| |
|
|
|
| |
calculating the verp header, we log a message and skip this recipient,
because we can't possibly deliver to this person via verp.
|
| | |
|
| | |
|
| |
|
|
| |
the site list doesn't exist.
|
| |
|
|
| |
user's SuppressPasswordReminder flag.
|
| |
|
|
|
|
|
| |
which does not accept the strict flag to mimetypes.guess_type().
main(): If guess_type() returns None, use text/html so that the
private archive summary page displays correctly.
|
| |
|
|
|
|
|
|
| |
cookie problem. We can't use the Cookie module to parse the cookie
because it's too strict in what it accepts. Parse it ourselves using
re.split().
Should close SF bug # 664466.
|
| | |
|
| | |
|
| |
|
|
| |
text. You can't splitlines None.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
interpolation, log a message to logs/error so it's a little easier to
debug.
|
| | |
|
| | |
|
| |
|
|
| |
it's one of the valid language.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
http://online.securityfocus.com/archive/1/308154
Closes SF bug # 674533 by Tokio Kikuchi
Specifically,
main(), loginpage(): Check the `user' cgi var for validity and print
an innocuous (and non-privacy leaking) message if it fails that test.
Don't pass the entire cgidata object to loginpage; instead give just
the language argument which is all the latter function uses.
Also, be sure to use `safeuser' everywhere we print a message to the
results page. safeuser is the escaped version of the `user' cgi var.
Unrelated:
main(): Sanity check the `language' cgi variable and use the mailing
lists's preferred language if it is deliberately invalid.
|
| |
|
|
| |
successfully called makedirs().
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I've modified it though, so any brokenness is my fault. Specifically,
KEEP: Removed in favor of Default.py.in's MIME_DIGEST_KEEP_HEADERS.
process(): Use Generator.flatten() instead of the deprecated __call__
syntax.
send_i18n_digest(): Make sure things like the Subject headers in the
toc are coerced to the language the digest is being sent in (i.e. the
list's preferred language). Make sure the masthead, header and footer
attachments also get the right matching charset attribute. Make sure
that the username extracted from the From header is also in the right
character set. Use the Header object for proper wrapping of the
Subject lines in the toc, not Utils.wrap() which was broken and not
i18n aware.
Add a blank line between entries in the toc (might be controversial).
Send messages in the plain text digest through the scrubber so
attachments (and their MIME goo) don't mess up the plain text digests.
lheader(): New convenience function.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
even after adding the prefix. Specifically,
uheader(): Accepts a continuation_ws parameter which is passed
straight through to the Header constructor call.
prefix_subject(): Split the pre-prefixed Subject: header into lines
and get the continuation_ws character from the first continuation line
(it won't matter if there is no continuation line). Pass this to
uheader().
|
| |
|
|
|
|
|
|
| |
so I've renamed it to PLAIN_DIGEST_KEEP_HEADERS.
MIME_DIGEST_KEEP_HEADERS: Added this for use in ToDigest.py -- it's
essentially a copy of the KEEP module global from that module (which
will be removed).
|
| | |
|
| |
|
|
|
|
| |
this better.
Whitespace normalization.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
guess_all_extensions(): Python 2.1 doesn't have mimetypes.common_types.
guess_extension(): all could be empty.
process(): Need separate try/except clauses for the conversion to
unicode, and the conversion to 8-bit strings.
Also, use endswith() instead of t[-1] to be more robust against empty
strings.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to fix the other scrubber bugs, and use better Message API.
Specifically,
guess_extension(): Use mimetypes.guess_all_extensions() to try to find
a match between the claimed extension and the claimed content-type.
If they match, then just believe it, otherwise, use the first
extension guessed. We can still get weird ones because mimetypes has
no notion of a priority of mappings from extension to type.
process(): Everywhere we set a part's payload to the "scrubbed"
message text, first delete the Content-Type header, allowing
set_payload() with a character set to set the header, along with the
proper charset parameter.
|
| |
|
|
| |
normalization.
|
| |
|
|
| |
deprecated .get_type() method.
|
| |
|
|
| |
the year is weird (e.g. 1969). Also, code cleanup.
|
| | |
|
| | |
|