summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Warsaw2008-12-27 23:26:32 -0500
committerBarry Warsaw2008-12-27 23:26:32 -0500
commit88af638c21e2b356ebd0d9e045a8d028dfb5aedd (patch)
tree9145645c4ae68abc45ffb7900ffebe84625df943
parent1ffa4c74935a56a3c5de736fab052e33e4ab3d38 (diff)
downloadmailman-88af638c21e2b356ebd0d9e045a8d028dfb5aedd.tar.gz
mailman-88af638c21e2b356ebd0d9e045a8d028dfb5aedd.tar.zst
mailman-88af638c21e2b356ebd0d9e045a8d028dfb5aedd.zip
-rw-r--r--mailman/archiving/mailarchive.py2
-rw-r--r--mailman/archiving/mhonarc.py2
-rw-r--r--mailman/docs/archivers.txt4
-rw-r--r--mailman/docs/styles.txt3
-rw-r--r--mailman/inject.py32
-rw-r--r--mailman/queue/command.py9
-rw-r--r--mailman/queue/docs/command.txt18
-rw-r--r--mailman/testing/testing.cfg5
8 files changed, 43 insertions, 32 deletions
diff --git a/mailman/archiving/mailarchive.py b/mailman/archiving/mailarchive.py
index ded402ab4..b6bf349a4 100644
--- a/mailman/archiving/mailarchive.py
+++ b/mailman/archiving/mailarchive.py
@@ -51,7 +51,7 @@ class MailArchive:
"""See `IArchiver`."""
if mlist.archive_private:
return None
- return urljoin(config.MAIL_ARCHIVE_BASEURL,
+ return urljoin(config.archiver.mail_archive.base_url,
quote(mlist.posting_address))
@staticmethod
diff --git a/mailman/archiving/mhonarc.py b/mailman/archiving/mhonarc.py
index c20c34ba0..6d6008214 100644
--- a/mailman/archiving/mhonarc.py
+++ b/mailman/archiving/mhonarc.py
@@ -83,7 +83,7 @@ class MHonArc:
"""See `IArchiver`."""
substitutions = config.__dict__.copy()
substitutions['listname'] = mlist.fqdn_listname
- command = Template(Defaults.MHONARC_COMMAND).safe_substitute(
+ command = Template(config.archiver.mhonarc.command).safe_substitute(
substitutions)
proc = subprocess.Popen(
command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
diff --git a/mailman/docs/archivers.txt b/mailman/docs/archivers.txt
index 529938d94..7ea9b1bd4 100644
--- a/mailman/docs/archivers.txt
+++ b/mailman/docs/archivers.txt
@@ -87,7 +87,7 @@ address at the Mail-Archive.
>>> from mailman.queue.outgoing import OutgoingRunner
>>> from mailman.testing.helpers import make_testable_runner
- >>> outgoing = make_testable_runner(OutgoingRunner)
+ >>> outgoing = make_testable_runner(OutgoingRunner, 'out')
>>> outgoing.run()
>>> from operator import itemgetter
@@ -167,7 +167,7 @@ Messages sent to a local MHonArc instance are added to its archive via a
subprocess call.
>>> archiver.archive_message(mlist, msg)
- >>> archive_log = open(os.path.join(config.LOG_DIR, 'archiver'))
+ >>> archive_log = open(os.path.join(config.LOG_DIR, 'mailman'))
>>> try:
... contents = archive_log.read()
... finally:
diff --git a/mailman/docs/styles.txt b/mailman/docs/styles.txt
index dd3aa8d07..6397666ae 100644
--- a/mailman/docs/styles.txt
+++ b/mailman/docs/styles.txt
@@ -47,7 +47,8 @@ would pick this up and apply it to the mailing list.
>>> print mlist.msg_footer
None
- >>> config.DEFAULT_MSG_FOOTER = u'default footer'
+ >>> from mailman import Defaults
+ >>> Defaults.DEFAULT_MSG_FOOTER = u'default footer'
>>> default_style.apply(mlist)
>>> mlist.msg_footer
u'default footer'
diff --git a/mailman/inject.py b/mailman/inject.py
index 763a161ff..1d9ece78a 100644
--- a/mailman/inject.py
+++ b/mailman/inject.py
@@ -26,23 +26,26 @@ from email import message_from_string
from email.utils import formatdate, make_msgid
from mailman.Message import Message
-from mailman.configuration import config
-from mailman.queue import Switchboard
+from mailman.config import config
-def inject_message(mlist, msg, recips=None, qdir=None):
+def inject_message(mlist, msg, recips=None, switchboard=None):
"""Inject a message into a queue.
:param mlist: The mailing list this message is destined for.
+ :type mlist: IMailingList
:param msg: The Message object to inject.
+ :type msg: a Message object
:param recips: Optional set of recipients to put into the message's
metadata.
- :param qdir: Optional queue directory to inject this message into. If not
- given, the incoming queue is used.
+ :type recips: sequence of strings
+ :param switchboard: Optional name of switchboard to inject this message
+ into. If not given, the 'in' switchboard is used.
+ :type switchboard: string
"""
- if qdir is None:
- qdir = config.INQUEUE_DIR
+ if switchboard is None:
+ switchboard = 'in'
# Since we're crafting the message from whole cloth, let's make sure this
# message has a Message-ID.
if 'message-id' not in msg:
@@ -50,7 +53,6 @@ def inject_message(mlist, msg, recips=None, qdir=None):
# Ditto for Date: as required by RFC 2822.
if 'date' not in msg:
msg['Date'] = formatdate(localtime=True)
- queue = Switchboard(qdir)
kws = dict(
listname=mlist.fqdn_listname,
tolist=True,
@@ -58,21 +60,25 @@ def inject_message(mlist, msg, recips=None, qdir=None):
)
if recips is not None:
kws['recips'] = recips
- queue.enqueue(msg, **kws)
+ config.switchboards[switchboard].enqueue(msg, **kws)
-def inject_text(mlist, text, recips=None, qdir=None):
+def inject_text(mlist, text, recips=None, switchboard=None):
"""Inject a message into a queue.
:param mlist: The mailing list this message is destined for.
+ :type mlist: IMailingList
:param text: The text of the message to inject. This will be parsed into
a Message object.
+ :type text: string
:param recips: Optional set of recipients to put into the message's
metadata.
- :param qdir: Optional queue directory to inject this message into. If not
- given, the incoming queue is used.
+ :type recips: sequence of strings
+ :param switchboard: Optional name of switchboard to inject this message
+ into. If not given, the 'in' switchboard is used.
+ :type switchboard: string
"""
message = message_from_string(text, Message)
message.original_size = len(text)
- inject_message(mlist, message, recips, qdir)
+ inject_message(mlist, message, recips, switchboard)
diff --git a/mailman/queue/command.py b/mailman/queue/command.py
index 986758ce1..407864310 100644
--- a/mailman/queue/command.py
+++ b/mailman/queue/command.py
@@ -40,6 +40,7 @@ from email.MIMEMessage import MIMEMessage
from email.MIMEText import MIMEText
from zope.interface import implements
+from mailman import Defaults
from mailman import Message
from mailman import Utils
from mailman.app.replybot import autorespond_to_sender
@@ -70,7 +71,7 @@ class CommandFinder:
elif msgdata.get('toleave'):
self.command_lines.append('leave')
elif msgdata.get('toconfirm'):
- mo = re.match(config.VERP_CONFIRM_REGEXP, msg.get('to', ''))
+ mo = re.match(Defaults.VERP_CONFIRM_REGEXP, msg.get('to', ''))
if mo:
self.command_lines.append('confirm ' + mo.group('cookie'))
# Extract the subject header and do RFC 2047 decoding.
@@ -99,8 +100,8 @@ class CommandFinder:
assert isinstance(body, basestring), 'Non-string decoded payload'
lines = body.splitlines()
# Use no more lines than specified
- self.command_lines.extend(lines[:config.EMAIL_COMMANDS_MAX_LINES])
- self.ignored_lines.extend(lines[config.EMAIL_COMMANDS_MAX_LINES:])
+ self.command_lines.extend(lines[:Defaults.EMAIL_COMMANDS_MAX_LINES])
+ self.ignored_lines.extend(lines[Defaults.EMAIL_COMMANDS_MAX_LINES:])
def __iter__(self):
"""Return each command line, split into commands and arguments.
@@ -141,7 +142,7 @@ The results of your email command are provided below.
class CommandRunner(Runner):
- QDIR = config.CMDQUEUE_DIR
+ """The email command runner."""
def _dispose(self, mlist, msg, msgdata):
message_id = msg.get('message-id', 'n/a')
diff --git a/mailman/queue/docs/command.txt b/mailman/queue/docs/command.txt
index ce4279fff..0b384de01 100644
--- a/mailman/queue/docs/command.txt
+++ b/mailman/queue/docs/command.txt
@@ -25,7 +25,7 @@ sender. The command can be in the Subject header.
... """)
>>> from mailman.inject import inject_message
- >>> inject_message(mlist, msg, qdir=config.CMDQUEUE_DIR)
+ >>> inject_message(mlist, msg, switchboard='command')
>>> from mailman.queue.command import CommandRunner
>>> from mailman.testing.helpers import make_testable_runner
>>> command = make_testable_runner(CommandRunner)
@@ -34,11 +34,11 @@ sender. The command can be in the Subject header.
And now the response is in the virgin queue.
>>> from mailman.queue import Switchboard
- >>> virgin_queue = Switchboard(config.VIRGINQUEUE_DIR)
+ >>> virgin_queue = config.switchboards['virgin']
>>> len(virgin_queue.files)
1
>>> from mailman.testing.helpers import get_queue_messages
- >>> item = get_queue_messages(virgin_queue)[0]
+ >>> item = get_queue_messages('virgin')[0]
>>> print item.msg.as_string()
Subject: The results of your email commands
From: test-bounces@example.com
@@ -78,11 +78,11 @@ message is plain text.
... echo foo bar
... """)
- >>> inject_message(mlist, msg, qdir=config.CMDQUEUE_DIR)
+ >>> inject_message(mlist, msg, switchboard='command')
>>> command.run()
>>> len(virgin_queue.files)
1
- >>> item = get_queue_messages(virgin_queue)[0]
+ >>> item = get_queue_messages('virgin')[0]
>>> print item.msg.as_string()
Subject: The results of your email commands
From: test-bounces@example.com
@@ -121,11 +121,11 @@ at by the command queue.
... echo baz qux
... """)
- >>> inject_message(mlist, msg, qdir=config.CMDQUEUE_DIR)
+ >>> inject_message(mlist, msg, switchboard='command')
>>> command.run()
>>> len(virgin_queue.files)
1
- >>> item = get_queue_messages(virgin_queue)[0]
+ >>> item = get_queue_messages('virgin')[0]
>>> print item.msg.as_string()
Subject: The results of your email commands
...
@@ -151,11 +151,11 @@ The 'stop' command is an alias for 'end'.
... echo baz qux
... """)
- >>> inject_message(mlist, msg, qdir=config.CMDQUEUE_DIR)
+ >>> inject_message(mlist, msg, switchboard='command')
>>> command.run()
>>> len(virgin_queue.files)
1
- >>> item = get_queue_messages(virgin_queue)[0]
+ >>> item = get_queue_messages('virgin')[0]
>>> print item.msg.as_string()
Subject: The results of your email commands
...
diff --git a/mailman/testing/testing.cfg b/mailman/testing/testing.cfg
index 8bb720ab7..9570441dd 100644
--- a/mailman/testing/testing.cfg
+++ b/mailman/testing/testing.cfg
@@ -26,7 +26,7 @@ max_restarts: 1
[qrunner.bounces]
max_restarts: 1
-[qrunner.commands]
+[qrunner.command]
max_restarts: 1
[qrunner.in]
@@ -63,6 +63,9 @@ recipient: archive@mail-archive.dev
[archiver.pipermail]
base_url: http://www.example.com/pipermail/$listname
+[archiver.mhonarc]
+command: /bin/echo
+
[domain.example_dot_com]
email_host: example.com
base_url: http://www.example.com