#!/bin/env python from mailmanclient import Client import os import sys import argparse try: import json except ImportError: import simplejson as json def get_email_lists(email_lists): members = '' for email_list in email_lists: members += email_list+"\n" return members if __name__ == '__main__': parser = argparse.ArgumentParser(description="Dump Mailing List based on alias.") 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') LIST_NAME= 'apachesvn@lists.med.stanford.edu' # just a tesing default # user invoked variables parser.add_argument('-m','--members', help='Dumps a full members list from an email list <members>=<email_list>') parser.add_argument('-l','--list', action='store_true', default=False, help='Shows the email lists. (i.e.,apachesvn@lists.med.stanford.edu )') parser.add_argument('-f','--file', help='Places input into a file. <file=file_name>') # Add arguments for env variables 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) # Parse out the command line arguments args = parser.parse_args() # Set the mailman client client = Client(args.core_uri, args.core_user, args.core_password) # append the mail lists to an array from client email_lists = [] for mlist in client.lists: email_lists.append(mlist.fqdn_listname) # lists members of a list if args.members: members_hash={} # obtain email list from argument email_list = args.members # get lists if email_list in email_lists: #ml = client.get_list(LIST_NAME) # Get members from email list member_list = client.get_list(email_list) # Get json data from each member for member in member_list.members: print member.user # Get all the member elif email_list.upper() == 'ALL': print "Watch out thsi prints all Memebers." sleep(3) member_list = client.members members_hash={} # Get json data from each member for member in member_list.members: #members_hash['user']=member.user #members_hash['address']= member.address #members_hash['list_id']= member.list_id #members_hash['email']= member.email members_hash['address'] = member.address.rest_data #held_data[held.request_id] = held.rest_data #members_hash['preferences']= member.preferences print json.dumps(members_hash, indent=2) else: sys.exit('Error: Email list"'+email_list+'" does not exist in domain '+args.core_uri+ "\nSee List\n"+get_email_lists(email_lists)) elif args.list: # option just to show email lists print get_email_lists(email_lists)