summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Warsaw2009-01-06 23:45:34 -0500
committerBarry Warsaw2009-01-06 23:45:34 -0500
commitd3e2ba2707c99c0a444302b1f013131ea41b7eae (patch)
tree3946d242ddda9adab74fb4cf1685319ca43e97ed
parent994d079ea50deb58b20c41e506e29278c3c93257 (diff)
downloadmailman-d3e2ba2707c99c0a444302b1f013131ea41b7eae.tar.gz
mailman-d3e2ba2707c99c0a444302b1f013131ea41b7eae.tar.zst
mailman-d3e2ba2707c99c0a444302b1f013131ea41b7eae.zip
-rw-r--r--mailman/Utils.py4
-rw-r--r--mailman/app/lifecycle.py10
-rw-r--r--mailman/bin/add_members.py2
-rw-r--r--mailman/bin/create_list.py4
-rw-r--r--mailman/bin/genaliases.py9
-rw-r--r--mailman/bin/show_qfiles.py80
-rw-r--r--mailman/mta/postfix.py4
7 files changed, 70 insertions, 43 deletions
diff --git a/mailman/Utils.py b/mailman/Utils.py
index 31848d5c8..26235d47d 100644
--- a/mailman/Utils.py
+++ b/mailman/Utils.py
@@ -318,8 +318,8 @@ def Secure_MakeRandomPassword(length):
def MakeRandomPassword(length=None):
if length is None:
- length = int(config.member_password_length)
- if as_boolean(config.user_friendly_passwords):
+ length = int(config.passwords.member_password_length)
+ if as_boolean(config.passwords.user_friendly_passwords):
password = UserFriendly_MakeRandomPassword(length)
else:
password = Secure_MakeRandomPassword(length)
diff --git a/mailman/app/lifecycle.py b/mailman/app/lifecycle.py
index 7ea50a055..7b7daadf3 100644
--- a/mailman/app/lifecycle.py
+++ b/mailman/app/lifecycle.py
@@ -54,8 +54,7 @@ def create_list(fqdn_listname, owners=None):
# Coordinate with the MTA, as defined in the configuration file.
module_name, class_name = config.mta.incoming.rsplit('.', 1)
__import__(module_name)
- mta = getattr(sys.modules[module_name], class_name)
- mta().create(mlist)
+ getattr(sys.modules[module_name], class_name)().create(mlist)
# Create any owners that don't yet exist, and subscribe all addresses as
# owners of the mailing list.
usermgr = config.db.user_manager
@@ -82,10 +81,9 @@ def remove_list(fqdn_listname, mailing_list=None, archives=True):
# Delete the mailing list from the database.
config.db.list_manager.delete(mailing_list)
# Do the MTA-specific list deletion tasks
-## if config.MTA:
-## modname = 'mailman.MTA.' + config.MTA
-## __import__(modname)
-## sys.modules[modname].remove(mailing_list)
+ module_name, class_name = config.mta.incoming.rsplit('.', 1)
+ __import__(module_name)
+ getattr(sys.modules[module_name], class_name)().create(mlist)
# Remove the list directory.
removeables.append(os.path.join(config.LIST_DATA_DIR, fqdn_listname))
# Remove any stale locks associated with the list.
diff --git a/mailman/bin/add_members.py b/mailman/bin/add_members.py
index 7d30cd228..9c87f4af9 100644
--- a/mailman/bin/add_members.py
+++ b/mailman/bin/add_members.py
@@ -28,7 +28,7 @@ from mailman import i18n
from mailman.app.membership import add_member
from mailman.config import config
from mailman.core import errors
-from mailman.interfaces import AlreadySubscribedError, DeliveryMode
+from mailman.interfaces.member import AlreadySubscribedError, DeliveryMode
from mailman.options import SingleMailingListOptions
_ = i18n._
diff --git a/mailman/bin/create_list.py b/mailman/bin/create_list.py
index 0c6039e45..8058a7d67 100644
--- a/mailman/bin/create_list.py
+++ b/mailman/bin/create_list.py
@@ -23,7 +23,7 @@ from mailman import i18n
from mailman.app.lifecycle import create_list
from mailman.config import config
from mailman.core import errors
-from mailman.interfaces import ListAlreadyExistsError
+from mailman.interfaces.listmanager import ListAlreadyExistsError
from mailman.options import SingleMailingListOptions
@@ -32,7 +32,7 @@ _ = i18n._
class ScriptOptions(SingleMailingListOptions):
- usage=_("""\
+ usage = _("""\
%prog [options]
Create a new mailing list.
diff --git a/mailman/bin/genaliases.py b/mailman/bin/genaliases.py
index 786069417..e8916d030 100644
--- a/mailman/bin/genaliases.py
+++ b/mailman/bin/genaliases.py
@@ -21,7 +21,9 @@ __all__ = [
]
-from mailman.core.plugins import get_plugin
+import sys
+
+from mailman.config import config
from mailman.i18n import _
from mailman.options import Options
@@ -52,8 +54,9 @@ def main():
options.initialize()
# Get the MTA-specific module.
- mta = get_plugin('mailman.mta')
- mta().regenerate()
+ module_path, class_path = config.mta.incoming.rsplit('.', 1)
+ __import__(module_path)
+ getattr(sys.modules[module_path], class_path)().regenerate()
diff --git a/mailman/bin/show_qfiles.py b/mailman/bin/show_qfiles.py
index 3f27ae271..e4b64e0cd 100644
--- a/mailman/bin/show_qfiles.py
+++ b/mailman/bin/show_qfiles.py
@@ -15,49 +15,75 @@
# You should have received a copy of the GNU General Public License along with
# GNU Mailman. If not, see <http://www.gnu.org/licenses/>.
+import os
import sys
-import optparse
+
from cPickle import load
-from mailman.configuration import config
+from mailman.config import config
from mailman.i18n import _
-from mailman.version import MAILMAN_VERSION
+from mailman.options import Options
-def parseargs():
- parser = optparse.OptionParser(version=MAILMAN_VERSION,
- usage=_("""\
+class ScriptOptions(Options):
+ usage = _("""
%%prog [options] qfiles ...
-Show the contents of one or more Mailman queue files."""))
- parser.add_option('-q', '--quiet',
- default=False, action='store_true',
- help=_("Don't print 'helpful' message delimiters."))
- parser.add_option('-C', '--config',
- help=_('Alternative configuration file to use'))
- opts, args = parser.parse_args()
- return parser, opts, args
+Show the contents of one or more Mailman queue files.""")
+
+ def add_options(self):
+ super(ScriptOptions, self).add_options()
+ self.parser.add_option(
+ '-q', '--quiet',
+ default=False, action='store_true',
+ help=_("Don't print 'helpful' message delimiters."))
+ self.parser.add_option(
+ '-s', '--summary',
+ default=False, action='store_true',
+ help=_('Show a summary of queue files.'))
def main():
- parser, opts, args = parseargs()
- config.load(opts.config)
+ options = ScriptOptions()
+ options.initialize()
- for filename in args:
- if not opts.quiet:
+ if options.options.summary:
+ queue_totals = {}
+ files_by_queue = {}
+ for switchboard in config.switchboards.values():
+ total = 0
+ file_mappings = {}
+ for filename in os.listdir(switchboard.queue_directory):
+ base, ext = os.path.splitext(filename)
+ file_mappings[ext] = file_mappings.get(ext, 0) + 1
+ total += 1
+ files_by_queue[switchboard.queue_directory] = file_mappings
+ queue_totals[switchboard.queue_directory] = total
+ # Sort by queue name.
+ for queue_directory in sorted(files_by_queue):
+ total = queue_totals[queue_directory]
+ print queue_directory
+ print _('\tfile count: $total')
+ file_mappings = files_by_queue[queue_directory]
+ for ext in sorted(file_mappings):
+ print '\t{0}: {1}'.format(ext, file_mappings[ext])
+ return
+ # No summary.
+ for filename in options.arguments:
+ if not options.options.quiet:
print '====================>', filename
- fp = open(filename)
- if filename.endswith(".pck"):
- msg = load(fp)
- data = load(fp)
- if data.get('_parsemsg'):
- sys.stdout.write(msg)
+ with open(filename) as fp:
+ if filename.endswith('.pck'):
+ msg = load(fp)
+ data = load(fp)
+ if data.get('_parsemsg'):
+ sys.stdout.write(msg)
+ else:
+ sys.stdout.write(msg.as_string())
else:
- sys.stdout.write(msg.as_string())
- else:
- sys.stdout.write(fp.read())
+ sys.stdout.write(fp.read())
diff --git a/mailman/mta/postfix.py b/mailman/mta/postfix.py
index be7dc9b9b..da265fecf 100644
--- a/mailman/mta/postfix.py
+++ b/mailman/mta/postfix.py
@@ -98,13 +98,13 @@ class LMTP:
# len('-subscribe') + '@'.
longest = len(list_name + domain) + 10
print >> fp, """\
-{0}@{1:{3}}lmtp:{2.mta.lmtp_host}:{2.mta.lmtp_port}""".format(
+{0}@{1:{3}}lmtp:inet:{2.mta.lmtp_host}:{2.mta.lmtp_port}""".format(
list_name, domain, config,
# Add 1 because the bare list name has no dash.
longest + 1)
for destination in SUBDESTINATIONS:
print >> fp, """\
-{0}-{1}@{2:{4}}lmtp:{3.mta.lmtp_host}:{3.mta.lmtp_port}""".format(
+{0}-{1}@{2:{4}}lmtp:inet:{3.mta.lmtp_host}:{3.mta.lmtp_port}""".format(
list_name, destination, domain, config,
longest - len(destination))
print >> fp