| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bogus apparent messages into the error log, possibly inducing an admin to
visit a phishing site.
- options.py
Topics.py
Tagger.py
MailList.py
Utils.py
Version.py
versions.py
The processing of Topics regular expressions has changed. Previously the
Topics regexp was compiled in verbose mode but not documented as such
which caused some confusion. Also, the documentation indicated that topic
keywords could be entered one per line, but these entries were not
properly. Topics regexps are now compiled in non-verbose mode and multi-
line entries are 'ored'. Existing Topics regexps will be converted when
the list is updated so they will continue to work.
|
| |
|
|
| |
outside the character set of the list's language.
|
| |
|
| |
Added more test cases.
|
| |
|
|
| |
even if you got to the message from a subject, date or author index, previous
and next are still by thread.
|
| |
|
|
|
|
|
|
| |
Added 'automate' option to be 'quiet' but still send admin notice.
- admindbdetails.html
Changed 'Approve' wording to 'Approve/Accept' for consistency with
button labels.
|
| |
|
|
|
|
|
|
| |
Added pretty printing.
- dumpdb
Fixed to once again dump marshals.
Converted to use optparse.
Did not convert to mmshell framework because it's not compatible with 'interactive' usage.
|
| |
|
| |
of variables imported from mm_cfg.
|
| |
|
|
| |
email.message_from_string(text, Message.Message)
(Sourceforge is migrating from 1.x - scary)
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mailman
top level package. Rewrote the test runner and stuck it in bin (as an
mmshell
symlink). bin/testall now autodetects tests and allows running a
subset of
tests via regular expression filtering.
I also fixed all the tests so they all pass now, with the exception of
test_message.py tests. These still doesn't work because of coordination
issues between its smtpd-based reader and SMTPDirect, but... I have a
plan
(mwah, ha, ha! :)
I also fixed a code update bug in Decorate.py
|
| |
|
|
| |
- Handlers/CalcRecips.py - Changed to not process topics if topics
are disabled for the list.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
require Python to be at least 2.3.0
Convert all scripts/* scripts (except driver) to use the
symlink-to-bin/mmshell trick.
For now (since we're debugging more often than releasing), set STEALTH_MODE to
False in scripts/driver. We need to remember to turn this back to True when
we start getting closer to releases!
In the various scripts, er, Mailman/bin scripts, convert them to $-strings for
i18n substitution, and clean up imports. Also, get rid of the crufty Emacs
-*- line, which is no longer needed now that the files end in .py.
Get rid of lots of unnecessary svn:executable properties.
Remove an unnecessary import from Mailman/bin/disabled.py
|
| |
|
|
| |
- Added test cases for above.
|
| |
|
|
|
| |
conversion to optparse style option parsing. Remove mailpasswds as password
reminders will go away for MM2.2.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
after this commit, I have to fix the filename of
Mailman/bin/show_qfiles because of silly svn restrictions.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
use $-strings and optparse.
A side effect of the rewrite is that list_members -d and -n now require their
argument, whereas before they were optional (but that is counter to command
line parsing standards and not supported by optparse). Now, instead of bare
-n use '-n any' and instead of bare -d use '-d any'.
Fix ReopenableFileHandler.emit() to ensure that all lines end in a newline.
In i18n.py, create and use a subclass of string.Template so that dotted
attribute paths are legal in $-strings. So for example, if you have an object
'foo' in one of the namespaces and that has an attribute 'bar', you can say
"$foo.bar" to print the value of foo.bar. Should reduce the number of
extraneous local variables just to do the attribute path traversal.
|
| |
|
|
|
|
|
|
|
|
| |
use optparse. Update newlist and rmlist to get their version string entirely
from mm_cfg.MAILMAN_VERSION instead of having to build that string up each
time.
Fix the symlink source in the Makefile.in.
Remove b4b5-archfix entirely.
|
| |
|
|
|
|
|
|
|
|
|
| |
- Remove the LogStdErr() calls from all the scripts/* scripts.
- Convert the LockFile.py code to use the logging logs. Also do general code
cleanup in this module. Note that the 'withlogging' argument to __init__()
has been removed, as we can use logging's mechanisms to control how much of
LockFile will get logged (by default, not much).
- Add the 'mailman.locks' logger to loginit.py
- Remove Mailman/Handlers/Sendmail.py once and for all
- Remove LIST_LOCK_DEBUGGING from Defaults.py.in
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Modify Mailman.i18n._() to understand string.Template style $-strings. The
function now looks in the frame's locals and globals for a variable
__i18n_templates__ which if True (defaults to False if missing) says that the
string being translated uses $-strings instead of %-strings.
newlist and rmlist both set __i18n_templates__ = True in their module
globals.
Rewrite ReopenableFileHandler to better ensure that nothing we log (even
random 8-bit garbage) can cause an error in the logging subsystem. First, we
open the underlying log file using a utf-8 codec, but if we get a UnicodeError
when writing a log message to the stream, we encode the string with the
'string-escape' codec, which should pretty much makes any string data
loggable.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
an uber-shell (called mmshell for now for lack of a better name). The reason
I'm doing this is because while I understand and still accept the reason for
it, I really hate having to re-run configure (or config.status) every time I
make a change to a bin script. mmshell looks at argv[0] to figure out which
Mailman.bin module to run.
Move newlist and rmlist to the new framework, but also, rewrite newlist to use
optparse instead of getopt. Much nicer. Also convert it to use $variables
for i18n even though the i18n._() function hasn't yet been updated to handle
these (it will soon). rmlist hasn't yet been optparse-ified, but that's soon
too. :)
|
| |
|
|
|
|
| |
* Defaults.py.in: Added Vietnamese to LANGUAGE_DICT.
|
| |
|
|
|
|
|
|
|
|
|
| |
I didn't update cron/mailpasswds because that is going away. cron/disabled
and cron/gate_news are only minimally tested.
- Instead of using the RotatingFileHandler for our logs, use our own
ReopenableFileHandler, which only minimally derives from FileHandler and
implements a reopen() method. I think it's generally better to leave file
rotation to external tools such as logrotate.
- Remove some Python 2.1 compatibility stuff.
- Ignore .mo files in messages/vi/LC_MESSAGES
|
| | |
|
| |
|
| |
message that Mailman adds to the admin notification.
|
| |
|
|
| |
Mailman/Makefile.in: Remove Logging subdirectory.
|
| |
|
|
|
|
| |
the builtin types. Two still remain: a check against ClassType and a check
against MethodType. Also, fix some hinky type comparisons to use isinstance()
consistently.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
traces of our crufty old Syslog. Most of this work was purely mechanical,
except for:
1) Initializing the loggers. For this, there's a new module
Mailman/loginit.py (yes all modules from now on will use PEP 8
names). We can't call this 'logging.py' because that will
interfere with importing the stdlib module of the same name (can
you say Python 2.5 and absolute imports?).
If you want to write log messages both to the log file and to
stderr, pass True to loginit.initialize(). This will turn on
propagation of log messages to the parent 'mailman' logger, which
is set up to print to stderr. This is how bin/qrunner works when
not running as a subprocess of mailmanctl.
2) The driver script. I had to untwist the StampedLogger stuff and
implement differently printing exceptions and such to log/error
because standard logging objects don't have a write() method. So
we write to a cStringIO and then pass that to the logger.
3) SMTPDirect.py because of the configurability of the log messages.
This required changing SafeDict into a dict subclass (which is
better than using UserDicts anyway -- yay Python 2.3!). It's
probably still possible to flummox things up if you change the
name of the loggers in the SMTP_LOG_* variables in mm_cfg.py.
However, the worst you can do is cause output to go to stderr and
not go to a log file.
Note too that all entry points into the Mailman system must call
Mailman.loginit.initialize() or the log output will go to stderr
(which may occasionally be what you want). Currently all CGIs and
qrunners should be working properly.
I wish I could have tested all code paths that touch the logger, but
that's infeasible. I have tested this, but it's possible that there
were some mistakes in the translation.
- Mailman.Bouncers.BounceAPI.Stop is a singleton, but not a class
instance any more.
- True/False code cleanup, PEP 8 import restructuring, whitespace
normalization, and copyright year updates, as appropriate.
|
| |
|
|
|
|
|
|
|
|
|
| |
- Remove True/False binding cruft
- Remove __future__ statements for nested scopes
- Remove ascii_letters import hack from Utils.py
- Remove mimetypes.guess_all_extensions import hack from Scrubber.py
- In Pending.py, set _missing to object() (better than using [])
Also, update copyright years where appropriate, and re-order imports more to
my PEP 8 tastes. Whitespace normalize.
|
| |
|
|
|
| |
the trunk. This serves also to test write permission to the svn
repository, and tests email notifications.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
email addresses
and regular expressions matching email addresses whose subscriptions are exempt
from admin approval. RFE 403066.
|
| |
|
|
| |
local_part of the From: address as a 'real name' in the To: header when replying.
|
| |
|
|
| |
get_domain() if VIRTUAL_HOST_OVERVIEW off.
|
| |
|
|
| |
instead of DEFAULT_URL_HOST if VIRTUAL_HOST_OVERVIEW was off.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
from Message.py
|
| |
|
|
| |
Added some more test cases.
|
| |
|
|
|
|
|
| |
so one all pattern sets are tried until a match is found so one start pattern whose
address doesn't match won't preempt a later patern set that will match.
Added more test cases.
|