#!/bin/env python from mailmanclient import Client import os # import sys # import urllib2 import argparse try: import json except ImportError: import simplejson as json def get_client(args): client = Client(args.core_uri, args.core_user, args.core_password) return client def queue_list(args): client = get_client(args) for queue_name in args.queues: if queue_name not in client.queues: continue queue = client.queues[queue_name] print("\n".join(queue.files)) def queue_prune(args): """Purge queue on OS level (ignoring mailman for the most part)""" client = get_client(args) for queue_name in args.queues: if queue_name not in client.queues: continue queue = client.queues[queue_name] queue_dir = queue.rest_data['directory'] print("\n".join(queue.files)) for queue_file in os.listdir(queue_dir): name, ext = os.path.split(queue_file) if name in queue.files: os.remove(os.path.join(queue_dir, queue_file)) if __name__ == '__main__': parser = argparse.ArgumentParser(description="Manage queues") CORE_URI = os.environ.get('MAILMAN_CORE_URI', 'http://mailman-core:8001/3.1') CORE_USER = os.environ.get('MAILMAN_REST_USER', 'restadmin') CORE_PASS = os.environ.get('MAILMAN_REST_PASSWORD', 'restpass') # parser.add_argument('--members', action='store_true', default=False) # parser.add_argument('--owners', action='store_true', default=False) # parser.add_argument('--nonmembers', action='store_true', default=False) # parser.add_argument('--moderators', action='store_true', default=False) parser.add_argument('--core-uri', dest='core_uri', default=CORE_URI) parser.add_argument('--rest-user', dest='core_user', default=CORE_USER) parser.add_argument('--rest-password', dest='core_password', default=CORE_PASS) parser.add_argument('queue', dest='queues', action='append', default=None) subparsers = parser.add_subparsers(help="Queue Operations") list_parser = subparsers.add_parser('list') list_parser.set_defaults(funct=queue_list) prune_parser = subparsers.add_parser('prune') prune_parser.set_defaults(funct=queue_prune) args = parser.parse_args() # client = Client(CORE_URI, CORE_USER, CORE_PASS) client = Client(args.core_uri, args.core_user, args.core_password) for queue_name in args.queues: if queue_name not in client.queues: continue queue = client.queues[queue_name]