| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
#114136, Jitterbug PR#159, this changes the password generation scheme
to use more mnemonically friendly syllables. Passwords are composed
of only lower case letters, are lengthened to 6 characters, and should
still be meaningfully hard to crack.
Examples:
doangu
siabdo
poesza
unorbi
ziurag
okasho
ahhuoz
idcaih
efkoex
zubasu
nukiis
igoffa
veehef
ogkuoc
adebab
ovtoci
veixep
amodbo
|
| |
|
|
| |
implementations of hexlify and unhexlify from the binascii module.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
response to SF Bug #110753. Specifically,
GetNestingLevel(): removed
ScriptURL(): New utility function to calculate relative and absolute
urls. The basic approach is this:
1. figure out where we are by using REQUEST_URI or
SCRIPTNAME+PATH_INFO if that isn't defined in our environment.
2. figure out what the Mailman base url is by taking the `path'
component of a urlparse() of the list's web_page_url configvar
or DEFAULT_URL if that isn't provided in the arguments.
3. calculate what the relative path is from where we are to
baseurl; express this as a string of ../'s
4. tack on the relative url to where we want to go, i.e. the
target
Elaborations: Optional `absolute' if set always calculates the
absolute url as web_page_url/DEFAULT_URL + target. absolute should
only be set when generating urls for emails.
mm_cfg.CGIEXT is always tacked onto the end, meaning target is
supposed to be just the script name and nothing else (anything else
should be concatenated onto the return value of this function).
|
| | |
|
| |
|
|
|
|
| |
output file, whether a trailing newline should be printed, and the
separator string. (Sidenote: this is partly to play with some
suggestions currently being floated on the python-dev mailing list).
|
| |
|
|
| |
twice faster.
|
| |
|
|
| |
performance improvements.
|
| |
|
|
| |
and decoding.
|
| |
|
|
| |
disgusting hack).
|
| |
|
|
|
|
| |
function to call with no arguments, every time through the while
loop. This lets callers, e.g. keep a lock fresh while waiting for all
the children to finish.
|
| |
|
|
| |
so other scripts can use it.
|
| |
|
|
|
|
| |
locking were just too messed up to use. And good 'ol built-in map()
is fine anyway. It's only used in one place currently --
handle_opts.py -- and that is soon to be changed.
|
| |
|
|
|
| |
config.db.last file exists (see new fallback mechanism in
MailList.Load()).
|
| |
|
|
| |
map_maillists(): Slight more "standard" use of import.
|
| |
|
|
|
|
| |
list_names(): Use list_exists().
GetNestingLevel(): Use string.count() for counting.
Changed to explicit "from Mailman import" where appropriate.
|
| |
|
|
|
|
| |
Utils.reraise() hack.
reraise(): removed.
|
| | |
|
| | |
|
| |
|
|
|
| |
because for some reason IE5 seems to corrupt the former under at least
some situations.
|
| |
|
|
|
| |
SnarfMessage(): Removed all these functions, since they are no longer
used.
|
| | |
|
| |
|
|
| |
needs to be integrated with the message pipeline architecture.
|
| |
|
|
|
|
|
|
|
|
| |
DeliverToUser(): keep a global list of child processes we create so
that they can be reaped later.
Reap(): wait on the subchildren an remove from the _children global
all that are finished. This should eliminate zombie processes.
some debugging turds are still left in here, commented out
|
| |
|
|
| |
1.5.2-ism. Here's a more portable implementation.
|
| |
|
|
|
|
|
| |
maketext(): Use SafeDict class to make sure that key interpolation in
the template can't raise an exception, even if someone's edited the
template and included missing keys. Patch inspired by Sean
Reifschneider <jafo@tummy.com>
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Utils.DeliverToUser(): Don't add a Date: header even if one is missing
in the message. The MTA will always insert an RFC822 compliant header
(and we weren't compliant anyway).
|
| |
|
|
|
|
| |
needed. For now, however (trying to move towards 1.0), I've merely
reduced the amount of work done in the child, and wrapped it in a
try: clause for catching fork() failures.
|
| |
|
|
| |
smtplib.sendmail() can raise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MailList.py:
Changed MailList.SetUserOption() to take a `save_list' keyword
argument (defaulting to true). When false, SetUserOption won't do
self.Save() after changing the option.
New function MailList.ApprovedAddMembers() (note plural) that takes
a list of prospective new list members (and possibly a list of
corresponding passwords), and does _all_ the necessary list changes
before saving the list configuration. Empty passwords are
substituted with randomly generated ones. Returns a dict with
{address: exception_tuple} entries -- exception_tuple is either None
or a two-element tuple containing the first exception type and value
raised when trying to add address. The exception traceback object
isn't included in the returned dict, because a) I don't think it is
very useful for the relevant exceptions, and b) using it wrongly
could cause some fuzz with Python's garbage collector -- i.e. we
would leak memory.
Changed MailList.ApprovedAddMember() to be a mere wrapper, calling
the new ApprovedAddMembers() function and reraising any exception in
the returned dict.
Also made the logic of the code doing subject prefixing a bit
clearer, and changed MailList.aside_new() so that list's config.db
files are saved with umask 007 (as they contain all list members'
passwords in clear text).
Utils.py:
New function MakeRandomPassword(length=4), used by
MailList.ApprovedAddMembers() whenever empty passwords are found.
The default random password length should possibly be made site
configurable.
Also, fixed an error in the _badchars regular expression -- the
final "," was probably meant to be inside the character set.
Cgi/admin.py:
Changed ChangeOptions() to use the new MailList.ApprovedAddMembers()
function.
|
| |
|
|
|
| |
Mailman.pythonlib so we're sure we're getting the latest and greatest
version of this module.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
letters.
|
| |
|
|
|
|
|
|
|
|
| |
calling CGI script was invoked with.
Uses (non-standard, but convenient) environment variable REQUEST_URI
when available, otherwise SCRIPT_NAME and PATH_INFO (which are part
of the CGI/1.1 spec) if available, or simply returns optional
argument `fallback' (which defaults to None).
Cgi/admin.py, Cgi/admindb.py: Use it when generating admin
authentication page.
|
| |
|
|
|
| |
failure: the value is only printed if it's not false (e.g. None), and
the deferred status is printed as well.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cleaned up its interface so that it always raises an exception if an
address problem is uncovered (it used to both raise exceptions and
return 0 or 1). It now has no useful return value.
Added a re to barf on other unacceptable characters in an email
address, currently: [ ] ( ) < > | ;
Should there be others? The test that were there are retained, but the
domain_parts test was cleaned up (there was a redundant test in
there).
Note that now unqualified addresses (e.g. those that don't contain an
`@' are now DISALLOWED). This goes partially toward Greg Stein's
suggestion.
|
| |
|
|
|
|
| |
default arg value because then this module can't be imported in older
versions of Mailman. Use None in the arglist, and set to the proper
value when None is detected.
|
| |
|
|
|
|
| |
when exc is not None.
open_ex(): Use reraise().
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
got a false positive for a message that had the last line of a
paragraph (hence, short enough to look like administrivia) begin with
'set'.
- Require all 3 arguments (for some reason it was requiring 2 or 3,
while MailCommandHandler seems to clearly require 3 - perhaps we
want to catch malformed administrivia, i'm just assuming not)
- Require second arg of set command matches to be 'on' or 'off'.
I guess administrivia is a delicate balance between weeding out
non-administrivia and catching mis-directed admin messages, even ones
that were badly formed. I'm inclined to opt for greater stingency, at
the risk of not catching malformed and misdirected admin messages.
Tough luck, the misguided poster will have to change their password.
(I bet i get stung by this one day, myself...)
|
| |
|
|
|
|
|
|
|
|
| |
addresses from lines such as
User J. Person <person@allusers.com>
person@allusers.com (User J. Person)
It also handles bare email addresses. While this is rather simplistic
regexp matching, I think it will catch most situations.
|
| |
|
|
| |
1.5.1's bare raise statement
|
| |
|
|
| |
and put the child code in the block of the `if'.
|
| |
|
|
|
|
|
|
|
|
| |
referenced; these should be Errors.
This was in response to an attempt to subscribe a list to itself by
sending an subscribe email command and faking the From: field. Now we
don't get a crash, but I'm not sure the current behavior is correct.
The address (properly) doesn't get subscribed, but a message stating
this *is* sent to the list!
|
| |
|
|
|
| |
then check to see if the remote SMTP supports DSN. If so, we'll add
the NOTIFY=failure to the receipt options.
|